ICF 1.5.20.25

SAP SuccessFactors connector

The SAP SuccessFactors connector enables you to manage and synchronize objects between SuccessFactors and the IDM managed user repository. These instructions assume you have a SuccessFactors administrator account, and you have created an OAuth2 Client Application.

Before you start

Before you configure the connector, gather the following details:

Host

The SuccessFactors API hostname. For example, apisalesdemo2.successfactors.eu.

Client ID

The SuccessFactors API Key or client ID. To locate this value:

  1. Log in to your SuccessFactors administrator account.

  2. Click Manage OAuth2 Client Applications.

  3. Select your registered OAuth2 Client Application.

  4. Click View.

  5. Copy the API key.

User ID

The API User ID of the SuccessFactors user who authenticates to the REST server.

Private Key

A private key. To configure this, generate a key pair from the X.509 certificate and copy the value of the private key.

Company ID

The API Company ID of the admin user. This is specified in the SuccessFactors login URL.

Person Segments (optional)

SuccessFactors person segments; for example, EmpJob, EmpEmployment, PerPersonal. You can add segments and their attributes that are not provided by the connector by default.

  • If the person segment field is empty, the following default segments are added to the schema:

    • EmpEmployment

    • EmpJob

    • PerPerson

    • PerPersonal

  • If the person segment field contains EmpJob_All, PerPersonal_All, PerPhone_All, all attributes of the applicable segment(s) EmpJob, PerPersonal, and PerPhone are added to the schema, respectively.

  • If the person segment field contains PerPhone_phoneNumber, PerPhone_secondaryPhoneNumber, PerEmail_emailAddress, PerEmail_secondaryEmailAddress, the applicable attributes of the segment(s) EmpJob, PerPersonal, and PerPhone are added to the schema.

Add segment nav-specific attributes in EmpJob_locationNav and PerEmail_emailTypeNav.

Install the SuccessFactors connector

If you are looking for the Advanced Identity Cloud application for this connector, refer to:

You can download any connector from Backstage, but some are included in the default deployment for Advanced Identity Cloud, IDM, or RCS. When using an included connector, you can skip installing it and move directly to configuration.

Connector included in default deployment
Connector IDM RCS

No

No

Download the connector .jar file from Backstage.

  • If you are running the connector locally, place it in the /path/to/openidm/connectors directory, for example:

    mv ~/Downloads/successfactors-connector-1.5.20.23.jar /path/to/openidm/connectors/
  • If you are using a remote connector server (RCS), place it in the /path/to/openicf/connectors directory on the RCS.

Configure the SuccessFactors connector

Create a connector configuration using the IDM admin UI:

  1. From the navigation bar, click Configure > Connectors.

  2. On the Connectors page, click New Connector.

  3. On the New Connector page, type a Connector Name.

  4. From the Connector Type drop-down list, select SuccessFactors Connector - 1.5.20.23.

  5. Complete the Base Connector Details.

    For a list of all configuration properties, refer to SuccessFactors Connector Configuration
  6. Click Save.

When your connector is configured correctly, the connector displays as Active in the admin UI.

Refer to this procedure to create a connector configuration over REST.

Sample Configuration

"configurationProperties" : {
    "host" : null,
    "clientId" : null,
    "userId" : null,
    "privateKey" : null,
    "companyId" : null,
    "personSegments" : "EmpJob,PerPersonal,EmpEmployment",
    "pageSize" : 0,
    "maximumConnections" : 10,
    "connectionTimeout" : 600,
    "httpProxyHost" : null,
    "httpProxyPort" : null,
    "httpProxyUsername" : null,
    "httpProxyPassword" : null
}

For more information, refer to:

Configure connection pooling

The SuccessFactors connector uses the Apache HTTP client, which leverages the HTTP client connection pool, not the ICF connector pool.

Test the SuccessFactors connector

Test that the configuration is correct by running the following command:

curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
--header "Accept-API-Version: resource=1.0" \
--request POST \
"http://localhost:8080/openidm/system/Successfactors?_action=test"
{
  "name" : "Successfactors",
  "enabled" : true,
  "config" : "config/provisioner.openicf/Successfactors",
  "connectorRef" : {
    "bundleVersion" : "[1.5.0.0,1.6.0.0)",
    "bundleName" : "org.forgerock.openicf.connectors.successfactors-connector",
    "connectorName" : "org.forgerock.openicf.connectors.successfactors.SuccessFactorsConnector"
  },
  "displayName" : "SuccessFactors Connector",
  "objectTypes" : [
    "__GROUP__",
    "__PERSON__",
    "__ACCOUNT__",
    "__ALL__"
  ],
  "ok" : true
}

If the command returns "ok": true, your connector has been configured correctly and can authenticate to the SuccessFactors system.

SuccessFactors remote connector

If you want to run this connector outside of PingOne Advanced Identity Cloud or IDM, you can configure the SuccessFactors connector as a remote connector. Java Connectors installed remotely on a Java Connector Server function identically to those bundled locally within PingOne Advanced Identity Cloud or installed locally on IDM.

You can download the SuccessFactors connector from here.

Refer to Remote connectors for configuring the SuccessFactors remote connector.

Supported resource types

The SuccessFactors connector supports the following resource types:

SuccessFactors connector supported resource types
ICF Native Type SuccessFactors Resource Type Naming Attribute

__ACCOUNT__

userId, username

__GROUP__

groupID

__PERSON__

PerPerson

PerPersonal

EmpEmployment

EmpJob

PerPhone

PerEmail

EmpCompensation

PerAddressDEFLT

 

PerPerson_personIdExternal

PerPersonal_personIdExternal

EmpEmployment_userId

EmpJob_userId

PerPhone_personIdExternal

PerEmail_personIdExternal

EmpCompensation_userId

PerAddressDEFLT_personIdExternal

1 Permission is the only supported sub-attribute for dynamic group resources.

Supported search filters

The SuccessFactors connector supports search operations with the following filter operators and attributes:

Supported Operators and Filter Attributes With SuccessFactors Searches
Object Type Operators Attributes

__ACCOUNT__

Equals, And, Or, StartsWith, EndsWith, Less than, Less than or equal, Greater than, Greater than or equal, Contains

  • username

  • userId

  • country

  • department

  • division

  • location

  • lastModifiedWithTZ

  • dateOfBirth

  • lastModified

  • lastModifiedDateTime

  • jobCode

  • firstName

  • lastName

  • manager

__GROUP__

Equals, And, Or, StartsWith, EndsWith, Less than, Less than or equal, Greater than, Greater than or equal, Contains

  • groupID

  • groupType

  • staticGroup

  • createdBy

  • lastModifiedDate

__PERSON__

Equals, And, Or, StartsWith, EndsWith, Less than, Less than or equal, Greater than, Greater than or equal, Contains

Person Segments

PerPerson

  • personIdExternal

  • dateOfBirth

  • lastModifiedOn

  • lastModifiedDateTime

  • createdOn

  • countryOfBirth

  • createdBy

  • createdDateTime

  • lastModifiedBy

  • perPersonUuid

  • personId

  • username

EmpEmployment

  • personIdExternal

  • userId

  • assignmentIdExternal

  • serviceDate

  • professionalServiceDate

  • originalStartDate

  • seniorityDate

  • endDate

  • lastModifiedDateTime

EmpJob

  • userId

  • payGrade

  • seqNumber

  • managerId

  • lastModifiedDateTime

  • eventReason

  • company

  • timezone

  • startDate

  • jobCode

  • jobTitle

  • position

  • location

  • payScaleType

  • payScaleArea

  • businessUnit

PerPersonal

  • startDate

  • personIdExternal

  • nativePreferredLang

  • nationality

  • lastName

  • firstName

  • endDate

  • gender

  • maritalStatus

  • middleName

  • lastModifiedDateTime

PerPhone

  • personIdExternal

  • areaCode

  • countryCode

  • createdBy

  • createdDateTime

  • createdOn

  • extension

  • includeAllRecords

  • isPrimary

  • lastModifiedBy

  • lastModifiedDateTime

  • lastModifiedOn

  • phoneNumber

  • phoneType

  • PerPhone_secondaryPhoneNumber

Attributes

Account attributes

The SuccessFactors connector supports the following account attributes:

Attribute Description

userId

The user’s User ID.

userName

The user’s username.

status

The user’s status.

firstName

The user’s first name.

lastName

The user’s last name.

mi

The user’s middle name.

email

The user’s email address.

dateOfBirth

The user’s birthdate.

defaultFullName

The default full name for the user.

password

The user’s password.

lastModifiedDateTime

The last modified date and time without time zone information.

country

The user’s country of residence.

citizenship

The user’s country of citizenship.

married

The user’s marital status.

state

The state where the user lives.

city

The city where the user lives.

division

The division the user works in.

department

The department the user works in.

jobCode

The Job code of the user.

jobLevel

The Job level of the user.

timeZone

The user’s time zone.

location

The user’s location.

manager

The user’s manager.

hireDate

The date the user was hired.

lastModifiedWithTZ

The last modified date and time with time zone information.

lastModified

The last modified date.

__GROUP__

The user’s group list.

empId

The user’s empId.

custom09

The user’s Custom 09 attribute.

custom10

The user’s Custom 10 attribute.

Group attributes

The SuccessFactors connector supports the following group attributes:

Attribute Description

groupId

The unique ID of the group.

groupName

The name of the group.

groupType

The type of the group.

activeMembershipCount

The number of active members.

totalMemberCount

The number of total members.

dgExcludePools

Users excluded from the group.

dgIncludePools

Users included in the group.

createdBy

The user who created the group.

lastModifiedDate

The last modified date.

Person attributes

The SuccessFactors connector supports the following person segment attributes:

PerPerson attributes

The SuccessFactors connector supports the following PerPerson attributes:

Attribute Description

personIdExternal

The person’s external ID.

personId

The person’s internal ID.

userId

The person’s user ID.

dateOfBirth

The person’s date of birth.

lastModifiedOn

The person’s last modified date.

lastModifiedDateTime

The person’s last modified date and time.

createdOn

The person’s date of creation.

countryOfBirth

The person’s country of birth.

createdBy

The ID of the user who created the person.

createdDateTime

The person’s date and time of creation.

lastModifiedBy

The ID of the last user to modify the person.

perPersonUuid

The person’s UUID.

regionOfBirth

The person’s birth region.

username

The person’s username.

PerPersonal attributes

The SuccessFactors connector supports the following PerPersonal attributes:

Attribute Description

personIdExternal

The employee’s external ID.

endDate

The employment end date.

startDate

The employment start date.

firstName

The employee’s first name.

lastName

The employee’s last name.

gender

The employee’s gender.

nativePreferredLang

The employee’s preferred native language code.

salutation

The employee’s salutation.

maritalStatus

The employee’s marital status.

nationality

The employee’s nationality.

middleName

The employee’s middle name.

preferredName

The employee’s preferred name.

lastModifiedDateTime

The time the PerPersonal was last updated.

EmpEmployment attributes

The SuccessFactors connector supports the following EmpEmployment attributes:

Attribute Description

personIdExternal

An ID used to represent the employee externally.

userId

The employee’s user ID.

assignmentIdExternal

An assignment ID used to identify users across the suite.

firstDateWorked

The first date the employee worked.

endDate

The end date of the employment.

startDate

The start date of the employment.

eligibleForStock

Whether or not the user is eligible for stock.

initialOptionGrant

The initial grant value of the employment.

serviceDate

The service date of employment.

professionalServiceDate

The professional service date of employment.

originalStartDate

The original start date of the employment.

initialStockGrant

The initial stock grant of the employment.

seniorityDate

The date of seniority.

lastModifiedDateTime

The time the EmpEmployment object was last updated.

lastDateWorked

The date of the last day the employee worked.

EmpJob attributes

The SuccessFactors connector supports the following EmpJob attributes:

Attribute Description

seqNumber

The sequence number associated with the job.

userId

The employee’s user ID.

eventReason

The reason for action.

company

The company the job is for.

managerId

The ID of the job manager.

timezone

The time zone the job is in.

startDate

The date the job begins.

endDate

The date the job ends.

payGrade

The job’s pay grade.

jobCode

The job’s code.

jobTitle

The job’s title.

position

The position of the job.

location

The job’s location.

payScaleType

The payscale type for the job.

payScaleArea

The payscale area for the job.

businessUnit

The business unit the job belongs to.

lastModifiedDateTime

The date the job was last modified.

PerPhone attributes

To add all PerPhone attributes to the schema, you must define PerPhone_ALL in the person segment during configuration or define the specific attribute(s) with the segment name, such as PerPhone_phoneNumber.

The SuccessFactors connector supports the following PerPhone attributes:

Attribute Description

personIdExternal

The employee’s external ID.

areaCode

The person’s phone number area code.

countryCode

The person’s phone number country code.

createdBy

The user who created the person’s phone number.

createdDateTime

The date and time of creation for a person’s phone number.

createdOn

The date of creation for a person’s phone number.

includeAllRecords

Include all records for the person’s phone number.

extension

The person’s phone number extension.

isPrimary

Whether the person’s phone number is primary.

lastModifiedBy

The ID of the last user to modify the person’s phone number.

lastModifiedDateTime

The time and date the person’s phone number was last updated.

lastModifiedOn

The date the person’s phone number was last updated.

phoneNumber

The person’s phone number.

phoneType

The person’s phone type.

PerPhone_secondaryPhoneNumber

The person’s secondary phone number.

Use the SuccessFactors connector

Accounts

You can perform the following actions on a SAP SuccessFactors account:

Create a SuccessFactors user

The following example creates a user with every available attribute:

curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
--header "Accept-API-Version: resource=1.0" \
--request  POST \
--data '{
  "userId": "BJENSEN",
  "username": "bjensen",
  "__ENABLE__": true,
  "email": "bjensen@example.com",
  "firstName": "Barbara",
  "lastName": "Jensen",
  "country": "USA",
  "married": false,
  "timeZone": "US/Eastern",
  "department": "Cloud",
  "state": "New York",
  "city": "New York City",
  "jobLevel": "2",
  "location": "40.6635°N 73.9387°W",
  "__PASSWORD__": "Test@123",
  "division": "Manufacturing",
  "hireDate": "2021-07-26 00:00:00",
  "dateOfBirth": "2012-08-22 00:00:00",
  "__GROUP__": [
    {"groupId": "6895"},
    {"groupId": "6095"}
  ]
}' \
"https://localhost:8443/openidm/system/successfactors/__ACCOUNT__?_action=create"
{
  "_id" : "BJENSEN",
  "userId" : "BJENSEN",
  "jobLevel" : "2",
  "__GROUP__" : [
    {
      "groupId" : "1586",
      "groupName" : "EVERYONE"
    }, {
      "groupId" : "6895",
      "groupName" : "SAP_Managers"
    }, {
      "groupId" : "6095",
      "groupName" : "SAP_ONB2_ErrorFlowAdmins"
    }
  ],
  "department" : "Cloud",
  "dateOfBirth" : "2012-08-22 00:00:00",
  "lastModifiedDateTime" : "2022-11-02 09:13:49",
  "__ENABLE__" : true,
  "email" : "bjensen@example.com",
  "country" : "USA",
  "lastModified" : "2022-11-02 10:13:49",
  "location" : "40.6635°N 73.9387°W",
  "lastName" : "Jensen",
  "lastModifiedWithTZ" : "2022-11-02 09:13:49",
  "username" : "bjensen",
  "timeZone" : "US/Eastern",
  "city" : "New York City",
  "state" : "New York",
  "__NAME__" : "bjensen",
  "hireDate" : "2021-07-26 00:00:00",
  "married" : false,
  "division" : "Manufacturing",
  "firstName" : "Barbara"
}
New users must have at least the username, userId, and status properties.
Query all users

The following example queries all SuccessFactors users:

curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
--header "Content-Type: application/json" \
--request GET \
"https://localhost:8443/openidm/system/successfactors/__ACCOUNT__?_queryId=query-all-ids"
{
  "result":[
    {"_id":"1007373"},
    {"_id":"1007371"},
    {"_id":"1007376"},
    {"_id":"1007370"},
    {"_id":"1007377"}
  ],
  "resultCount":5,
  "pagedResultsCookie":null,
  "totalPagedResultsPolicy":"NONE",
  "totalPagedResults":-1,
  "remainingPagedResults":-1
}
Query a single user

The following example queries a single user by their ID:

curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
--header "Content-Type: application/json" \
--request GET \
"https://localhost:8443/openidm/system/successfactors/__ACCOUNT__?_queryFilter=_id%20eq%20%22BJENSEN%22"
{
  "_id" : "BJENSEN",
  "userId" : "BJENSEN",
  "jobLevel" : "2",
  "__GROUP__" : [
    {
      "groupId" : "1586",
      "groupName" : "EVERYONE"
    }, {
      "groupId" : "6895",
      "groupName" : "SAP_Managers"
    }, {
      "groupId" : "6095",
      "groupName" : "SAP_ONB2_ErrorFlowAdmins"
    }
  ],
  "department" : "Cloud",
  "dateOfBirth" : "2012-08-22 00:00:00",
  "lastModifiedDateTime" : "2022-11-02 09:13:49",
  "__ENABLE__" : true,
  "email" : "bjensen@example.com",
  "country" : "USA",
  "lastModified" : "2022-11-02 10:13:49",
  "location" : "40.6635�N 73.9387�W",
  "lastName" : "Jensen",
  "lastModifiedWithTZ" : "2022-11-02 09:13:49",
  "username" : "bjensen",
  "timeZone" : "US/Eastern",
  "city" : "New York City",
  "state" : "New York",
  "__NAME__" : "bjensen",
  "hireDate" : "2021-07-26 00:00:00",
  "married" : false,
  "division" : "Manufacturing",
  "firstName" : "Barbara"
}
Modify a user

You can use the SuccessFactors connector to modify the following attributes of a user entry:

Show attributes
  • username

  • email

  • status

  • country

  • department

  • timeZone

  • jobLevel

  • married

  • city

  • state

  • division

  • citizenship

  • location

  • firstName

  • lastName

  • gender

  • dateOfBirth

  • jobCode

The following example updates the division property on a user:

curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
--header "Content-Type: application/json" \
--header "If-Match:*" \
--request PUT \
--data '{
  "division": "Engineering"
}' \
"https://localhost:8443/openidm/system/successfactors/__ACCOUNT__/BJENSEN"
{
  "_id" : "BJENSEN",
  "userId" : "BJENSEN",
  ...
  "division" : "Engineering",
  "firstName" : "Barbara"
}
Reset a user’s password

The following example resets the password for a SuccessFactors user account:

curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
--header "Content-Type: application/json" \
--request PATCH \
--data '[{
  "operation": "replace",
  "field": "__PASSWORD__",
  "value": "__CHANGEME__"
}]' \
"https://localhost:8443/openidm/system/successfactors/__ACCOUNT__/BJENSEN"
{
  "_id" : "BJENSEN",
  "userId" : "BJENSEN",
  ...
}
The updated password is not included in the response object; however, the value is updated in the system.
Activate a user

The following example activates a user with the minimum required attributes:

curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
--header "Content-Type: application/json" \
--header "Accept-API-Version: resource=1.0" \
--request POST \
--data '{
  "username": "bjensen",
  "__ENABLE__": true,
  "firstName": "Barbara",
  "userId": "BJENSEN"
}' \
"https://localhost:8443/openidm/system/successfactors/__ACCOUNT__/BJENSEN"
{
  "_id": "BJENSEN",
  "userId": "BJENSEN",
  ...
  "__ENABLE__": true
}
Deactivate a user account

The SuccessFactors connector does not support deleting accounts. To deactivate an unwanted account, set the account’s __ENABLE__ attribute value to false. A deactivated account remains in the SuccessFactors system and can still be queried by its ID, but cannot be accessed.

The following example deactivates a SuccessFactors user account:

curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
--header "Content-Type: application/json" \
--header "Accept-API-Version: resource=1.0" \
--request POST \
--data '{
  "username": "bjensen",
  "__ENABLE__": false,
  "firstName": "Barbara",
  "userId": "BJENSEN"
}' \
"https://localhost:8443/openidm/system/successfactors/__ACCOUNT__/BJENSEN"
{
  _id: "BJENSEN"
}

Groups

Assign a user to a group

The following example assigns a user to a group:

curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
--header "Content-Type: application/json" \
--header "if-Match:*" \
--request PUT \
--data '{
  "__ENABLE__":true,
  "__GROUP__":[
    {
      "groupId":1001
    }
  ]
}' \
"https://localhost:8443/openidm/system/successfactors/__ACCOUNT__/BJENSEN"
{
  "_id" : "BJENSEN",
  "userId" : "BJENSEN",
  "jobLevel" : "2",
  "__GROUP__" : [
    {
      "groupId" : "1001",
      "groupName" : "Example Working Group"
    },
    ...
}
Query all groups

The following example queries all groups in the system:

curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
--header "Content-Type: application/json" \
--header "if-Match:*" \
--request GET \
"https://localhost:8443/openidm/system/successfactors/__GROUP__?_queryId=query-all-ids"
{
  "result": [
    {"_id":"6637"},
    {"_id":"2202"},
    {"_id":"1588"},
    {"_id":"6877"},
    {"_id":"2203"}
  ],
  "resultCount":5,
  "pagedResultsCookie": null,
  "totalPagedResultsPolicy": "NONE",
  "totalPagedResults": -1,
  "remainingPagedResults": -1
}
Query a single group

The following example queries a single group:

curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
--header "Content-Type: application/json" \
--request GET \
"https://localhost:8443/openidm/system/successfactors/__GROUP__?/1001"
{
  "_id": "1001",
  "__NAME__": "1001",
  "groupName": "Example Working Group",
  "lastModifiedDate" : "2015-01-04 23:29:38",
  "createdBy" : "v4admin",
  "totalMemberCount" : "33590",
  "activeMembershipCount" : "2294",
  "groupID" : "1001",
  "groupType" : "permission"
}

Persons

Query all persons

The following example queries all persons in the system:

curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
--header "Content-Type: application/json" \
--request GET \
"https://localhost:8443/openidm/system/successfactors/__PERSON__?_queryId=query-all-ids"
{
  "result":[
    {"_id":"69119"},
    {"_id":"69120"},
    {"_id":"69121"},
    {"_id":"80279"},
    {"_id":"80280"}
  ],
  "resultCount":5,
  "pagedResultsCookie":null,
  "totalPagedResultsPolicy":"NONE",
  "totalPagedResults":-1,
  "remainingPagedResults":-1
}
Query a single person

The following example queries a single group:

curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
--header "Content-Type: application/json" \
--request GET \
"https://localhost:8443/openidm/system/successfactors/__PERSON__?_queryFilter=_id%20%22scarter%22"
{
  "result":[{
    "_id":"scarter",
    "EmpJob_payGrade":"GR-08",
    "EmpEmployment_firstDateWorked":"2002-03-17 00:00:00",
    "PerPersonal_maritalStatus":"10819",
    "PerPersonal_nationality":"USA",
    "EmpEmployment_lastDateWorked":null,
    "EmpEmployment_userId":"scarter",
    "PerPersonal_personIdExternal":"scarter",
    "EmpEmployment_initialStockGrant":null,
    "PerPerson_countryOfBirth":"USA",
    "PerPersonal_endDate":"9999-12-31 00:00:00",
    "PerPersonal_firstName":"Sam",
    "EmpEmployment_eligibleForStock":null,
    "PerPersonal_lastName":"Carter",
    "EmpJob_payScaleArea":"USA/US2",
    "EmpJob_jobCode":"50070968",
    "PerPerson_regionOfBirth":null,
    "PerPersonal_startDate":"2002-03-17 00:00:00",
    "PerPerson_personIdExternal":"scarter",
    "PerPerson_lastModifiedDateTime":"2015-10-30 10:05:06",
    "EmpEmployment_lastModifiedDateTime":"2018-07-15 23:12:06",
    "PerPersonal_lastModifiedDateTime":"2018-10-25 23:51:29",
    "EmpJob_timezone":"US/Eastern",
    "PerPersonal_gender":"M",
    "PerPerson_dateOfBirth":"1983-02-15 00:00:00",
    "PerPersonal_nativePreferredLang":"10223",
    "EmpEmployment_serviceDate":null,
    "EmpEmployment_assignmentIdExternal":"scarter",
    "EmpJob_lastModifiedDateTime":"2020-06-23 10:50:43",
    "PerPerson_createdOn":"2015-01-05 23:34:22",
    "EmpJob_company":"1710",
    "EmpEmployment_originalStartDate":"2002-03-17 00:00:00",
    "EmpEmployment_endDate":null,
    "EmpJob_position":"3000325",
    "EmpJob_jobTitle":"Administrative Support",
    "PerPersonal_salutation":"10810",
    "EmpEmployment_seniorityDate":"2002-03-17 00:00:00",
    "PerPerson_createdDateTime":"2015-01-05 22:34:22",
    "EmpEmployment_professionalServiceDate":null,
    "EmpJob_startDate":"2017-01-01 00:00:00",
    "PerPersonal_middleName":null,
    "PerPerson_createdBy":"v4admin",
    "PerPersonal_preferredName":null,
    "PerPerson_lastModifiedBy":"scarter",
    "EmpJob_businessUnit":"CORP",
    "EmpJob_seqNumber":"1",
    "PerPerson_perPersonUuid":"87AF10389BCC4F29BC3F3A225B321E14",
    "EmpJob_location":"1710-2001",
    "EmpJob_managerId":"108743",
    "EmpJob_eventReason":"PAYOTH",
    "PerPerson_lastModifiedOn":"2015-10-30 11:05:06",
    "EmpJob_payScaleType":"USA/US2",
    "EmpJob_userId":"scarter",
    "EmpEmployment_initialOptionGrant":null,
    "EmpEmployment_personIdExternal":"scarter",
    "PerPerson_personId":"8",
    "__NAME__":"scarter"}],
  "resultCount":1,
  "pagedResultsCookie":null,
  "totalPagedResultsPolicy":"NONE",
  "totalPagedResults":-1,
  "remainingPagedResults":-1
}
Modify a person

You can use the SuccessFactors connector to modify the following attributes of a user entry:

Show attributes
  • PerPerson_dateOfBirth

  • PerPerson_countryOfBirth

  • PerPerson_regionOfBirth

  • EmpEmployment_firstDateWorked

  • EmpEmployment_eligibleForStock

  • EmpEmployment_initialOptionGrant

  • EmpEmployment_serviceDate

  • EmpEmployment_professionalServiceDate

  • EmpEmployment_originalStartDate

  • EmpEmployment_initialStockGrant

  • EmpEmployment_seniorityDate

  • EmpEmployment_startDate

  • EmpJob_jobCode

  • EmpJob_startDate

  • EmpJob_eventReason

  • EmpJob_businessUnit

  • EmpJob_managerId

  • EmpJob_seqNumber

  • EmpJob_payGrade

  • EmpJob_jobTitle

  • EmpJob_company

  • EmpJob_location

  • EmpJob_timezone

  • EmpJob_position

  • EmpJob_payScaleArea

  • EmpJob_payScaleType

  • PerPersonal_gender

  • PerPersonal_endDate

  • PerPersonal_startDate

  • PerPersonal_firstName

  • PerPersonal_lastName

  • PerPersonal_nativePreferredLang

  • PerPersonal_salutation

  • PerPersonal_maritalStatus

  • PerPersonal_nationality

  • PerPersonal_preferredName

  • PerPersonal_middleName

  • PerPhone_phoneType

  • PerPhone_phoneNumber

  • PerPhone_isPrimary

  • PerPhone_secondaryPhoneNumber

  • PerEmail_emailType

  • PerEmail_emailAddress

  • PerEmail_isPrimary

  • PerEmail_secondaryEmailAddress

  • EmpCompensation_startDate

  • EmpCompensation_endDate

  • EmpCompensation_bonusTarget

  • EmpCompensation_payGrade

  • EmpCompensation_payrollSystemId

  • EmpCompensation_benefitsRate

  • EmpCompensation_isHighlyCompensatedEmployee

  • EmpCompensation_eventReason

  • EmpCompensation_payGroup

  • EmpCompensation_isEligibleForCar

  • EmpCompensation_isInsider

  • EmpCompensation_isEligibleForBenefits

  • PerAddressDEFLT_addressType

  • PerAddressDEFLT_startDate

  • PerAddressDEFLT_country

  • PerAddressDEFLT_zipCode

  • PerAddressDEFLT_notes

  • PerAddressDEFLT_city

  • PerAddressDEFLT_endDate

  • PerAddressDEFLT_county

  • PerAddressDEFLT_address2

  • PerAddressDEFLT_address1

To modify an existing person entry, use a PUT request and include all attributes of the person in the request:

curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
--header "If-Match: *" \
--header "Content-Type: application/json" \
--request PUT \
--data '{
  "PerPerson_dateOfBirth":"1960-05-04 00:00:00",
  "PerPerson_countryOfBirth":"USA",
  "PerPerson_regionOfBirth":"null",
  "EmpEmployment_firstDateWorked":"2017-01-01 00:00:00",
  "EmpEmployment_eligibleForStock":true,
  "EmpEmployment_initialOptionGrant":"118.8",
  "EmpEmployment_serviceDate":"2018-01-01 00:00:00",
  "EmpEmployment_professionalServiceDate":"2019-02-01 00:00:00",
  "EmpEmployment_originalStartDate":"2018-03-01 00:00:00",
  "EmpEmployment_initialStockGrant":"3000",
  "EmpEmployment_seniorityDate":"2022-04-01 00:00:00",
  "EmpEmployment_startDate":"2016-05-01 00:00:00",
  "EmpJob_jobCode":"50070999",
  "EmpJob_startDate":"2019-01-01 00:00:00",
  "EmpJob_eventReason":"HIRNEW",
  "EmpJob_businessUnit":"PRODS",
  "EmpJob_managerId":"sMeias",
  "EmpJob_seqNumber":"2",
  "EmpJob_payGrade":"GR-08",
  "EmpJob_jobTitle":"Planning & Scheduling Manager",
  "EmpJob_company":"2100",
  "EmpJob_location":"2100-0001",
  "EmpJob_timezone":"Europe/Lisbon",
  "EmpJob_position":"3000909",
  "EmpJob_payScaleArea":"USA/US2",
  "EmpJob_payScaleType":"USA/US2",
  "PerPersonal_gender":"F",
  "PerPersonal_endDate":"9999-12-31 00:00:00",
  "PerPersonal_startDate":"2019-07-26 00:00:00",
  "PerPersonal_firstName":"sam",
  "PerPersonal_lastName":"carter",
  "PerPersonal_nativePreferredLang":"10223",
  "PerPersonal_salutation":"30085",
  "PerPersonal_maritalStatus":"10820",
  "PerPersonal_nationality":"USA",
  "PerPersonal_preferredName":"sammy",
  "PerPersonal_middleName":" M",
  "PerPhone_phoneType":"10605",
  "PerPhone_phoneNumber":"55555556",
  "PerPhone_isPrimary":true,
  "PerPhone_secondaryPhoneNumber":[
    {
      "phoneNumber":"555555555",
      "phoneType":"10606",
      "isPrimary":false,
      "areaCode":"312",
      "countryCode":"3",
      "extension":"76858"
    }
  ],
  "PerEmail_emailType":"8448",
  "PerEmail_emailAddress":"scarter@example.com",
  "PerEmail_isPrimary":true,
  "PerEmail_secondaryEmailAddress":[
    {
      "emailAddress":"scarter.21@example.com",
      "emailType":"8447",
      "isPrimary":false
    },
    {
      "emailAddress":"scarter.31@example.com",
      "emailType":"8446",
      "isPrimary":false
    }
  ],
  "EmpCompensation_startDate":"2021-12-31 00:00:00",
  "EmpCompensation_endDate":"9999-12-31 00:00:00",
  "EmpCompensation_bonusTarget":"47",
  "EmpCompensation_payGrade":"GR-12",
  "EmpCompensation_payrollSystemId":"ajukuio",
  "EmpCompensation_benefitsRate":"1",
  "EmpCompensation_isHighlyCompensatedEmployee":true,
  "EmpCompensation_eventReason":"PAYOTH",
  "EmpCompensation_payGroup":"D2",
  "EmpCompensation_isEligibleForCar":false,
  "EmpCompensation_isInsider":false,
  "EmpCompensation_isEligibleForBenefits":true,
  "PerAddressDEFLT_addressType":"home",
  "PerAddressDEFLT_startDate":"2012-01-01 00:00:00",
  "PerAddressDEFLT_country":"SGP",
  "PerAddressDEFLT_zipCode":"345653",
  "PerAddressDEFLT_notes":"notes",
  "PerAddressDEFLT_city":"Singapore",
  "PerAddressDEFLT_endDate":"9999-12-31 00:00:00",
  "PerAddressDEFLT_county":"11224",
  "PerAddressDEFLT_address2":"4815",
  "PerAddressDEFLT_address1":"Oceanic Avenue"
}' \
"https://localhost:8443/openidm/system/successfactors/__PERSON__/scarter"
{
  "_id":"scarter",
  "PerPersonal_maritalStatus":"10820",
  ...
  "PerPersonal_lastName":"carter",
  "__NAME__":"scarter"
}

OpenICF Interfaces Implemented by the SuccessFactors Connector

The SuccessFactors Connector implements the following OpenICF interfaces. For additional details, see ICF interfaces:

Create

Creates an object and its uid.

Delete

Deletes an object, referenced by its uid.

Schema

Describes the object types, operations, and options that the connector supports.

Script on Connector

Enables an application to run a script in the context of the connector.

Any script that runs on the connector has the following characteristics:

  • The script runs in the same execution environment as the connector and has access to all the classes to which the connector has access.

  • The script has access to a connector variable that is equivalent to an initialized instance of the connector. At a minimum, the script can access the connector configuration.

  • The script has access to any script arguments passed in by the application.

Search

Searches the target resource for all objects that match the specified object class and filter.

Sync

Polls the target resource for synchronization events, that is, native changes to objects on the target resource.

Test

Tests the connector configuration.

Testing a configuration checks all elements of the environment that are referred to by the configuration are available. For example, the connector might make a physical connection to a host that is specified in the configuration to verify that it exists and that the credentials that are specified in the configuration are valid.

This operation might need to connect to a resource, and, as such, might take some time. Do not invoke this operation too often, such as before every provisioning operation. The test operation is not intended to check that the connector is alive (that is, that its physical connection to the resource has not timed out).

You can invoke the test operation before a connector configuration has been validated.

Update

Updates (modifies or replaces) objects on a target resource.

SuccessFactors Connector Configuration

The SuccessFactors Connector has the following configurable properties:

Configuration properties

Property Type Default Encrypted(1) Required(2)

host

String

null

Yes

Hostname of the target.

clientId

String

null

Yes

The client identifier.

userId

String

null

Yes

User id for authentication.

privateKey

GuardedString

null

Yes

The private key which is used for signing JWT.

companyId

String

null

Yes

Company id as present in target application.

personSegments

String

null

No

The person segments to retrieve, specified as individual attributes or all (For example: EmpJob_All, EmpEmployment_startDate).

pageSize

int

0

No

Page size for search operation.

(1) Whether the property value is considered confidential, and is therefore encrypted in IDM.

(2) A list of operations in this column indicates that the property is required for those operations.

Basic Configuration Properties

Property Type Default Encrypted(1) Required(2)

maximumConnections

Integer

10

No

Provides the maximum connections.

connectionTimeout

int

600

No

Provides the maximum connection timeout in seconds.

httpProxyHost

String

null

No

Provides the HTTP proxy host.

httpProxyPort

Integer

null

No

Provides the HTTP proxy port.

httpProxyUsername

String

null

No

Provides the HTTP proxy username.

httpProxyPassword

GuardedString

null

Yes

No

Provides the HTTP proxy password.

(1) Whether the property value is considered confidential, and is therefore encrypted in IDM.

(2) A list of operations in this column indicates that the property is required for those operations.