Sei sulla pagina 1di 23

Connector for Oracle eBusiness Suite

The Oracle eBusiness Suite Connector is built on the Web Services Connector.
Please refer to the TechNet documentation for the Web Services Connector for
additional information.

Summary
Features
Connected data source
versions
Scenarios
Operations

Schema

Supported variants
Oracle E-Business Suite 12.1.3

Object Lifecycle Management


Password Management
Full import(with custom code)
Delta import (with custom code)
Export
Password Management
Person/Employee
User

Permissions in connected data source


To create or perform any of the supported tasks in Web Service connector for all the supported data
sources, you must have following permissions.

Apps Schema Connect Role' (UMX|APPS_SCHEMA_CONNECT)

Ports and protocols


This depends upon the Oracle E-Business Suite installation and configuration.

Connector update history


Build
5.0.458.0

Release
2012 June

Revision list
First release of the Web Services Connector.

Requirements, before you begin, and installation


Installation of Default Projects
The default project installer file is available at the Microsoft Download Center. Download the installer file
and run to install.
Double click the downloaded project file to begin installation.
a. The following screen appears, click Yes.

b. Next license agreement screen appears; click Yes to accept the terms and conditions.

c. The next screen prompts to specify the location for installing the default project. Specify the location:
%FIM_INSTALL_DIR\2010\Synchronization Service\Extensions and click OK.

d. The installation starts and the successful completion is reported. Click OK to exit setup wizard.

Content of Default Project


Web Services
The discovery operation retrieve the endpoints defaultPersonAdd, defaultPersonAssignment,
defaultPersonFullImport, defaultPersonFullImportCustom, defaultPersonUpdate,
defaultUserCreate, defaultUserFullImportCustom and defaultUserUpdateDisable and all the
packages that have been exposed through the web service at Oracle EBS. The exposed web service
here includes the packages listed below:

FND_USER_PKG.LOAD_ROW
IRC_PARTY_API.UPDATE_USER
HR_EMPLOYEE_API. CREATE_EMPLOYEE
HR_PERSON_ADDRESS_API.CREATE_PERSON_ADDRESS
HR_ASSIGNMENT_API.UPDATE_EMP_ASG_CRITERIA
HR_ASSIGNMENT_API.UPDATE_EMP_ASG
HR_PHONE_API.CREATE_PHONE
HR_PERSON_API.DELETE_PERSON
HR_ASSIGNMENT_API.DELETE_ASSIGNMENT
HR_PHONE_API.DELETE_PHONE
HR_PERSON_API.UPDATE_PERSON
HR_ASSIGNMENT_API.UPDATE_EMP_ASG
HR_PERSON_ADDRESS_API.UPDATE_PERSON_ADDRESS
HR_ASSIGNMENT_API.UPDATE_EMP_ASG_CRITERIA
HR_ASSIGNMENT_API.ACTIVATE_EMP_ASG
HR_ASSIGNMENT_API.ACTUAL_TERMINATION_EMP_ASG
HR_ASSIGNMENT_API.SET_NEW_PRIMARY_ASG
HR_ASSIGNMENT_API.SUSPEND_EMP_ASG
HR_ASSIGNMENT_API.UPDATE_EMP_ASG_CRITERIA
HR_EX_EMPLOYEE_API.ACTUAL_TERMINATION_EMP
HR_EX_EMPLOYEE_API.UPDATE_TERM_DETAILS_EMP
HR_PHONE_API.UPDATE_PHONE

Workflows
A native package in Oracle EBS is used to perform a single task. There are certain operations for which
native packages are not available and hence the default project support them using custom packages.
Following are the workflows that are supported for:

User Object
FIM Operation
Full Import
Delta Import
Export Add
Export Delete
Export Replace
Set Password
Change Password

Implemented through native web service (package) operation


Yes
No
Yes
Yes
Yes
Yes
Yes

Person Object
FIM Operation
Full Import
Delta Import

Implemented through native web service (package) operation


Yes
No

Export Add
Export Delete
Export Replace
Set Password
Change Password

Yes
Yes
Yes
N/A
N/A

Exposing Native & Custom Web Service for Oracle EBS


12.1.3 Connector
Web Service Configuration Tool discovers the Web service through a WSDL (Web Services Description
Language) and retrieves its services, endpoints and operations (APIs) it provides. Services, endpoints
and operations (APIs) are used by the Web Service Connector to access the Oracle e-Business Suite
(EBS) server and synchronize identities with Forefront Identity Manager (FIM) 2010.
For a web service to be discovered, it is first required to be exposed at the Oracle EBS 12.1.3. This topic
describes the process of exposing the web service from Oracle EBS 12.1.3 Integrated SOA Gateway.
You must perform following activities to expose the web service at Oracle EBS server:
1. Generate and Deploy WSDL
2. Grant WSDL access to users

Generate and Deploy WSDL


1. Login with Admin user SYSADMIN.

2. The Integrated SOA Gateway responsibility screen appears.

3. After selecting the Integrated SOA Gateway responsibility, access Integrated SOA Repository.

4. Navigate through Application Technology --> User Management, to retreive all the APIs that can
be exposed in the module.

5. To expose User related API, click User under User Management. You will see the list of available
user related APIs that can be exposed. Click the one you want to expose.
After selecting, the next screen provides the details of integration point. Click the new Generate
WSDL button to expose the selected API.

6. After two or three seconds you should get a confirmation message, like the one below, to let you
know this was completed successfully. Also, the Generate WSDL button will be replaced by
Regenerate WSDL. Next you need to enable this new service. This is done by clicking on the
Deploy button which is highlighted in the image below. After successful WSDL generation, button
Generate WSDL will disappear and you will see the Regenerate WSDL and a Deploy button
below.

7. After successful deployment, you will receive the confirmation for successful deployment and the
Redeploy button appears. Using View WSDL link, you can see the complete WSDL that is
generated and use it to call the exposed service.

Grant WSDL access to users


The final step is to grant access to the service, so that you will be able to invoke it. To do this, expand the
list of operations in the last part of the interface page in Integration Repository, and check the box next to
the interface you want to grant access to, and click the Create Grant button.
You can choose to grant it to All Users or Specific User.
1. Select the operation/operations to be granted and click Create Grant button.

2. Now enter the username for the user you want to grant access to, or use the search button to find
the user. In this example, it will be sufficient to grant access to ASADMIN.

3. Select the user and Apply it.

4. If you want to see to which Users have been Granted the permission to consume the WSDL,
Click on Show. Once expanded, you can see the list of users to which permission have been
granted.

Important:
This security grant will not be effective unless we bounce the application tier.

Command for bouncing the application tier services.


1) Go to %ADMIN_SCRIPTS_HOME%

2)
3)
4)
5)

Run adoacorectl.cmd STOP


Run adoafmctl.cmd STOP
Run adoacorectl.cmd START
Run adoafmctl.cmd START

Custom Web Service


Native packages are not available to achieve following features:

Get User Details

Get Person Object Version number

Get Assignment Object Version number

Get Last Employee Id

Get Last User Id

Develop the custom package and later expose them as Web Service and Web Service Configuration Tool
discover the Web service through a WSDL.
Important:
Perquisites to develop and expose custom packages:
1. Integration Repository Parser
2. Perl Module

a. Compress-Raw-Zlib-2.009
b. Compress-Zlib-2.009
c.

Class-MethodMaker-1.12

Sample Custom Operations


Get User Detail and Last User Id Operations
Package Specification
CREATE OR REPLACE PACKAGE FND_USER_DTL AS
/* $Header: FND_USER_DTL.pls */
/*#
* This is the source file to FND_USER_DTL
* @rep:scope public
* @rep:product FND
* @rep:displayname FND User Detail
*/
--/*#
* This is source for GET_USER_DETAILS
* @rep:displayname Get User Details
* @rep:category BUSINESS_ENTITY FND_USER
* @rep:scope public
* @rep:lifecycle active
*/
PROCEDURE GET_USER_DETAILS(p_start_user_id IN number,

p_end_user_id IN number,
p_user OUT SYS_REFCURSOR,
p_error OUT nocopy varchar2);
/*#
* This is source for GET_USER_DETAILS
* @rep:displayname Get Last User ID
* @rep:category BUSINESS_ENTITY FND_USER
* @rep:scope public
* @rep:lifecycle active
*/
PROCEDURE GET_LAST_USER_ID(p_last_user_id OUT number);
END FND_USER_DTL;

Package Body
CREATE or REPLACE PACKAGE BODY FND_USER_DTL AS
/* $Header: FND_USER_DTL.pls $ */
---Procedure to return user details
-PROCEDURE GET_USER_DETAILS( p_start_user_id IN NUMBER,
p_end_user_id IN NUMBER,
p_user OUT SYS_REFCURSOR,
p_error OUT NOCOPY VARCHAR2)
IS
BEGIN

OPEN p_user FOR


SELECT user_id,
user_name,
description,
start_date,
end_date,
last_logon_date,
password_date,

password_accesses_left,
password_lifespan_accesses,
password_lifespan_days,
employee_id,
email_address,
fax,
customer_id,
supplier_id,
person_party_id
FROM FND_USER
WHERE user_id BETWEEN p_start_user_id AND p_end_user_id;
EXCEPTION
WHEN OTHERS THEN
p_error := substr(SQLERRM,1,1500);
END GET_USER_DETAILS;
--- Procedure for returning Last User ID
-PROCEDURE GET_LAST_USER_ID( p_last_user_id OUT NUMBER) IS
BEGIN
SELECT MAX(user_id) INTO p_last_user_id
FROM FND_USER;
END GET_LAST_USER_ID;
END FND_USER_DTL;

Get Last Person Id, Person Object and Assignment Object Version number
Package Specification
CREATE OR REPLACE package HR_PERSON_INFO AS
/* $Header: HR_PERSON_INFO.pls $ */
/*#
* This package contains APIs
* for getting Last person ID , object_version_number.
* @rep:scope public
* @rep:product per
* @rep:displayname Person Table Info
* @rep:lifecycle active
* @rep:compatibility S
* @rep:category BUSINESS_ENTITY PER_EMPLOYEE
*/
--- Returns Last Person_ID from PER_ALL_PEOPLE_F
--- {Start Of Comments}
/*#
* This API returns the Last Person ID
* @param x_last_person_ID out number Last Person ID
* @rep:scope public
* @rep:lifecycle active
* @rep:displayname Last Person ID
* @rep:compatibility S
*/
PROCEDURE Get_Last_Person_ID(x_last_person_ID OUT NUMBER);
--

-- Get_person_object_version (PUBLIC)
-- Get person version number for a person on some effective date
--- Input (Mandatory)
-- Effective Date
-- Person ID
-- Returns
-- Get person version number for a person on some effective date
--- {Start Of Comments}
/*#
* This API returns the person object version number
* @param x_effective_date Effective Date
* @param x_person_id Person ID
* @param x_object_version_number Object Version Number
* @rep:scope public
* @rep:lifecycle active
* @rep:displayname Person object Version Number
* @rep:compatibility S
*/

PROCEDURE Get_person_object_version
(
x_person_id IN NUMBER,
x_effective_date IN DATE,
x_object_version_number OUT
NUMBER
);
--- Get_assignment_object_version (PUBLIC)
-- Get assignment version number for a person on some effective date
--- Input (Mandatory)

-- Effective Date
-- Assignment ID
-- Returns
-- Get assignment version number for a person on some effective date
--- {Start Of Comments}
/*#
* This API returns the assignment object version number
* @param x_effective_date Effective Date
* @param x_assignment_id Assignment ID
* @param x_object_version_number Object Version Number
* @rep:scope public
* @rep:lifecycle active
* @rep:displayname Assignment Version Number
* @rep:compatibility S
*/

PROCEDURE Get_assignment_object_version
(
x_assignment_id IN NUMBER,
x_effective_date IN DATE,
x_object_version_number OUT
NUMBER
);
END HR_PERSON_INFO;

Package Body
CREATE or REPLACE PACKAGE BODY HR_PERSON_INFO AS
--- Procedure Get_Last_Person_ID Returns the Last Person_ID in the system
-PROCEDURE Get_Last_Person_ID(x_last_person_ID OUT number) IS

l_max_person_id NUMBER;
BEGIN
SELECT MAX(person_id) INTO l_max_person_id
FROM per_all_people_f;
x_last_person_ID := l_max_person_id ;
END Get_Last_Person_ID;
--- Procedure Get_person_object_version Returns the person object_version_number on some
effective date
--

PROCEDURE Get_person_object_version
(
x_person_id IN NUMBER,
x_effective_date IN DATE,
x_object_version_number OUT
NUMBER
) IS
l_object_version_number NUMBER;
BEGIN
IF x_person_id IS NULL THEN
fnd_message.set_name('PER', 'PER_INVALID_PERSON');
fnd_message.set_token('PERSON_ID', X_PERSON_ID);
app_exception.raise_exception;
END IF;
IF x_person_id IS NULL THEN
fnd_message.set_name('PER', 'EFFECTIVE_DATE cannot be Blank');
fnd_message.set_token('EFFECTIVE_DATE', X_EFFECTIVE_DATE);
app_exception.raise_exception;
END IF;
SELECT object_version_number INTO l_object_version_number
FROM per_all_people_f
WHERE person_id = x_person_id

AND x_effective_date BETWEEN effective_start_date AND effective_end_date;


x_object_version_number := l_object_version_number;
END Get_person_object_version;
--- Procedure Get_assignmen_object_version Returns the assignment object_version_number on
some effective date
-PROCEDURE Get_assignment_object_version

x_assignment_id IN NUMBER,
x_effective_date IN DATE,
x_object_version_number OUT
NUMBER
BEGIN

) IS

IF x_assignment_id IS NULL THEN


fnd_message.set_name('PER', 'ASSIGNMENT_ID cannot be Blank');
fnd_message.set_token('ASSIGNMENT_ID', X_ASSIGNMENT_ID);
app_exception.raise_exception;
END IF;
IF x_effective_date IS NULL THEN
fnd_message.set_name('PER', 'EFFECTIVE_DATE cannot be Blank');
fnd_message.set_token('PERSON_ID', X_EFFECTIVE_DATE);
app_exception.raise_exception;
END IF;
SELECT object_version_number INTO x_object_version_number
FROM per_all_assignments_f
WHERE assignment_id = x_assignment_id
AND x_effective_date BETWEEN effective_start_date AND effective_end_date;
END Get_assignment_object_version;
END HR_PERSON_INFO;

Generating iLDT file


Expose custom packages as web service required ildt file need to generate. Please follow the instructions
from the Integrated SOA Gateway Implementation Guide (Integration Repository Parser) section
Generating ILDT Files.
Note:
If .pls file is not placed on proper location for example:
User:<drive>:\< Oracle Install folder>\<Server
Name>\apps\apps_st\appl\fnd\12.0.0\patch\115\sql
Person:<drive>:\< Oracle Install folder>\<Server
Name>\apps\apps_st\appl\per\12.0.0\patch\115\sql
If .pls file are not placed on above location integration repository parser will not be able to read the file
and will give errors.

Uploading iLDT file


Once the ildt file are generated please follow the follow the instructions from the Integrated SOA Gateway
Implementation Guide (Integration Repository Parser) section Uploading ILDT Files to Integration
Repository

Creating security grants


This is similar to the native packages.

Generating web services


This is similar to the native packages.

Deploying web service


This is similar to the native packages.
Note:
This setting will not be effective unless we bounce the application tier.

Performance Testing
Scale

10,000 User
objects data

10,000 Person
objects data

Topology

Hardware

Two servers

FIM Server Hardware Configuration:

FIM Synchronization Service and


FIM Synchronization database
collocated on one server (FIM
Server).

2-gigabyte (GB) SDRAM

Intel Xeron 2.27GHz Processor

Hard disk volumes:

Oracle ebusiness Suite


o

Single volume

Application Server

Note: The server hardware used is not representative for a large organization. The numbers presented
should be used to understand the difference between different operations. You are encouraged and
expected to configure your own test environments to more accurately estimate capacity and performance.
Microsoft cannot guarantee that organizations will experience the same capacity or performance
characteristics, even if the FIM Synchronization service components are deployed and configured
identically to the components that are described in this guide,
The tests and results shown in the following table were performed using scripted provisioning code. The
Web Service Connector was connected to the Oracle EBS Server as shown in the previous table.

Operation
OracleEBS
Connector Full
Import (User
Object)
OracleEBS
Connector Full
Import (Person
Object)
OracleEBS
Connector
Export (User
Object)

OracleEBS
Connector
Export (Person
Object)

Elapsed time (minutes:


seconds)
67:12

25:19

a) 124:23
b) 236:24
c) 115:49

a) 440:55
b) 872:36
c) 136:36

Reference information

Statistics

Rate

Total Imported users:


10,000

2.48 objects read/


second

Total Imported Persons:


10,000

6.58 objects read/


second

a) Adds: 10,000 Users


b) Update: 10,000
Users
c) Delete: 10,000
Users

a) 1.34 Objects
exported /
second
b) .705 Objects
updated/
second
c) 1.439 Objects
deleted /
second

a) Adds: 10,000
Persons
b) Update: 10,000
Persons
c) Delete:10,000
Persons

a) 0.378 Objects
exported/
second
d) 0.191 Objects
updated/
second
b) 1.22 Objects
deleted /
second

Potrebbero piacerti anche