SuccessFactors Integration Guide

This technical documentation outlines how Visage integrates with SAP SuccessFactors via Merge.dev's unified API. The integration enables bi-directional data synchronization for candidates, applications, and job requisitions.

Candidate Export Conditions

Visage only creates candidate or application records in SAP SuccessFactors after explicit candidate interest and consent have been confirmed. Candidates who opt out, disengage, or do not respond are never exported to SuccessFactors. This is required for compliance alignment.

Note for Developers

This integration uses the Merge ATS Unified API. All data models described below map to Merge's standardized schema.

Prerequisites

  • A valid SAP SuccessFactors instance URL (e.g., https://api12.sapsf.eu).
  • An API User account in SuccessFactors with RBP (Role-Based Permissions) for OData API access.
  • Company ID (Company Schema Name).
  • Visage Admin access to configure the integration.

Authentication

We use OAuth 2.0 or Basic Auth depending on your SuccessFactors configuration. The connection is handled securely via Merge Link. OAuth 2.0 is used where supported by the tenant; Basic Authentication is only used when required by SuccessFactors configuration.

// Example Connection Object
{
  "integration": "sap_successfactors",
  "auth_type": "oauth2",
  "credentials": {
    "client_id": "...",
    "client_secret": "...",
    "company_id": "...",
    "api_url": "https://api12.sapsf.eu"
  }
}

Candidate Data Mapping

When Visage creates a candidate in SuccessFactors after consent is confirmed, we map the following fields:

Visage FieldSuccessFactors OData EntityDirection
First NameCandidate.firstNameWrite
Last NameCandidate.lastNameWrite
EmailCandidate.primaryEmailWrite
ResumeAttachmentWrite

Applications

Applications link candidates to specific job requisitions. We support the following operations:

Create Application

When a candidate has confirmed interest in a specific role in Visage, an application is automatically created in SuccessFactors.

POST /JobApplication

Update Status

Status changes in SuccessFactors (e.g., "Interview", "Offer") are synced back to Visage to update the candidate's journey.

GET /JobApplication?$expand=jobApplicationStatus

Job Requisitions

Visage pulls open job requisitions from SuccessFactors to allow you to start sourcing immediately.

Visage FieldSuccessFactors OData EntityDirection
Job TitleJobRequisition.jobTitleRead
Job IDJobRequisition.jobReqIdRead
StatusJobRequisition.jobReqStatusRead
DepartmentJobRequisition.departmentRead

Sync Frequency & Limits

Sync frequency and behavior depend on SuccessFactors API limits and configured webhooks.

Standard Sync

By default, Visage syncs data every 60 minutes. This includes checking for new job requisitions and updating candidate statuses.

Rate Limits

We respect SuccessFactors OData API limits. If the limit is reached, syncs will pause and retry with exponential backoff.

Webhooks enable near-real-time updates; otherwise, changes are synchronized during scheduled sync intervals.

Webhooks

For real-time updates, we recommend configuring Intelligent Services events in SuccessFactors to trigger webhooks for critical changes.

Supported Events

  • JobRequisition.created

    Triggers when a new job is approved and opened.

  • JobApplication.statusChanged

    Triggers when a candidate moves to a new stage.

  • Candidate.updated

    Triggers when candidate profile data is modified.

We value your privacy

We use cookies to enhance your browsing experience, serve personalized content, and analyze our traffic. By clicking "Accept All", you consent to our use of cookies. Read our Privacy Policy.