Wednesday, February 17, 2016

Oracle Applications Architecture

Ever since the inception of mankind, continuous improvement has been a key factor. Innovative thinking and the attitude of experiment has guided us to what we are today. It’s the willingness to find something new, and doing things in a better way that has led Homo sapiens thus far. The path of technical advancement had been similar.
Information Technology had been the answer to a lot of complicated and repetitive issues lately. With the advent of software engineering, we have been trying to eliminate the human intervention from the complex processes and automate them, and so far we have been very successful. If we reopen the history of Information technology, we will find a lot of pioneering products that has changed the way things worked before its introduction. ERP is one such product.
ERP stands for Enterprise Resource Planning. This is a software application that enables the flow if information between different streams of business, like Finance, Manufacturing, Sales, Human resources etc. An enterprise uses ERP systems to support its daily business transactional needs and reporting capabilities based on the transactions made.

Architecture of E-Biz
This section describes the basics of E-Biz Architecture. Although there are a lot attached to the Oracle apps architecture, we will discuss the concepts that will help us in understanding the functionality better. Oracle E-Biz runs with three tier architecture.

Desktop Tier
This is the client facing or user facing interface. It runs HTML based Java applets to pop up forms and web based applications, for the user access. This tier accepts our log in authentication credentials and keeps them for further usage. So once logged in, we can use oracle applications as well as other tools embedded within. The Oracle forms are brought in with a Forms client applet which in turn is a collection of Java Archive files (JAR files). When we log in for the first time, the Forms client applet and frequently used JAR files are downloaded to our machine and cached. Later less frequently used JARs get downloaded based on necessity.

Application Tier
This tier beholds all the servers that are responsible for the services we avail on the desktop tier. For an example, if something is queried from the database, then apart from the data, the appearance, the business logic etc are needed; these extra things other than the data are called Services. This is the tier where the servers will reside, and provide us the services. A basic application tier will comprise of:

Web Server: Manages the web services, like HTTP requests, Java Controller, Servlet engines etc. In short it provides end to end handle on application appearance (except form based applications) and request-response management.

Form Server: Manages the form based application requests and the Form listener Servlets.

Concurrent Server: This is an innovative piece of architecture, where the application allows us to run programs that can process in the background without putting any pressure on the other transactional processes we are working on. For an example, we can just put in a request for a report and keep working on the application, without any interventions; as the report is being run by the concurrent manager, which is independent of the application server.

Admin Server: This one manages the applications data and patches. It records the patches installed in the system, along with the administration of application data.

Database Tier
The database tier contains the Oracle database server, which stores all the data maintained by Oracle Applications. In short, it is the database of the applications.

Technology Layer
There are a set of technology that are used across modules. These provide common features to all Oracle application products. These technologies are:
Oracle Applications DBA
Oracle Applications Object Library
Oracle Applications Utilities
Oracle Common Modules
Oracle Workflow
Oracle Alert
Oracle Applications Framework
Oracle XML Publisher
These are all standalone modules. We will learn about these in details, as and when we emanate through the chapters.

File Systems
There is a given pattern in which the files are stored in the servers. The pattern is nothing but a defined folder/directory structure, which is commonly known as the File System. The file systems have evolved along with the Oracle E-Biz. There had been significant changes to the File systems with the advent of R12 and we will discuss the file system based on R12.

Database server
Talking about the Database server first, it contains stacks like Application stack and Technical stack. See Figure 1.2 – Database Server. And the stacks further contain different directories.

DATA_TOP: This directory resides in ./apps_st/data. Here apps_st represents the application stack directory in the database server. It contains the database level data like, the system table space, data table space, Index Table space, database files, redo-log files etc.
ORACLE_HOME: This directory resides in ./apps_st/10.2.0. It is the Oracle Home for the 10g database being used in the application backend.

Application server
The application server holds the application elated data, and in the vein of database Server, it holds the application stack and the Technical stack. See Figure 1.3 – Application Server. The stacks further hold the sub directories.

APPL_TOP: This is considered the Mother directory, as it stores the product directories within. Each product holds its own directory and this one lists them all.
If we go further down to the granular level in to APPL_TOP, we will find the directory containing the following subdirectories:
The product files and directories
The core technology files and directories
application environment files <*.env / *.cmd>
consolidated environment files <*.env / *.cmd>
The Product directories store information related to the Product. And are named based on the Product short name. For an example, the Prod directory for General Ledger will be called GL_TOP, as GL is the short name for General Ledger. Each product has a two-three lettered short code. The Product Top directory stores directories like admin, bin, forms, html, Java etc.

Under each product directory, there will be a directory for the version, like 12.0.0, 12.0.1, etc. For each version directory, there will be directories for each and every language the application is installed in. Like US, FR, GB etc. And under each language directory there will the following folders:
· Bin: Stores the Control files and data Load files.
· Data: Stores the data files used in the product.
· Forms: Stores the fmb files.
· Java: stores the Java class files and XML files.
· Patch: Holds the different downloaded patches.
· Publisher: Stores the XML Publisher template files
· Reports: Stores the Oracle Report Files.
· SQL: Stores all the database objects related to the Product.
COMN_TOP: This directory holds the technology layer products. The ones that are used across products (e.g. FND, WF)
ORACLE_HOME: Holds application technology stack tools components in application server.
JAVA_HOME: Holds application technology stacks Java components in application server.

Using Oracle E-Biz

Before getting into Oracle applications, we must know how to use Oracle applications. So let’s discuss a little bit about that. We will start with the different GUIs (Graphical User Interfaces) available with the application.

GUI is commonly known as the Graphical User Interface. These are the screens that open up on the user’s window, so that a user can enter, query and update data with ease. There are two types of GUIs available in Oracle E-Biz R12.
Form Based
HTML Based


Form Based GUI

The Forms based applications are the most widely used GUI in E-Biz. These are developed by the Forms Builder in Developer 2000 (D2K) or Developer suite; and are launched to the client machine by Java using the JAR files.

Forms GUI, the forms based GUI looks similar to the image given here. This is the first screen that opens up, when we open any responsibility. This is called the navigator. There are two distinct sections.
  • Menu Functions (On the left side of the figure 1.4)
  • Top Ten List

Menu Functions:

The Menu function section opens up the different menus attached to the responsibility. When we double click on the menu, it either opens another sub menu or simply calls a function, which in turn opens up a form / a web based GUI. There are two ways to open a menu, either double click on it, or single click it and then click on the Open Button on the fourth co-ordinate. The ‘+’ sign tells us, that the menu has one or more menus / functions attached to it. If we click on the ‘+‘sign, it expands with the sub menus/ functions, and the sign is then changed to ‘-’; clicking on which causes the menu to collapse. The text on the top, tells the Responsibility name and the description of the highlighted menu.

Let’s have a look at the extreme left of the figure 1.4. We will find small icons with ‘+’ and ‘-’ Signs. They help us navigate the screen better.
  • The ‘+’ sign expands the highlighted menu.
  • The ‘-’ sign collapses the menu.
  • The third sign ‘+ ->’ expands the entire menu, including all submenus in it
  • The ‘++’ sign expands all the menus in the screen to the granular level, expanding all menus and submenus
  • The ‘--’ sign collapses all the menus and submenus

Top Ten List:

The Top Ten lists are the most frequently used screens, put on the other side for ease of access, because we do not have to go on finding the function from the menus. However system does not determine what to put on the list. The list will be determined by the user, and system remembers the list and brings it up once same user logs in again. The two arrow buttons on the middle of the navigator are the ones that are used to move a function to the top ten lists and vice versa. As the name suggests, we can have ten functions listed out there.

Another amazing thing about top ten list is the shortcut, once the function is added to the list, it gets added with a number as a Prefix. Next time we wish to open the function, we will just key that number from the number pad of the keyboard, and that opens up the related form.

Let’s have a look at the tools available to the Form Based GUIs. See Figure 1.5 – The Toolbar.

Creates a New Record
Opens the find record window
Shows the navigator, putting all other active windows in the back
Saves the record
Next Step
Takes us to the next step in the process
Switch Responsibility
Opens up a window listing all available responsibilities for the user that a user can switch to.
Prints the current page
Closes all windows in the navigator
Cuts the selection
Copies the selection
Pastes the cut or copied portion
Clears the record
Deletes the Record, with a prompt
Edit Field
Opens a Editor to edit the text in the selected field
Zooms the view based on users preferences
Opens the translation window; translates the text,
Shows the added attachments
Opens up the Folder tools, it helps users to add / remove columns from some basic windows.
Opens the window help button; however we should have the Profile options set for this.

The Menu in the application is almost the same as we have in Toolbar, and are pretty self explanatory. So we are not going to discuss more about that.

Querying in the Forms GUI is very simple. The function key ‘F11’ is used for the same. Pressing F11 turns the entire form grey. Then we can enter the string that we are looking for in the grey fields and press CTRL + F 11. The system then tries finding out a match for the query we have entered and puts it on to the form. For example, if the query returns 5 records, the form will initially show up the first record it had fetched, and then we can navigate through the other four by using the up and down arrow keys.

If we know just a portion of the string and not the whole String we want to query for, then we can do a pattern matching using a Wild Card Character. For an Example, we want to look for an employee name; and all we know that the last name starts with a ‘XXAA’ then we can query like this: ‘XXAA%’

With this query in place, the system will look for all records that start with ‘XXAA’ and will return all records that match the requirement. That is called Pattern Matching mechanism. The ‘%’ is called a wild card character; there is another one, the underscore ‘_’.

When we enter the ‘%’, it searches for the string that can have any number of characters in place of the ‘%’ sign. Similarly the ‘_’ replaces just one character. Let’s take an example. If there are five records in my database like:

And we will enter a query for ‘XXAA%’; the system will return all the rows, except the last one; as the % sign will replace all other characters, and every row starts with a ‘XXAA’, except the last one.

If we enter a query for ‘XXAA_’ then the system will return me just one row, as it will look strings that has just one character after XXAA, and the result is ‘XXAAA’; all other strings will not be pulled because either the string does not match, or they have more than one characters after XXAA.

There is another way to query the database. We can just use the Find window. Almost all forms have a Find window associated with it. We can open the window just by clicking the Find button from the toolbar. The Find button opens up a window with the prompt of data fields that are unique to the records. We can key in the strings with the wild card characters if we wish to, and then press find to fetch the records.

Let’s discuss the keyboard shortcuts that are available in forms.                    
Open shortcuts
Opens a window with all available shortcuts.
List of Values
Opens a window with all available values.
If pressed on navigator, opens up all possible Functions to choose from.
Clear Block
Clears the Entire Block.
Clear Field
Clears the field.
Clear Form
Clears the entire form.
Query mode
Enters in the query mode.
CTRL + F11
Execute Query
Queries based on the data.
Counts the number of records to be returned by the query.
Updates the Record.
Prints the page.
Opens help window.
Next Field
Takes us to the next field.
Next row
Takes us to the next record.
Previous Row
Takes us to the Previous row.
Shift + CTRL + E
Show Error
Shows the error occurred in the form.
Shift + F5
Duplicate Field
Copies the field with the value available from the previous record.
Shift + F6
Duplicate Record
Copies the entire record, as it is in the Previous record.
Shift + page down
Next Block
Moves the cursor to next Block

We have discussed the most widely used keyboard shortcuts here. However if we want to learn more shortcuts then we need to use one, (CTRL + K) on the navigator.


HTML based GUIs, as the name suggests, are pages popped up on client window in HTML. See Figure 1.6 – HTML Based GUI. The pages are usually OAF pages / Java pages that are translated onto HTML at the desktop tier. The query standards and the basics remain the same; however there will be no application specific menu/ toolbar in it. The HTML pages are executed on a web browser, like the Forms GUI.

The HTML based pages in R12 are made mainly for the end user interactions, as the end user might not be able to browse through the Forms. Hence the web based GUI are very self explanatory. The only other difference that we might find from the Forms GUI is there will be buttons and small icons that represent different actions. The buttons, and the icons, as shown here, have text labels that help the users to understand the underlying actions. Self Service Human resource is a complete web based GUI module that helps the end users to enter and maintain, data for their day to day activities.

Using Self Service

Self service Human resource or SSHR is a set of web based GUI, specially created for the end users. Users like employees, applicants, ex-applicants need not have to log in to forms and browse for data, they can simply log in to the SSHR pages and query and update data from there. There are two major reasons to do so, firstly, the end user need not know the flow in which Oracle works or the basics of Forms GUI; secondly the user need not have to be exposed to the enormous data we store in the applications. All it needs is to see data related to it. With these things in mind, Oracle gives the users a wonderful Web Based GUI Interface called Self Service Human Resource.

Although we can do wonders using SSHR, and it is a complete module by itself, we are not going to discuss the techno-functional aspects of SSHR; because of the vastness of the subject matter. However what we certainly plan to do is to discuss, how to use SSHR with respect to the different modules and application utilities we have learnt so far.

As we already discussed, it is a module by itself and there is a different responsibility to be attached to the user to be able to use it. Actually two:
  • Employee Self Service
  • Manager Self Service

The first one is used for the Employees, where they can enter their personal details, manage their competencies, self appraisals etc. and the second one is for managers, where they can manage their subordinates, Approve applications, Conduct appraisals etc.

If we look at the key functionality, we can divide it in three distinct types:
  • People Management
  • Talent Management
  • Compensation and Benefits Management

People Management

These are functionalities that enable the user to maintain their personal, professional and employment details.

Maintaining personal details will include functionality like:
  • · Store the Personal details
  • · Managing Addresses and phone numbers
  • · Managing Contacts, dependents and beneficiaries
  • · Managing Emergency Contacts
  • · Managing Documents of Records to store the Electronic documents

For Professional details:
  • · Store details on Educational Qualifications and Resume
  • · Manage competencies
  • · Manage work preferences

And lastly for employment details, the functionalities are:
  • · Store data in EIT and SITs
  • · Manage the assignments of subordinates.
  • · Manage Locations and supervisors of directs.
  • · Manage the pay rates for Contingent workers and other employees.
  • · Manage the work schedule and other employment information of the subordinates
  • · Terminate Employees and End the placements for contingent worker

Talent Management

Talent management set of functionalities are more related to the appraisal process, employee reviews and all. Some of the major functionalities are:
  • · Users can do self appraisal and submit it to the Supervisors
  • · Managers can complete employee appraisals, and submit reviews
  • · Users can create and manage events and bookings like presentations, trainings etc.
  • · Managers can enrol directs in to specific bookings.
  • · Managers can do a suitability matching to find out if there are any suitable profiles.
  • · Managers can also do succession planning for the positions that are going to be vacant in future, and identify the possible successors for the positions.

Compensation and Benefits Management

These set of functionality enable the users to do the following:
  • · Users can opt for Online or paper pay slips.
  • · Users can view their online pay slips.
  • · Users can set up their preferred payment methods, along with the bank account details if necessary.
  • · Users can see their absences, apply for absences.
  • · Managers can approve/ reject absences.
  • · Users can manage their Benefits online.

These are most widely used functionalities that a user or a Manager can do with SSHR. However as we had discussed earlier, the possibilities are huge. It is advised to log into SSHR and start exploring the usages, to learn more about the module. Using SSHR should not be a problem, as it is a user friendly GUI for end users.                 

Oracle Core HR
Human resource management system, as the name suggests, is a system that accounts for the human resource / the human capital / asset. This is very nice to count Employees to be an asset to the enterprise. However like all other assets of the Firm, human resource also needs renewal and maintenance. This module in Oracle E-Biz helps us manage our Human capital and lets us embed the HR related data with other modules.
HRMS as a module is needed in almost all other modules in the enterprise. For an example, if we are entering any data related to procurement, we might want to record the person details who wanted it. Similarly for a Project request, we might want to record who the Project manager for the project is. For an Order to be approved, we might need the manager's name of the person who punched that particular order. So HRMS is everywhere. Progressively when we keep reading about the various functionalities, we will be able to relate the concepts to the real world.

Date Tracking

Date tracking is a design / concept, which is used by Oracle E-Biz, in order to support the storage of historical data, along with the current ones. It is a mechanism to store data based on dates. Let’s try this with an example. There was Mr. Joe, who used to work as a Manager. He had been with the company since last 8 years. In this period of 8 years, he had been working in a set of different positions. Initially he joined as an Analyst, then he got promoted to senior analyst, then he became, the manager of a department.
If we were to know the position he was in, as of a date in 2008; how do we do that? Imagine, we are making a database table to store the employee related data, or rather let’s take the well known Employee table (that we all played with, while learning SQL), all it stores is the current position. Do we have a way to know the employee’s previous position? The answer is No.

So here is an innovative way, if we introduce, two more columns to the employee table, with names like “START_DATE” and “END_DATE”, and store the dates in there, it might solve my problem.
The table will look like this:
Sr. Analyst
Till Date

Now, if we ask the same question again, it tells me, oh yes, he was a Sr. Analyst in 2008. This is a nice table, which is capable of storing the historical data as well, however our data is repetitive. It’s not greatly normalized. But well, that’s the price we will have to pay, in order to get the advantage of storing historical data.

Hick ups:
Yes our data is not normalized.
We will have to use a Composite Primary key, so that means, anytime we are querying the table for current data, we will need a self join to say, "SYSDATE between START_DATE and END_DATE"
There are a lot of tables in Oracle E-biz that need to store Historical data. All those tables are date tracked. They hold two extra columns to store the start and end date of the record. And the columns are named EFFECTIVE_START_DATE and EFFECTIVE_END_DATE respectively. These columns do not accept null value. All Date Tracked table names end with “_F”.

Concept of EOT

But now, how do we manage the Till Date thing? We need to store a date there, it does not accept null. For that Oracle added another model, concept of EOT (End of Time). As per this concept, 31st December 4712 is the end of time. So at any place, if we were to show the record is the latest one, we would use, the “31-DEC-4712” in the EFFECTIVE_END_DATE column.
The date track also makes us capable of storing Future data. Let's say, we will promote Mr. Joe to Director as of 01-JAN-2014. So we will add another record in the table with Start Date as 1-JAN-2014 and end date as 31-DEC-4712. And will update the manager record's END_DATE column with 31-DEC-2013, right?
So having the EOT in the EFFECTIVE_END_DATE column does not always fetch us the currently active record. We should always use the condition (SYSDATE between EFFECTIVE_START_DATE and EFFECTIVE_END_DATE).

Date Track Modes

Let’s talk about the application of date track concept? We will start with the modes. The modes represent the different ways a particular record can be updated in a date tracked table. For an example, we want to remove a record on a Date tracked table. We have two options:
Purge : This removes the entire record from the database
End Date: This updates the EFFECTIVE_END_DATE on the currently active row to today's date.
While inserting a new record, we will not be prompted for any modes. The EFFECTIVE_START_DATE is the today's date and EFFECTIVE_END_DATE is the EOT.
While updating a record; for an example, we want to make Mr. Joe a Sr. Manager. It prompts for these options:
Update: This will add another row to the table, with an EFFECTIVE_START_DATE of today, and EFFECTIVE_END_DATE as EOT; and it will update the currently active record's EFFECTIVE_END_DATE to yesterday's date. So Mr. Joe's manager row will get updated with the new EFFECTIVE_END_DATE as Yesterday's date; and a new record will get created with the EFFECTIVE_START_DATE as Today, and EFFECTIVE_END_DATE as EOT. Clear? Alright.
Correction: This is simple. It will simply go and update the column. It will not create a record. Our previous column value will be lost. So in this case, Mr. Joe's record of manager will be updated. The position field will get updated to Sr. Manager, and no one will ever know, that Mr. Joe was a manager at one point of time.
If UPDATE was selected, the system checks, whether the record being updated has already had future updates entered or not. If it has been updated in the future, we will further be prompted for the type of update. Those options are
UPDATE_CHANGE_INSERT (Insert) - The changes that the user makes remain in effect until the effective end date of the current record. At that point the future scheduled changes take effect.
UPDATE_OVERRIDE (Replace) - The user's changes take effect from now until the end date of the last record in the future. All future dated changes are deleted.
So for an example, we promoted Mr. Joe to Director as of 01-JAN-2014. Now, the currently active row has an EFFECTIVE_END_DATE of 31-DEC-2013. We get a request from my manager that Mr. Joe should get promoted to Asst Director First and then should get promoted to the director.
Here is a diagrammatic representation that will explain it better. See Figure 2.1 – Date Track Modes.
Figure 1 Date Track Modes
(Figure 2.1 – Date Track Modes)

As we are updating a record, that has changes in future, It will ask if we want to do an Insert / Replace.
If we choose Insert, it will go ahead and insert the record from today to 31-DEC-2013. So a new record gets created with EFFECTIVE_START_DATE of today and EFFECTIVE_END_DATE of 31-DEC-2013, and the currently active record gets updated with an EFFECTIVE_END_DATE of yesterday.
If we choose Replace, it will discard the future change. So a new record gets created with EFFECTIVE_START_DATE of today and EFFECTIVE_END_DATE of 31-DEC-4712, and the currently active record gets updated with an EFFECTIVE_END_DATE of yesterday. The Record with Director as the position gets purged.

End Dating

Usually, we do not delete any data from system in HRMS. Although we should purge the data that was never relevant to the enterprise or any given employee or assignment, however we should just populate the end date in case of data, which was used earlier and not being used anymore.
For an example, there is a date tracked table that stores the car hire details. In that table, we are storing the data related to the options available to choose a car for hire. We are giving 4 options to the employees to hire a car; for say, a Chevy, a Dodge, a Hyundai and a Lamborghini. However from year 2010, due to low budget, we are not going to be giving Lamborghini as an option anymore. In this case, we are going to populate an end date (EFFECTIVE_END_DATE) on the Lamborghini record with a date of 31-DEC-2009. So that it will tell me, the car was available in past, but is not available now (01-JAN-2010). This feature is known as End Dating.

DATED Tables

Now, we know what a date tracked table is. Let’s talk about DATED Tables. These are more or less similar to the Date Tracked enabled tables; however these tables do not use the composite primary key like the former. These tables use only one Primary key, but with two date fields - DATE_FROM and DATE_TO.
So what’s the use of these tables? Although they serve the same purpose of storing historical and future records, unlike the Date Tracked tables, the consistency of data is not maintained. So we can consider these to be partially date tracked. To make it simpler, let’s try Mr. Joe's example again. As we would need the position column to be maintained without any hassle of dates, we created two new fields and then tried identifying individual rows with the combination of EMP_ID and the date columns. So that enabled me with features like, Update, Correction, Insert and Replace.
However imagine a case where, we do not need that much data consistency, so that whenever we do some updates to a column, it adds a new row to the table. Like address. So if we were to store Mr. Joe's address, we will keep it in a table, that can just tell me, since when, till when did he live in a given address, we do not want any complexity of Insert and replace. All we want to do is to be capable of updating the address (that’s a new record), and correct the address (Updating the same record). So in this case every time we update an address, it creates a new ADDRESS_ID.
These are like a level lower than Date Track enabled tables. These tables do not have any indicator in their names, unlike the date track enabled tables.
We will discuss more about these tables later, when we discuss about the technical aspect of Core-HR.

Keeping Person Records

Talking about the person records, the indicative details of all persons are stored in a table named “PER_ALL_PEOPLE_F”. This is considered the base table to store the basic information of any given person, associated with the enterprise, be it an employee or spouse / child of an employee. However there are a lot of other tables that store additional information related to the persons.
You must have guessed that, this is a date track enabled table, as it ends with _F. Hence the table has a composite primary key, PERSON_ID along with EFFECTIVE_START_DATE and EFFECTIVE_END_DATE. The table also contains foreign keys to a lot of related tables. Along with that, fields like name, gender, date of birth, and all basic details are present in this table. As per E-Biz design, this table is considered to be the pivot for all employee and employee's contact records.

Question: What is a contact?
Anybody with any specific relationship with a person is its contact. If Jill is married to Joe, Jill is Joe’s contact. The relationship can be of any type, spouse, children, domestic partner, grand children, ex-spouse etc.
The other related tables to store person related details are:
PER_ADDRESSES: stores the address of a person. It’s a DATED table.
PER_PHONES: stores the Phone numbers of a person.
PER_CONTACT_RELATIONSHIPS: stores the contacts of a person.
PER_DISABILITIES_F: stores the disability information of a person.
PER_PERSON_TYPE_USAGES_F: stores the person type of a person (example: Employee, Ex-employee, Beneficiary etc.)
PER_QUALIFICATIONS: stores the qualification of a person.

These are some of the basic and frequently used tables, to store the Person level records, however there are a lot of tables, and views that can be used to store any specific information about a person. We will learn about those, as and when we come across them.
Again, there are a set of related tables/ views, that store similar information, but in a different fashion. Let’s jump on to examples.
PER_ALL_PEOPLE_F: Stores the Person data with Date Track
PER_PEOPLE_F: a view over PER_ALL_PEOPLE_F with additional security on records. Like, which user can see what all records?
PER_PEOPLE_X: shows up only the currently active record as of SYSDATE.
PER_PEOPLE_V: a view used by E-Biz forms to show the data with additional security using security profiles.
PER_ALL_PEOPLE_D: a view that shows the date track history.
Now we know, even though the data stored is same, various tables/ views are designed to store the data in different fashions. The reason may be data abstraction or security or in few cases just history.

Keeping Employment Records

The Employment records are very important to the enterprise, as these are going to be the details about our employees and ex-employees. The way the data is stored in the application is much normalized. When we talk about the employment, what are the details that we need to take care of?
His Assignment
His Service with the Firm
His Salary
Let’s discus these details one by one.

Assignment: This is the unit of an employment period. It starts with a Hire, and ends with a termination / New Assignment. For an example, Mr. Joe works for three years in the firm, and then gets terminated and then gets rehired in to the firm after 1 year, and continues for another 5 years. In this case, Mr. Joe had two assignments with the firm. So every time Mr. Joe got hired, he had a new assignment. These assignments related details are stored in PER_ALL_ASSIGNMENTS_F. This table stores all the data related to the employment, like, the Job, his Location, the Organization he is working for, his supervisor etc. It’s a date track enabled table and ASSIGNMENT_ID is the primary key.
Oracle E-Biz also creates assignments for the ones who are retired, sometimes for the contacts as well. Those are called Benefit assignments; we will learn more about them later. E-Biz also has something called Applicant assignment. It’s the assignment details of an applicant, who might become an employee in future. We can even have more than one assignment for an employee in a given period. It’s like; the employee is working for two different roles / Jobs. An employee must have at least one and only one primary assignment. All others are considered Secondary.
Talking about secondary assignments; these get created when an employee is assigned more than one roles in an enterprise, provided the roles are governed by two different Organizations / GRE or they use different Jobs and positions. The secondary assignment helps the system to track time entered / salary / payroll etc.

Service: Every Hire created in the firm, will result is a period of Service record. The table that is used for that is PER_PERIODS_OF_SERVICE. Its primary key is PERIOD_OF_SERVICE_ID. This table stores the Hire date, term date and the Term reasons, along with other details related to service. If a Person has multiple assignments but within a single service (without being rehired), he will have multiple ASSIGNMENT_ID, however just one PERIOD_OF_SERVICE_ID. A hire drives the period of service, but a new employment instance / a change in role drives the assignment, along with the termination.

Salary: Now let's talk about the salary. This is the amount that a Person gets paid. Although Oracle E-biz considers Annual Salary as the calculation standard; the defined salary gets calculated based on the frequency of pay and the amount per pay period. The pay frequencies are specific to pay basis and in turn depends on payrolls. These are some very popular pay frequencies:
Monthly: Once a Month
Semi Monthly: Twice a Month
Bi-Weekly: Once in Two weeks
Weekly: Once in a week
To determine the Annual salary of any employee, Oracle uses something called as Annualization Factor. It’s a number, which is multiplied to the salary to get the Annual Salary; so for Monthly, the Annualization factor will be 12 and for Biweekly, it will be 26.
How does the Salary get calculated?
It takes the PROPOSED_SALARY_N column from PER_PAY_PROPOSALS where APPROVED_FLAG = Y with Employee's ASSIGNMENT_ID.
It gets the PAY_BASIS_ID from the PER_ALL_ASSIGNMENTS_F for the Employee using its ASSIGNMENT_ID.
It then multiplies the amount with the Annualization factor stored in PER_PAY_BASES.PAY_ANNUALIZATION_FACTOR based on the Employee's PAY_BASIS_ID.
Then the Multiplication resultant is the Annual Salary.


Person Types

Person Type is a very powerful functionality through which we can identify and group the persons we have in our system. First of all, what are the different types of persons we store in our system? Many actually; we store the Employees, applicants, contingent workers, Ex-Employees, Contacts and beneficiaries of the Employees etc. Now, we should have some way to identify these different groups. Although we can identify an Ex-employee as someone who used to work with the firm, and does not work anymore, it becomes a tedious task to do the same number of checks every time, isn’t it? So what’s better? A Single attribute that can tell us, on this person is an Ex-Employee. How nice would that be, that when a person is currently working the attribute should say “Employee”, and soon after the termination happens, the attribute should automatically change to “Ex-Employee”. Wouldn’t that be awesome? This functionality is there. The attributes are nothing but “Person Types”. Let’s see how to use it.

Oracle application comes with a seeded set of Person types that can be used to identify the population. However we can further add new person types as and when we require them. Like we can have Fixed-Term employee as a person type, which is different than Employee. We can have Retirees different than Ex-Employees etc. the one that are seeded are called the system person types; and the one that the user creates is called the user person type. There are eight system person types in R12. And we can create as many user person types as we want based on the requirement. Let’s see how to.

Responsibility: Super HRMS Manager
Navigation: Other Definition -> Person Types
User Name
The name of the Person Type; choose a meaningful name.
System Name
The seeded Person type, of which we are creating a sub class; choose a most appropriate type from here.
To say if the Person type is active as of today.
Each System Person Type will have one and only one default User Person Type. So when the system finds a person to be falling in the System Person type criteria, it will change it to the Default one.

Did the Default flag make confusion? Ok let’s try this. We have three types of Employees in our system, and we want to make different person types for each of them.
So what we should do is, go to the Person Types Screen and add three records with the System name as “Employee”. One for each type of user name “Night Shift Staff”, “Mid-Shift Staff” and “General Shift Staff”. Now, we can make any one of these three as Default; for example let’s set “General Shift Staff” as default. Now whenever there is a hire, the system will identify, oh, it’s an Employee, then what is the Default Person Type? Oh, it’s “General Shift Staff”. So it will make the person type of new hire as “General Shift Staff”. But if later he changes his shifts, we can just go and add a new person type usage in his record and make him a “Night Shift Staff” from “General Shift Staff” manually. Simple, isn’t it?
But how do we change it manually? Let’s see.

Responsibility: Super HRMS Manager
Navigation: Fast Path -> Person Type Usages
·         · Query for the employee
·         · Add a new Person Type usage / End date the old one.

No comments:

Post a Comment

Best Blogger TipsGet Flower Effect