Monday, December 27, 2010

Key profiles for OAF personalizations

All the times i forget these profiles always google out for them..just putting it here for quick reference


Profile Name:Personalize Self-Service Defn
– Yes enables personalization link on all pages..This should be no in Production environment.for development team also it is better to set it yes at the user level

THis will enable the personalize page on the left side top corner.This allows us to do personalizations
from the page itself


Profile Name:FND: Personalization Region Link Enabled
– Yes displays all regional links
– Minimal displays key regional links
Itis do get the personalize link at the region level

Profile Name:Disable Self-Service Personal
– Turn off all personalizations

Profile Name:FND: Personalization Document Root Path
– Used for importing/exporting personalizations

Profile Name:FND: Diagnostics
– Activates the link called About this Page at
bottom left of page

Profile Name:FND:OA:Enable Defaults
– Allows defaulting through personalizations to
take place

Thursday, December 9, 2010

Steps to Move OA page personalizations at responsibility/Organization level

Hi All,

Coming to OA page personalization always becareful while defining personalization's .
Dont define personalizations at responsibility level\organization level unless and until it is absolutely required.Because deploying personalizations between instances would be tedious work for the ones defined at organization and responsibility level

1.List all the personalization at the responsibility level for the page

2.export the personalization from the source instance

3.move the personalization.jar/zip files to the target instance

4.unzip the files in the target instance

5.rename the folder names with the corresponding responsibility id’s in the target instance
Use this sql to get the responsibility id in the target instace
select responsibility_key,responsibility_id
from fnd_responsibility
where responsibility_key='XX_CUST_REP'

Rename the folder with target instance responsibity id
/oracle/apps/pa/project/webui/customizations/responsibility/60781/MyProjectsPG

60781 folder need to renamed with responsibility id of the target instance like 77876

Note: In case the responsibility key also differs between the instances the page.xml file(personalization file) need to be changed by replacing the responsibility key with corresponding responsibility key

6.Import personalizations

we need to use funtional administrator responsibility/personalization tab/export and import personalization

Friday, December 3, 2010

Intro to Interfaces --Part2

Continuing with my earlier post long way back...
Let see what are inbound interfaces

inbound interfaces:Inbound interfaces where data comes into our systems.so when ever we are moving from Legacy system to oracle applications
we need to move the data residing in that system(master and transactional data) from legacy to new oracle apps system

Inbound are broadly classified in to two types

1.Interfaces
2.Conversion

Conversion:Conversion is a one time activity where we move the data from the legacy system to oracle applications

Interface:Is a integration between oracle applications and any other third party application which will exists even after migrating
to the new oracle apps systems

Lets talk about conversion

In a typical conversion process we will load data provided by the client team into oracle applications
Usually data is provided in the dat format or in excel(*.csv)
THe usual steps involves in a conversions are

1.Load the Dat/csv files into a staging table--This step is done using external tables/sqlloader
2.Perform the basic validations on the data at staging table
3.Derive any data required based on conditional logic/or defaulting some of the coulmns
4.mark the valid records in the staging table
5.pull all the valid records and insert into open interface tables/call API's
6.if data is loaded into interface tables run the standard interface program pragmatically/submitted as a part of the request set
8.once the interface program runs check whether any records are left in the open interface tables with error state
9.update the corresponding staging table with the error status and error message
10.pull all the error records from the staging table and generate a error records report with the corresponding error message

Typical conversion examples are item,customer,supplier etc..


One of the conversion approaches we have taken recently where the data volume is very high is

we divided the program into two step process
1.load data
2.program to validate and load data.

This process was very useful when we have more custom validations before loading data into system
so we developed the custom program to run in two modes.
1.validation mode
2.validation and insert mode

for this process we will have a processed column in the staging table.we load data with N status
once we validate data we mark the records as V and error records CE--custom validation error


in validation mode we just validate the custom data loaded in the staging table and generate the error report based on the
custom validation logic and mark the records as V or CE

In validation and insert mode we pick all the records marked as v and N.Validation logic's are performed on records which are in
N status only.we load load all the records marked as V and then load open interface/call api

By following this process we avoid multiple iterations for the conversion process.

Conversion process itself is multiple iterative process where we clean data by performing multiple mock conversions.
add validations:
The best approach is have the concurrent program to switch on and off the validation when ever required.
Normally we will have around 2-3 mock conversions before we load data in the production system
if we have option to switch off validation..we can switch of them if they are very time consuming because by the time we go to production
we would have cleaned our data.

Friday, October 1, 2010

Basics of Business events

HI All,
some basics syntax and statements to work with business events..

Business Events:
Business event is an activity in the system which is of some significance .Like creating a purchase order, booking a sales order or ship confirming one.

Subscription:

A subscription is action that needs to be performed on occurrence of the business event



What are the standard parameters for the procedure to be subscribed to business events?The custom plsql code should be a packaged function.
It will have two default parameters
1. P_susbcription_guid raw data type
2. P_event the event data

FUNCTION xx_test
( p_subscription_guid IN RAW , p_event IN OUT NOCOPY wf_event_t) RETURN VARCHAR2


How to get the Event Data if the data type is Rule or message? l_event_name := p_event.getEventName();
l_event_key := p_event.getEventKey();

How to get the parameters defined along with the business event?
l_parameter_list WF_PARAMETER_LIST_T ;

l_parameter_list:=p_event.getParameterList();

IF l_parameter_list IS NOT NULL THEN

FOR i IN l_parameter_list.FIRST .. l_parameter_list.LAST
LOOP

INSERT INTO XX_PARAM_NAME_VALUES
VALUES(l_parameter_list(i).getName() , l_parameter_list(i).getValue());

END LOOP;

ELSE
Dbms_output.put_line(‘No parameters’);
END IF;

How to get a value of a parameter?
p_event.getparameter(parametername)
p_event is the value passed to the procedure from the subscription.

How to raise a custom Business Event?
wf_event.raise( p_event_name => '',
p_event_key => '',
p_event_data => l_eventdata,
p_parameters => l_parameter_list);


Event data need to be populated only when the subscription requires message data
l_message := wf_event.test('');

This above function will provide whether any of the subscription requires business event data or not
if l_message = 'KEY' then
-- Raise the Event
wf_event.raise( p_event_name => ,
p_event_key => ,
p_parameters => l_parameter_list);
else
if l_message = 'MESSAGE' then
if l_xmldocument is not null then
dbms_lob.createtemporary(l_eventdata, FALSE,
DBMS_LOB.CALL);
dbms_lob.write(l_eventdata, length(l_xmldocument), 1 ,
l_xmldocument);
-- Raise the Event with the message
wf_event.raise( p_event_name => '',
p_event_key => '',
p_event_data => l_eventdata,
p_parameters => l_parameter_list);
else
-- Raise the Event without the message
wf_event.raise( p_event_name => '',
p_event_key => '',
p_parameters => l_parameter_list);
end if;


end if;


How to add parameters to the business event while raising a business event?procedure AddParameterToList
(p_name in varchar2,
p_value in varchar2,
p_parameterlist in out wf_parameter_list_t);
wf_event.addparametertolist(p_name=>’userid’,p_valehue=>’100’,p_parameterlist=>l_parameter_list);
use the above statement before wf_Event.raise

Wednesday, September 29, 2010

Concurrent Programs Business Events

In R12 for concurrent programs submission and completion has business events associated with them
in the concurrent program definition form there is a business events tab which displays the list of events associated

Here you specify the points at which business events are enabled. The possible points are:
Request Submitted
Request On Hold
Request Resumed
Request Running
Program Completed
Post Processing Started
Post Processing Ended
Request Completed

But make sure you set the profile "Concurrent: Business Intelligence Integration Enable". You will need to Set "Yes" to enable Business Events from Concurrent Processing System

After this you create a susbcription for this and can launch the required custom action either a work flow launch or plsql code exectuion

Tuesday, September 28, 2010

Special Characters in XML

Recently we are faced a issue with some spanish,french(special charecters) in the data .
we are developing the reports using xmlpublisher and the xml data is generated using plsql.
Because of the special characters the concurrent program is ending in warning state with no output generated. even the xml output is errroing out.

To overcome this scenario we need to add encoding tag to the xml
By default it will be UTF-8 which will support mostly english.for normal spanish characters and others all we need to have is different endcoding like Windows-1252, ISO-8859-1 specified.
The encoding tag should be mentioned as the first tag



once we put the encoding attribute, the xml file should open normally in explorer.

For Chinese and Arabic characters if this doesn't work try out "UTF-16"

Sunday, May 16, 2010

Oracle Procure to Pay Technical Flow

Hi All,
it is taking long time for to write on my blog due to some personal constraints and work load.. :)

going forward i will try to publish atleast 2 to 3 post per month