Skip to main content

SAP SuccessFactors Component

SAP SuccessFactors is a human resources platform that provides cloud-based solutions to manage various HR functions such as business alignment, people performance, recruitment, and learning activities.

Component key: sap-successfactors

Changelog ↓

Description

SAP SuccessFactors is a cloud based human capital management (HCM) platform that helps organizations manage HR processes including recruiting, onboarding, performance management, and employee development. This component allows you to interact with the SAP SuccessFactors OData API.

API Documentation

This component was built using the SAP SuccessFactors OData V2 API

Connections

API Key Authentication

Generate X.509 Certificate

First, generate an X.509 certificate and private key pair using OpenSSL:

# Generate private key
openssl genrsa -out private.pem 2048

# Generate certificate signing request
openssl req -new -key private.pem -out cert.csr

# Generate self-signed certificate (valid for 365 days)
openssl x509 -req -days 365 -in cert.csr -signkey private.pem -out public.pem

Save both private.pem (private key) and public.pem (certificate) files for later use.

Register OAuth2 Client Application

  1. Log into your SAP SuccessFactors instance as an administrator
  2. Navigate to Admin Center > API Center > OAuth Configuration for OData
    • Alternatively, search for Manage OAuth2 Client Applications in Action Search
  3. Select Register Client Application
  4. Configure the OAuth2 client application:
    • Application Name: Enter a descriptive name for your application
    • Application URL: Enter your application URL
    • X.509 Certificate: Upload or paste the contents of your public.pem certificate file
  5. Click Register to create the application
  6. Copy the API Key (also called Client ID) that is generated - you'll need this for authentication
  7. From the integration connection fill in the required fields:
    • Company ID: Your SAP SuccessFactors company identifier
    • User: Your SAP SuccessFactors user ID (e.g., sfadmin)
    • API Key: The OAuth2 API Key from your registered client application
    • Issuer: Issuer information of the SAML assertion (e.g., www.successfactors.com)
    • Certificate Private Key: Your private certificate key for OAuth2 authentication (PEM format, including -----BEGIN PRIVATE KEY----- and -----END PRIVATE KEY----- headers)
    • Certificate: Your public certificate for OAuth2 authentication (PEM format, including -----BEGIN CERTIFICATE----- and -----END CERTIFICATE----- headers)
    • Audiences: Audiences of the SAML assertion (e.g., www.successfactors.com)
    • API Server (optional): Your SAP SuccessFactors API server (defaults to sandbox environment if not specified)
    • Protocol: The protocol to use for API connections
InputNotesExample
API Key

Your OAuth2 Success Factors API Key

YzVjNzI4MTIsdryNmJkOTVkYWJmODBiZjdkYg
API Server

Your SAP SuccessFactors api server, if you are not sure, please contact your SAP SuccessFactors administrator. If empty the sandbox environment will be used (sandbox.api.sap.com)

testing.successfactors.com
Audiences

Audiences of the SAML assertion

www.successfactors.com
Certificate

Your Public Certificate for Success Factors OAuth2

Company ID

SAP SuccessFactors Company ID

Issuer

Issuer information of the SAML assertion

wwww.successfactors.com
Certificate Private Key

Your Private Certificate Key for Success Factors OAuth2

Protocol

The SAP SuccessFactors protocol to use

User

Enter the SAP SuccessFactors user ID that you use to access the APIs

sfadmin

Basic Authentication

Configuring Basic Authentication

  1. Log into your SAP SuccessFactors instance as an administrator
  2. Ensure you have valid user credentials with appropriate API access permissions
  3. From the integration connection fill in the required fields:
    • Company ID: Your SAP SuccessFactors company identifier
    • Username: Your SAP SuccessFactors username
    • Password: Your SAP SuccessFactors password
    • API Server (optional): Your SAP SuccessFactors API server (defaults to sandbox environment if not specified)
    • Protocol: The protocol to use for API connections
InputNotesExample
API Server

Your SAP SuccessFactors api server, if you are not sure, please contact your SAP SuccessFactors administrator. If empty the sandbox environment will be used (sandbox.api.sap.com)

testing.successfactors.com
Company ID

SAP SuccessFactors Company ID

Password

SAP SuccessFactors Password

Protocol

The SAP SuccessFactors protocol to use

Username

SAP SuccessFactors Username

Data Sources

Select Candidate

Select a Candidate from the dropdown list | key: selectCandidate | type: picklist

InputNotesExample
Connection

{
"result": [
{
"label": "John Doe",
"key": "1234"
}
]
}

Select Job Application

Select a Job Application from the dropdown list | key: selectJobApplication | type: picklist

InputNotesExample
Connection

{
"result": [
{
"label": "John Doe - Job Requisition #1234",
"key": "1234"
}
]
}

Select Job Requisition

Select a Job Requisition from the dropdown list | key: selectJobRequisition | type: picklist

InputNotesExample
Connection

{
"result": [
{
"label": "1234 - 50070999",
"key": "1234"
}
]
}

Actions

Create a Record

Create a new record in component | key: createRecord

InputNotesExample
Additional Inputs

Additional inputs to be passed to the action

Connection
Record Type

The type of record to create

Candidate

Create Candidate

Add a new entity to Candidate | key: createCandidate

InputNotesExample
Additional Inputs

Additional inputs to be passed to the action

Connection
Country

The country where the candidate is located

United States
First Name

The first name of the candidate

John
Last Name

The last name of the candidate

Doe
Primary Email

The primary email address of the candidate

test@test.com

{
"data": {
"__metadata": {
"uri": "https://api68sales.successfactors.com/odata/v2/Candidate(4181L)",
"type": "SFOData.Candidate"
},
"candidateId": "4181",
"lastName": "Langworthy",
"firstName": "Nancy"
}
}

Create Job Application

Add a new entity to JobApplication | key: createJobApplication

InputNotesExample
Additional Inputs

Additional inputs to be passed to the action

Candidate ID

The ID of the candidate to create the job application for

1234-5678
Connection
Job Requisition ID

The ID of the job requisition to create the job application for

1234-5678

{
"data": {
"__metadata": {
"uri": "https://api68sales.successfactors.com/odata/v2/JobApplication(388L)",
"type": "SFOData.JobApplication"
},
"applicationId": "388",
"lastName": "Test",
"firstName": "Test",
"status": "Open"
}
}

Create Job Requisition

Add a new entity to JobRequisition | key: createJobRequisition

InputNotesExample
Additional Inputs

The required fields for the selected template

Connection
Template ID

The ID of the job requisition template to use

1234-5678

Create Onboarding Candidate Info

Add a new entity to OnboardingCandidateInfo | key: createOnboardingCandidateInfo

InputNotesExample
Additional Inputs

Additional inputs to be passed to the action

Connection

Delete Job Requisition

Delete an entity from JobRequisition | key: deleteJobRequisition

InputNotesExample
Connection
Job Requisition ID

The ID of the job requisition to delete

1234-5678

Delete Onboarding Candidate Info

Delete an entity from OnboardingCandidateInfo | key: deleteOnboardingCandidateInfo

InputNotesExample
Applicant ID

The ID of the applicant to retrieve

1234-5678
Connection

Delete Record

Delete an existing record in component | key: deleteRecord

InputNotesExample
Connection
Record Type

The type of record to delete

Candidate
Record Type ID

The ID of the record to delete

1234-5678

Get Candidate

Get entity from Candidate by key | key: getCandidate

InputNotesExample
Select

Select properties to be returned

Rating,ReleaseDate
Candidate ID

The ID of the candidate to retrieve

1234-5678
Connection

{
"data": {
"__metadata": {
"uri": "https://api68sales.successfactors.com/odata/v2/Candidate(4181L)",
"type": "SFOData.Candidate"
},
"candidateId": "4181",
"lastName": "Langworthy",
"firstName": "Nancy"
}
}

Get Job Application

Get entity from JobApplication by key | key: getJobApplication

InputNotesExample
Select

Select properties to be returned

Rating,ReleaseDate
Connection
Job Application ID

The ID of the job application to retrieve

1234-5678

{
"data": {
"__metadata": {
"uri": "https://api68sales.successfactors.com/odata/v2/JobApplication(388L)",
"type": "SFOData.JobApplication"
},
"applicationId": "388",
"lastName": "Test",
"firstName": "Test",
"status": "Open"
}
}

Get Job Requisition

Get entity from JobRequisition by key | key: getJobRequisition

InputNotesExample
Select

Select properties to be returned

Rating,ReleaseDate
Connection
Job Requisition ID

The ID of the job requisition to retrieve

1234-5678

Get Onboarding Candidate Info

Get entity from OnboardingCandidateInfo by key | key: getOnboardingCandidateInfo

InputNotesExample
Select

Select properties to be returned

Rating,ReleaseDate
Applicant ID

The ID of the applicant to retrieve

1234-5678
Connection

Get Record

Retrieve a single record from component | key: getRecord

InputNotesExample
Select

Select properties to be returned

Rating,ReleaseDate
Connection
Record Type

The type of record to create

Candidate
Record Type ID

The ID of the record type to retrieve

1234-5678

List Candidates

Get entities from Candidate | key: listCandidates

InputNotesExample
Count

Include count of items

false
Expand

Expand related entities

Orders($filter=Amount gt 100)
Filter

Filter items by property values

Price lt 10.00
Order By

Order items by property values

userId desc
Search

Search items by search phrases

NOT clothing
Select

Select properties to be returned

Rating,ReleaseDate
Skip

The number of records to skip

20
Top

The number of records to return

20
Connection
Custom Query Params

Custom fields filter

key1=value1
Fetch All

If true will fetch all records, otherwise will use the other inputs to fetch the records

false

{
"data": [
{
"__metadata": {
"uri": "https://api68sales.successfactors.com/odata/v2/Candidate(4181L)",
"type": "SFOData.Candidate"
},
"candidateId": "4181",
"lastName": "Langworthy",
"firstName": "Nancy"
}
]
}

List Job Applications

Get entities from JobApplication | key: listJobApplications

InputNotesExample
Count

Include count of items

false
Expand

Expand related entities

Orders($filter=Amount gt 100)
Filter

Filter items by property values

Price lt 10.00
Order By

Order items by property values

userId desc
Search

Search items by search phrases

NOT clothing
Select

Select properties to be returned

Rating,ReleaseDate
Skip

The number of records to skip

20
Top

The number of records to return

20
Connection
Custom Query Params

Custom fields filter

key1=value1
Fetch All

If true will fetch all records, otherwise will use the other inputs to fetch the records

false

{
"data": [
{
"__metadata": {
"uri": "https://api68sales.successfactors.com/odata/v2/JobApplication(388L)",
"type": "SFOData.JobApplication"
},
"applicationId": "388",
"lastName": "Test",
"firstName": "Test",
"status": "Open"
}
]
}

List Job Requisitions

Get entities from JobRequisition | key: listJobRequisitions

InputNotesExample
Count

Include count of items

false
Expand

Expand related entities

Orders($filter=Amount gt 100)
Filter

Filter items by property values

Price lt 10.00
Order By

Order items by property values

userId desc
Search

Search items by search phrases

NOT clothing
Select

Select properties to be returned

Rating,ReleaseDate
Skip

The number of records to skip

20
Top

The number of records to return

20
Connection
Custom Query Params

Custom fields filter

key1=value1
Fetch All

If true will fetch all records, otherwise will use the other inputs to fetch the records

false

{
"data": [
{
"__metadata": {
"uri": "https://api68sales.successfactors.com/odata/v2/JobRequisition(3040L)",
"type": "SFOData.JobRequisition"
},
"jobReqId": "3040",
"createdDateTime": "/Date(1673880833000+0000)/"
}
]
}

List Onboarding Candidate Info

Get entities from OnboardingCandidateInfo | key: listOnboardingCandidateInfo

InputNotesExample
Count

Include count of items

false
Expand

Expand related entities

Orders($filter=Amount gt 100)
Filter

Filter items by property values

Price lt 10.00
Order By

Order items by property values

userId desc
Search

Search items by search phrases

NOT clothing
Select

Select properties to be returned

Rating,ReleaseDate
Skip

The number of records to skip

20
Top

The number of records to return

20
Connection
Custom Query Params

Custom fields filter

key1=value1
Fetch All

If true will fetch all records, otherwise will use the other inputs to fetch the records

false

List Records

Retrieve a list of records from component | key: listRecords

InputNotesExample
Count

Include count of items

false
Expand

Expand related entities

Orders($filter=Amount gt 100)
Filter

Filter items by property values

Price lt 10.00
Order By

Order items by property values

userId desc
Search

Search items by search phrases

NOT clothing
Select

Select properties to be returned

Rating,ReleaseDate
Skip

The number of records to skip

20
Top

The number of records to return

20
Connection
Custom Query Params

Custom fields filter

key1=value1
Fetch All

If true will fetch all records, otherwise will use the other inputs to fetch the records

false
Record Type

The type of record to create

Candidate

Raw Request

Send raw HTTP request to the SAP SuccessFactors API | key: rawRequest

InputNotesExample
Connection
Data

The HTTP body payload to send to the URL.

{"exampleKey": "Example Data"}
Debug Request

Enabling this flag will log out the current request.

false
File Data

File Data to be sent as a multipart form upload.

[{key: "example.txt", value: "My File Contents"}]
File Data File Names

File names to apply to the file data inputs. Keys must match the file data keys above.

Form Data

The Form Data to be sent as a multipart form upload.

[{"key": "Example Key", "value": new Buffer("Hello World")}]
Header

A list of headers to send with the request.

User-Agent: curl/7.64.1
Max Retry Count

The maximum number of retries to attempt. Specify 0 for no retries.

0
Method

The HTTP method to use.

Query Parameter

A list of query parameters to send with the request. This is the portion at the end of the URL similar to ?key1=value1&key2=value2.

Response Type

The type of data you expect in the response. You can request json, text, or binary data.

json
Retry On All Errors

If true, retries on all erroneous responses regardless of type. This is helpful when retrying after HTTP 429 or other 3xx or 4xx errors. Otherwise, only retries on HTTP 5xx and network errors.

false
Retry Delay (ms)

The delay in milliseconds between retries. This is used when 'Use Exponential Backoff' is disabled.

0
Timeout

The maximum time that a client will await a response to its request

2000
URL

Input the path only (/Candidate), The base URL is already included ({{ YOUR_API_SERVER_URL }}). For example, to connect to {{ YOUR_API_SERVER_URL }}/Candidate, only /Candidate is entered in this field

/Candidate
Use Exponential Backoff

Specifies whether to use a pre-defined exponential backoff strategy for retries. When enabled, 'Retry Delay (ms)' is ignored.

false

Update Candidate

Update an entity in Candidate | key: updateCandidate

InputNotesExample
Additional Inputs

Additional inputs to be passed to the action

Candidate ID

The ID of the candidate to retrieve

1234-5678
Connection
Country

The country where the candidate is located

United States
First Name

The first name of the candidate

John
Last Name

The last name of the candidate

Doe
Primary Email

The primary email address of the candidate

test@test.com

{
"data": "Action completed successfully"
}

Update Job Application

Update an entity in JobApplication | key: updateJobApplication

InputNotesExample
Additional Inputs

Additional inputs to be passed to the action

Candidate ID

The ID of the candidate to update

1234-5678
Connection
Job Application ID

The ID of the job application to retrieve

1234-5678
Job Requisition ID

The ID of the job requisition to update

1234-5678

{
"data": "Action completed successfully"
}

Update Job Requisition

Update an entity in JobRequisition | key: updateJobRequisition

InputNotesExample
Additional Inputs

The template fields to update

Connection
Job Requisition ID

The ID of the job requisition to retrieve

1234-5678

{
"data": "Action completed successfully"
}

Update Onboarding Candidate Info

Update an entity in OnboardingCandidateInfo | key: updateOnboardingCandidateInfo

InputNotesExample
Applicant ID

The ID of the applicant to retrieve

1234-5678
Connection

Update Record

Update an existing record in component | key: updateRecord

InputNotesExample
Additional Inputs

Additional inputs to be passed to the action

Connection
Record Type

The type of record to create

Candidate
Record Type ID

The ID of the record type to retrieve

1234-5678

{
"data": "Action completed successfully"
}

Changelog

2025-10-02

Enhanced SAML assertion handling with improved error reporting and promisified authentication flow.