> ## Documentation Index
> Fetch the complete documentation index at: https://www.composer.id/llms.txt
> Use this file to discover all available pages before exploring further.

# SAP SuccessFactors

> SAP SuccessFactors (HRIS / HCM): the API posture, publish target and field mapping composerID publishes a decision reference through.

This page records how composerID publishes into SAP SuccessFactors: the vendor's API posture, the publish target and field mapping, and the documentation each claim rests on. It is for anyone evaluating the connection or building against it.

SAP SuccessFactors is the HRIS/HCM system of record - the anchor destination for the permanent-hiring channel. composerID publishes the decision as a Position (Employee Central) and, where Recruiting is live, a Job Requisition, stamps the Intent ID on a custom field, and reconciles the eventual hire (EmpJob) back onto the intent timeline.

<Info>
  Category: HRIS / HCM. Coverage status: Specification mapped. Vendor documentation: public developer portal.
</Info>

## Integration path

How composerID connects to this destination, at a glance.

| Step                 | Detail                                                                                   |
| -------------------- | ---------------------------------------------------------------------------------------- |
| Authentication       | OAuth 2.0 SAML Bearer Assertion.                                                         |
| composerID publishes | Position: OData v2 upsert Position (Employee Central)                                    |
| Intent ID lands on   | `position` `cust_intentId`, written into the destination record                          |
| Back-sync            | Webhooks and polling: some lifecycle events are pushed, the rest are read on a schedule. |

## Vendor documentation

<Columns cols={2}>
  <Card title="SAP Business Accelerator Hub - SuccessFactors" icon="external-link" href="https://api.sap.com/products/SAPSuccessFactors" horizontal />

  <Card title="OData v2 - Authentication using OAuth 2.0" icon="external-link" href="https://help.sap.com/docs/successfactors-platform/sap-successfactors-api-reference-guide-odata-v2/authentication-using-oauth-2-0" horizontal />

  <Card title="SuccessFactors Platform docs (API guides)" icon="external-link" href="https://help.sap.com/docs/successfactors-platform" horizontal />

  <Card title="KBA 3462403 - OData OAuth 2.0 walkthrough" icon="external-link" href="https://userapps.support.sap.com/sap/support/knowledge/en/3462403" horizontal />
</Columns>

## API posture

| Aspect         | Detail                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Authentication | OAuth 2.0 SAML Bearer Assertion - register an OAuth client in Admin Center (Manage OAuth 2.0 Client Applications, X.509 certificate), exchange the signed assertion at POST /oauth/token (grant\_type=urn:ietf:params:oauth:grant-type:saml2-bearer, company\_id + API key as client\_id). HTTP Basic for OData/SFAPI is deprecated and is removed in November 2026 (KBA 3462403). The API user also needs matching Role-Based Permissions - a token alone is not enough. |
| Style          | OData v2 (primary; \$batch for bulk) plus newer OData v4 APIs; REST/JSON                                                                                                                                                                                                                                                                                                                                                                                                  |
| Base URL       | https\://\{api-server}.successfactors.com/odata/v2  (per data center; .eu hosts for EU DCs)                                                                                                                                                                                                                                                                                                                                                                               |
| Webhooks       | Intelligent Services Center events + Integration Center outbound; otherwise delta-query on lastModifiedDateTime.                                                                                                                                                                                                                                                                                                                                                          |
| Events posture | Webhooks and polling                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| Rate limits    | Tenant-level concurrency/throughput limits (not publicly numeric); 429/503 with backoff; prefer \$batch.                                                                                                                                                                                                                                                                                                                                                                  |
| Objects        | Position, FOCostCenter, PerPerson, EmpEmployment, EmpJob, User, picklists (Employee Central); JobRequisition, JobApplication, JobOffer, Candidate (Recruiting)                                                                                                                                                                                                                                                                                                            |

## Publish target and field mapping

Each object below pairs the canonical intent fields with the destination's own fields and operations. The mapping is indicative until it is confirmed against a tenant at onboarding.

<AccordionGroup>
  <Accordion title="Position" icon="arrow-right-left" description="Create/approve the position to hire against">
    | Mapping                  | Detail                                         |
    | ------------------------ | ---------------------------------------------- |
    | Canonical to destination | title, cost\_center\_id, start\_date, location |
    | Target                   | OData v2 upsert Position (Employee Central)    |
    | Requirement              | Required                                       |
    | Notes                    | Position Management anchors the perm decision  |
  </Accordion>

  <Accordion title="Job Requisition" icon="arrow-right-left" description="Open the requisition in Recruiting">
    | Mapping                  | Detail                                             |
    | ------------------------ | -------------------------------------------------- |
    | Canonical to destination | role\_title, location, hiring\_manager, openings   |
    | Target                   | OData JobRequisition (Recruiting module)           |
    | Requirement              | Tenant                                             |
    | Notes                    | Template-driven; Recruiting is separately licensed |
  </Accordion>

  <Accordion title="Intent ID + hire back-sync" icon="arrow-right-left" description="Correlate and reconcile">
    | Mapping                  | Detail                                                |
    | ------------------------ | ----------------------------------------------------- |
    | Canonical to destination | intent\_id (cust\_ custom field); EmpJob on hire      |
    | Target                   | Custom field + Intelligent Services event             |
    | Requirement              | Required                                              |
    | Notes                    | The hire event closes the loop on the intent timeline |
  </Accordion>
</AccordionGroup>

<Note>
  SuccessFactors is heavily tenant-configured: MDF objects, picklists and requisition templates differ per tenant, so mapping needs each tenant's schema. API servers are per data center; the OAuth client is registered per instance and the API user must hold matching Role-Based Permissions. Recruiting (JobRequisition) is a separately licensed module - confirm before planning the requisition step.
</Note>

## Next steps

<Columns cols={3}>
  <Card title="How composerID connects" icon="plug-zap" href="/guides/connect">
    The five ways composerID reaches a destination, and the minimum a destination must offer.
  </Card>

  <Card title="Publishing" icon="send" href="/concepts/publishing">
    Plan, preflight and publish: how a decision becomes a valid record in a destination.
  </Card>

  <Card title="All destinations" icon="plug" href="/destinations">
    Every destination composerID documents, with its category and coverage status.
  </Card>
</Columns>
