The Oracle Fusion Cloud is a next-generation service-oriented platform and applications suite that caters to the enterprise technologies, applications, and services, including Oracle Fusion Applications and Oracle Fusion Middleware, to change the dynamics in the applications marketplace and revolutionize business.
Supervisor configuration parameters
To configure the connector, following parameters are required:
- Connector Name
- Username
- Password
-
Target URL (https://<instance>.oraclecloud.com/)
-
Instance DateTime Offset (refer Configuring additional datetime offset in connectors for more details).
Supported objects and operations
Users
Operation |
VERB |
---|---|
Create User |
POST |
Get a User |
GET |
Get all Users |
GET |
Get all Users with Pagination |
GET |
Update Users |
PUT |
Delete User |
DELETE |
Roles
Operation |
VERB |
---|---|
Get a Role | GET |
Get all Roles |
GET |
Get all Roles with pagination |
GET |
Update Role |
PUT |
Employees
Operation |
VERB |
---|---|
Create Employee |
POST |
Get an Employee |
GET |
Get All Employees |
GET |
Update Employee |
PUT |
Data Securitiees
Operation |
VERB |
---|---|
List Data Securities |
GET |
Get Data Security |
GET |
Create Data Security |
POST |
Update Data Security |
PUT |
NOTE: Data Securities feature is still in beta.
Future Dated Employees
Operation |
VERB |
---|---|
Get a Future Dated Employee |
GET |
Get All Future Dated Employees |
GET |
Mandatory Fields
This section lists the mandatory fields required to CREATE.
Users
- userName
Employees
-
names[].LastName
-
names[].LegislationCode
-
workRelationships[].LegalEmployerName
-
workRelationships[].assignments[].ActionCode (in version 1.0)
-
workRelationships[].assignments[].BusinessUnitName (in version 1.0)
-
workRelationships[].assignmentsActionCode (in version 2.0)
-
workRelationships[].assignmentBusinessUnitName (in version 2.0)
NOTE: While creating employee, if emails attribute is present then EmailAddress and EmailType is mandatory. If phones attribute is present then PhoneNumber and PhoneType is mandatory and if addresses attribute is present then AddressType and Country is mandatory.
Data Securities
- securityContext
- securityContextValue
- roleNameCr
- userName
Mappings
Attributes mapping
Different mappings associated with this connector are listed in the tables below.
SCIM User | OracleFusion User |
---|---|
active |
active |
displayName | displayName |
emails[].primary |
emails[].primary |
emails[].type |
emails[].type |
emails[].value | emails[].value |
id | id |
meta.created |
meta.created |
meta.lastModified |
meta.lastModified |
name.familyName | name.familyName |
name.givenName | name.givenName |
roles[].display |
roles[].displayName |
roles[].value |
roles[].id |
userName | userName |
SCIM Role | OracleFusion Role |
---|---|
category | category |
description | description |
displayName | displayName |
id | id |
Meta.Created |
meta.created |
meta.lastModified | meta.lastModified |
name | name |
members[].value |
members[].value |
SCIM Employee | OracleFusion Employee |
---|---|
id | PersonId |
personId | PersonId |
personNumber | PersonNumber |
userId | [GetUserIdByPersonNumber response].id |
name.legislationCode | names[].LegislationCode |
name.firstName | names[].FirstName |
name.lastName | names[].LastName |
name.displayName | names[].DisplayName |
name.fullName | names[].FullName |
name.honors | names[].Honors |
name.knownAs | names[].KnownAs |
name.listName | names[].ListName |
name.middleNames | names[].MiddleNames |
name.orderName | names[].OrderName |
name.suffix | names[].Suffix |
name.title | names[].Title |
name.preNameAdjunct | names[].PreNameAdjunct |
name.previousLastName | names[].PreviousLastName |
name.localSuffix | names[].LocalSuffix |
name.localTitle | names[].LocalTitle |
name.localDisplayName | names[].LocalDisplayName |
name.localFirstName | names[].LocalFirstName |
name.localFullName | names[].LocalFullName |
name.localHonors | names[].LocalHonors |
name.localKnownAs | names[].LocalKnownAs |
name.localLastName | names[].LocalLastName |
name.localListName | names[].LocalListName |
name.localMiddleNames | names[].LocalMiddleNames |
name.localOrderName | names[].LocalOrderName |
name.localPreNameAdjunct | names[].LocalPreNameAdjunct |
name.localPreviousLastName | names[].LocalPreviousLastName |
name.nameInformation1 through name.nameInformation30 | names[].NameInformation1 through names[].NameInformation30 |
name.localNameInformation1 through name.localNameInformation30 | names[].LocalNameInformation1 through names[].LocalNameInformation30 |
emails[].emailAddress | emails[].EmailAddress |
emails[].emailType | emails[].EmailType |
emails[].primaryFlag | emails[].PrimaryFlag |
addresses[].addressLine1 through addresses[].addressLine4 | addresses[].AddressLine1 through addresses[].AddressLine4 |
addresses[].addressType | addresses[].AddressType |
addresses[].building | addresses[].Building |
addresses[].floorNumber | addresses[].FloorNumber |
addresses[].country | addresses[].Country |
addresses[].primaryFlag | addresses[].PrimaryFlag |
addresses[].postalCode | addresses[].PostalCode |
addresses[].longPostalCode | addresses[].LongPostalCode |
addresses[].townOrCity | addresses[].TownOrCity |
addresses[].region1 through addresses[].region3 | addresses[].Region1 through addresses[].Region3 |
addresses[].addlAddressAttribute1 through addresses[].addlAddressAttribute5 | addresses[].AddlAddressAttribute1 through addresses[].AddlAddressAttribute5 |
phones[].phoneNumber | phones[].PhoneNumber |
phones[].phoneType | phones[].PhoneType |
phones[].areaCode | phones[].AreaCode |
phones[].countryCodeNumber | phones[].CountryCodeNumber |
phones[].primaryFlag | phones[].PrimaryFlag |
workRelationships[].legalEntityId (in v1.0) | workRelationships[0].LegalEntityId |
workRelationships[].legalEmployerName (in v1.0) | workRelationships[0].LegalEmployerName |
workRelationships[].workerType (in v1.0) | workRelationships[0].WorkerType |
workRelationships[].legislationCode (in v1.0) | workRelationships[0].LegislationCode |
workRelationships[].startDate (in v1.0) | workRelationships[0].StartDate |
workRelationships[].legalEntityId (v2.0 onwards) | workRelationships[].LegalEntityId (the workRelationship startDate <= current date and termination date is null or if present should be >= current date) |
workRelationships[].legalEmployerName (v2.0 onwards) | workRelationships[].LegalEmployerName (the workRelationship startDate <= current date and termination date is null or if present should be >= current date) |
workRelationships[].workerType (v2.0 onwards) | workRelationships[].WorkerType (the workRelationship startDate <= current date and termination date is null or if present should be >= current date) |
workRelationships[].legislationCode (v2.0 onwards) | workRelationships[].LegislationCode (the workRelationship startDate <= current date and termination date is null or if present should be >= current date) |
workRelationships[].startDate (v2.0 onwards) | workRelationships[].StartDate (the workRelationship startDate <= current date and termination date is null or if present should be >= current date) |
workRelationships[].assignments[0].actionCode (in v1.0) | workRelationships[].assignments[0].ActionCode |
workRelationships[].assignments[0].businessUnitName (in v1.0) | workRelationships[].assignments[0].BusinessUnitName |
workRelationships[].terminationDate (v2.0 onwards) | workRelationships[].TerminationDate (the workRelationship startDate <= current date and termination date is null or if present should be >= current date) |
workRelationships[].assignmentPeopleGroup (v2.0 onwards) | workRelationships[].assignments[].PeopleGroup (the workRelationship startDate <= current date and termination date is null or if present should be >= current date and the workRelationship's assignment where AssignmentStatusTypeCode = ACTIVE_PROCESS) |
workRelationships[].assignmentEffectiveStartDate (v2.0 onwards) | workRelationships[].assignments[].EffectiveStartDate (the workRelationship startDate <= current date and termination date is null or if present should be >= current date and the workRelationship's assignment where AssignmentStatusTypeCode = ACTIVE_PROCESS) |
workRelationships[].assignmentEffectiveEndDate (v2.0 onwards) | workRelationships[].assignments[].EffectiveEndDate (the workRelationship startDate <= current date and termination date is null or if present should be >= current date and the workRelationship's assignment where AssignmentStatusTypeCode = ACTIVE_PROCESS) |
workRelationships[].assignmentWorkerCategory (v2.0 onwards) | workRelationships[].assignments[].WorkerCategory (the workRelationship startDate <= current date and termination date is null or if present should be >= current date and the workRelationship's assignment where AssignmentStatusTypeCode = ACTIVE_PROCESS) |
workRelationships[].assignmentCategory (v2.0 onwards) | workRelationships[].assignments[].AssignmentCategory (the workRelationship startDate <= current date and termination date is null or if present should be >= current date and the workRelationship's assignment where AssignmentStatusTypeCode = ACTIVE_PROCESS) |
workRelationships[].assignmentManagerFlag (v2.0 onwards) | workRelationships[].assignments[].ManagerFlag (the workRelationship startDate <= current date and termination date is null or if present should be >= current date and the workRelationship's assignment where AssignmentStatusTypeCode = ACTIVE_PROCESS) |
workRelationships[].assignmentPositionId (v2.0 onwards) | workRelationships[].assignments[].PositionId (the workRelationship startDate <= current date and termination date is null or if present should be >= current date and the workRelationship's assignment where AssignmentStatusTypeCode = ACTIVE_PROCESS) |
workRelationships[].assignmentPositionCode (v2.0 onwards) | workRelationships[].assignments[].AssignmentCode (the workRelationship startDate <= current date and termination date is null or if present should be >= current date and the workRelationship's assignment where AssignmentStatusTypeCode = ACTIVE_PROCESS) |
workRelationships[].assignmentDepartmentId (v2.0 onwards) | workRelationships[].assignments[].DepartmentId (the workRelationship startDate <= current date and termination date is null or if present should be >= current date and the workRelationship's assignment where AssignmentStatusTypeCode = ACTIVE_PROCESS) |
workRelationships[].assignmentDepartmentName (v2.0 onwards) | workRelationships[].assignments[].DepartmentName (the workRelationship startDate <= current date and termination date is null or if present should be >= current date and the workRelationship's assignment where AssignmentStatusTypeCode = ACTIVE_PROCESS) |
workRelationships[].assignmentStatusTypeCode (v2.0 onwards) | workRelationships[].assignments[].AssignmentStatusTypeCode (the workRelationship startDate <= current date and termination date is null or if present should be >= current date and workRelationship's assignment where AssignmentStatusTypeCode = ACTIVE_PROCESS) |
workRelationships[].assignmentStatusType (v2.0 onwards) | workRelationships[].assignments[].AssignmentStatusType (the workRelationship startDate <= current date and termination date is null or if present should be >= current date and the workRelationship's assignment where AssignmentStatusTypeCode = ACTIVE_PROCESS) |
workRelationships[].assignmentActionCode (v2.0 onwards) | workRelationships[].assignments[].ActionCode (the workRelationship startDate <= current date and termination date is null or if present should be >= current date and the workRelationship's assignment where AssignmentStatusTypeCode = ACTIVE_PROCESS) |
workRelationships[].assignmentBusinessUnitId (v2.0 onwards) | workRelationships[].assignments[].BusinessUnitId (the workRelationship startDate <= current date and termination date is null or if present should be >= current date and the workRelationship's assignment where AssignmentStatusTypeCode = ACTIVE_PROCESS) |
workRelationships[].assignmentBusinessUnitName (v2.0 onwards) | workRelationships[].assignments[].BusinessUnitName (the workRelationship startDate <= current date and termination date is null or if present should be >= current date and the workRelationship's assignment where AssignmentStatusTypeCode = ACTIVE_PROCESS) |
workRelationships[].managerAssignmentNumber (v2.0 onwards) | workRelationships[].assignments[].managers[0].ManagerAssignmentNumber (the workRelationship startDate <= current date and termination date is null or if present should be >= current date and the workRelationship's assignment where AssignmentStatusTypeCode = ACTIVE_PROCESS) |
workRelationships[].contractEndDate (v2.0 onwards) | workRelationships[].assignments[].assignmentsDFF[0].ContractEndDate (the workRelationship startDate <= current date and termination date is null or if present should be >= current date and the workRelationship's assignment where AssignmentStatusTypeCode = ACTIVE_PROCESS) |
dateOfBirth | DateOfBirth |
townOfBirth | TownOfBirth |
countryOfBirth | CountryOfBirth |
gender (v2.0 onwards) | legislativeInfo[0].Gender |
nationalIdentifierNumber (v2.0 onwards) | nationalIdentifiers (where PrimaryFlag = true).NationalIdentifierNumber |
nationalIdentifierType (v2.0 onwards) | nationalIdentifiers (where PrimaryFlag = true).NationalIdentifierType |
meta.created | CreationDate |
meta.lastModified | LastUpdateDate |
NOTE:
-
The nameInformation1 is not considered for some of the legislationCode for Create Employee.
-
Supported Updation of first object of Emails, Phones and Addresses.
-
If Phones, Emails, Addresses does not exist for an Employee so for creating a new one we have some mandatory fields
-
For Addresses : AddressType and Country are mandatory.
-
For Phones : PhoneNumber and PhoneType are mandatory.
-
For Emails : EmailAddress and EmailType are mandatory.
-
SCIM Security | OracleFusion Data Security |
---|---|
id | UserRoleDataAssignmentId |
userName | UserName |
roleNameCr | RoleNameCr |
securityContext | SecurityContext |
securityContextValue |
SecurityContextValue |
active | ActiveFlag |
meta.Created | CreationDate |
Meta.LastModified |
LastUpdateDate |
SCIM Security | FutureDatedEmployees |
---|---|
Mappings are same as in Employee endpoint |
User and Employee Objects are available and synced by default, but not Roles. To sync Roles, follow the below steps:
-
Log in to the instance.
-
Navigate to: My Enterprise > Setup and Maintenance > Initial Users > Run User and Roles Synchronization process.
OneIM E2E Integration Needs
The OracleFusionCloud connector has Employees endpoints along with Users and Roles which is different when compared to the other Starling connectors. None of the existing OneIM Synchronization templates available for SCIM Connector or CHS modules template work with OracleFusionCloud connector.
Here is more explanation on the same:
-
The regular "SCIM Synchronization" and "One Identity Starling Connect Synchronization" template cannot be used while the synchronization project is created since the addition endpoint Employees is there along with Users and Roles.
-
The "One Identity Starling Connect HR" template cannot be used because there are no costcenter and location endpoint available in OracleFusionCloud, is mandatory for the One Identity Starling Connect HR template to be used.
Recommended Approach
-
Use a blank project template and the do the manual mappings.
Connector versions and features
The following subsections describe the different connector version(s) and features available with them.
Supported Versions
The supported versions of Oracle Fusion Cloud connector are:
-
v1.0
-
v2.0
Features available exclusively in Oracle Fusion Cloud v.2.0
-
New attributes are supported under employees and future dated employees. The attribute 'workRelationships~assignments' which was is a multi-valued complex attribute in version 1.0 of the connector has been removed. Instead of that, some attributes under 'assignment' have been added under 'workRelationships' with 'assignment' as the name prefix.
Support for filter condition
OracleFusionCloud connector supports the filter condition for all the endpoints. We could apply the filter condition and take the filtered records from OracleFusionCloud target system.
- The connector supports filter conditions for all the endpoints.
- The connector supports only the double quotes in the filter value (ex. userName eq "testUser")
- Filter condition should follow the syntax ex: 1.<attribute_name><space><operator><space>'<string_value>
- Supports the following operators to filter the values: eq, ne, sw, co, ew, gt, ge, lt, le
- Supports only AND, OR logical operators for users, roles, employees, futureDatedEmployees
- Supports only OR logical operators for dataSecurities.
- For users, roles, employees, futureDatedEmployees and dataSecurities the logical operator supports the combination with all the attributes.
NOTE: In Users OR logical operator combinations are not supported with active to other attributes.
Supported attributes for filter
Below is the list of endpoints with details on attributes that can be used in filter conditions.
Users
- id
- userName
- displayName
- emails.value
- name.givenName
- name.familyName
- active
Roles
- id
- name
- displayName
- category
- description
Employees/FutureDatedEmployees
-
id
-
personId
-
personNumber
-
name.firstName
-
name.lastName
-
displayName
-
emails.emailAddress
-
workRelationships.legislationCode
-
workRelationships.legalEmployerName
-
phones.phoneNumber
-
addresses.country
-
addresses.townOrCity
DataSecurities
- Id
- userName
- roleNameCr
- securityContextValue
- securityContext
- active
Connector Limitations
-
List response of users would be relatively slow as the connector makes additional requests to exclude the system users and reserved users since these users are not retrievable using GET request but are retrievable in LIST request.
-
Update Employee will only done when values for some attributes (LastName , LegislationCode , EmailType, EmailAddress, PhoneType, PhoneNumber, AddressType, Country, CountryOfBirth ) are provided , otherwise it will take the existing value.