SAP SuccessFactors Employee Data - Integration Best Practices and Considerations
SAP SuccessFactors Employee Data - Integration Best Practices and Considerations
SAP SuccessFactors Employee Data - Integration Best Practices and Considerations
PUBLIC
Change Log
Version Date Description
1.0 07.04.2022 Initial version
Supported Releases
Product Release - From Release-Valid
till
SAP SuccessFactors Employee Central H1 2022
Contribution
Role Name Organization
Author / Owner SAP SuccessFactors Product Management SAP SE
Author Sachin Kumar Ybrant
Partners
Implementation Design Principle (IDP) are documents that complement existing implementation
handbooks by addressing real-life implementation challenges as well as frequently asked questions.
They are best practices verified by the SAP SuccessFactors product in collaboration with
our experienced implementation partners and SAP services. IDPs will give structured guidance to
address challenges via product configuration and/or provide workarounds to avoid typical
implementation pitfalls. Some of the guidance especially technical solutions may require custom
development which may require partner support.
The recommendations in this document are based on the features and functionality available up to
SuccessFactors release at the time of writing. Future functionality can impact the recommendations
provided by this document. We strive to keep these recommendations up-to-date, however, in case
you find that a recent functionality has not yet been considered in the latest version of this document,
please send an email to SAPSuccessFactorsIDPDoc@sap.com. In addition, the reader is advised
to read and familiarize with essential and additional product-related documentation which includes
Implementation Guides, SAP Notes, SAP Knowledge Base Articles, and additional assets as
referenced in this document, see chapter 8.
2
TABLE OF CONTENTS
1 TERMINOLOGY .................................................................................................................................................... 4
2 ABSTRACT ........................................................................................................................................................... 5
3 INTRODUCTION................................................................................................................................................... 5
4 BUSINESS REQUIREMENT .................................................................................................................................... 6
4.1 FUNCTIONAL REQUIREMENTS ..................................................................................................................................... 6
4.2 TECHNICAL REQUIREMENTS ....................................................................................................................................... 6
4.2.1 Effective-Dated vs Non-Effective-Dated information .................................................................................. 6
4.2.2 SAP SuccessFactors Integration capability .................................................................................................. 6
4.2.3 Data Extraction Summary ........................................................................................................................... 7
5 SOLUTION OVERVIEW AND CONCEPTS ............................................................................................................... 7
5.1 EMPLOYEE IDENTIFIER............................................................................................................................................... 7
5.2 EMPLOYMENT TYPES IN SAP SUCCESSFACTORS.............................................................................................................. 8
5.3 EFFECTIVE DATED AND NON-EFFECTIVE DATED PORTLETS AND APIS IN SAP SUCCESSFACTORS EC ........................................ 10
5.4 SAP SUCCESSFACTORS APIS .................................................................................................................................... 10
5.4.1 SFAPI (SOAP based, Deprecated as of August-2018) ................................................................................ 10
5.4.2 OData API.................................................................................................................................................. 11
5.4.3 SAP SuccessFactors Integration Tools ....................................................................................................... 12
5.5 PAGINATION ......................................................................................................................................................... 12
5.6 SECURITY CONSIDERATIONS ..................................................................................................................................... 13
5.7 DATA EXTRACTION DESIGN APPROACH ...................................................................................................................... 13
5.7.1 Schedule Based ......................................................................................................................................... 13
5.7.2 Event Based ............................................................................................................................................... 13
5.8 ERROR/EXCEPTION HANDLING AND MONITORING ........................................................................................................ 13
6 DETAILED SOLUTION ..........................................................................................................................................14
6.1 CHARACTERISTICS OF GLOBAL ASSIGNMENT, CONCURRENT EMPLOYMENT AND API CONSIDERATIONS ................................... 14
6.2 WHEN TO CONSIDER SFODATA.USER VS EC API ......................................................................................................... 15
6.3 FILE BASED APPROACH AND API BASED APPROACH SECURITY CONSIDERATIONS .................................................................. 18
6.4 DATA EXTRACTION DETAILED APPROACH.................................................................................................................... 20
6.4.1 Delta Load vs. Full Load ............................................................................................................................ 20
6.4.2 Filter Conditions ........................................................................................................................................ 21
6.5 TRANSFORM DATA ................................................................................................................................................. 22
6.5.1 Navigations vs Enricher ............................................................................................................................. 22
6.6 CONFIRMATION ..................................................................................................................................................... 22
6.6.1 Offline Reports .......................................................................................................................................... 23
6.6.2 Custom MDF object ................................................................................................................................... 23
6.6.3 Confirmation Process via Database/third party ........................................................................................ 24
6.7 MONITORING........................................................................................................................................................ 24
6.7.1 Monitoring using SAP SuccessFactors Execution Manager dashboard ..................................................... 24
6.7.2 Exception Handling ................................................................................................................................... 27
6.8 EVENT BASED INTEGRATIONS ................................................................................................................................... 28
6.9 RE-TRY OPTION ON FAILURE ..................................................................................................................................... 29
7 ASSUMPTIONS AND EXCLUSIONS ......................................................................................................................29
8 REFERENCES .......................................................................................................................................................29
3
1 TERMINOLOGY
The table below explains some abbreviations used in this document.
Abbreviation Description
EC SAP SuccessFactors Employee Central
SAP Business Technology Platform (SAP BTP) brings together intelligent enterprise applications with
database and data management, analytics, integration, and extension capabilities into one platform for
SAP BTP both cloud and hybrid environments, including hundreds of pre-built integrations for SAP and third-party
applications.
Metadata framework (MDF) is a framework in SAP SuccessFactors to create own code free custom
entities including persistency, UI and APIs. MDF is also used internally by SuccessFactors. In this
MDF document we sometimes distinguish between entities and APIs based on MDF and Employee Central to
highlight additional features which are available for the corresponding class of entities
RBP Role Based Permissions
UI User Interface
PERNR SAP Personnel Number
4
2 ABSTRACT
SAP SuccessFactors Employee Central is a Core HR Information System which enables businesses to
manage/maintain Organisation, Job & Pay Structure data and Person & Employment data. This
Implementation Design Principle describes best practices for extracting data from Employee Central in
addition to security considerations when exchanging the data between SAP and Non-SAP Systems. It also
explains the choice of Employee Identifier depending on the downstream system and landscape.
3 INTRODUCTION
SAP SuccessFactors Employee Central consists of Foundation objects (Position, Location, Division, Legal
Entity, Department, Division, Business Unit) and Worker Data related objects (Person, Personal Information,
Employment information, Job Information, Compensation information). The foundation objects form the
Organization structure and acts as a framework on which the Employee information is built.
The scope of the document addresses how to extract Employee data from SAP SuccessFactors Employee
Central to different systems. The middleware technology in this document is “Cloud Integration”. This
document assumes that the reader is building an integration between SAP SuccessFactors Employee
Central and a 3rd party system.
Person Info
Personal Info
Employment Info
Job Info
Compensation
Info
5
4 BUSINESS REQUIREMENT
Target systems which need employee and organization data vary based on:
1. Person, Employment and Compensation information
2. Person and employment data without Compensation information
3. Person Identifier data (Basic data)
Integration
What data is
needed?
Person +
Employment + Person + Person Identifier Data
Compensation Employment Data Data
Data Point
Effective Dated portlets can store history information of the employee data in EC, whereas non-effective
dated portlets can only store the snapshot information/single time slice of the Employee Data in EC.
6
4.2.3 Data Extraction Summary
Note: Employee Data Replication from SAP SuccessFactors Employee Central to target systems cannot just
rely on event based integrations. It should be a combination of scheduled and event based mechanisms.
Employee Identifier in SAP SuccessFactors is used to identify employee and the related employment(s).
Deciding the Employee Identifier is a crucial step at the start of the integration requirements gathering based
on the target system. SAP SuccessFactors has the following IDs
7
unchangeable userId This Employee This ID changes with CompoundEmployee
identifier at the Identifier is at Basic Employments. Hence, - Person Root
employment level User information level. choose this ID as the Segment,
Employee identifier in Employment
This information is target system only if segment
available in both EC the Employee records
and Non-EC systems. must be differentiated (SFOData.User,
in the target system at SFOData.EmpEmplo
UserId, once created Employment level. yment,
in the SAP SFOData.EmpJob)
SuccessFactors, and related
cannot be changed. navigations
UserId can be
alphanumeric.
A single Employee in
the SAP
SuccessFactors can
be associated to
different UserId
(Global Assignment/
Concurrent
Employment)
An identifier that Assignment ID This Employee There is no UI screen CompoundEmployee
can be generated/ (assignment_id_ext Identifier is at in SAP - Global Assignment
Employment level. SuccessFactors to edit Segment,
changed at the ernal)
the Assignment ID. Employment
employment level Assignment ID can be Note: Sample API call Segment,
same as UserId to change the SecondaryAssignme
(default) or can be Assignment ID in SAP ntsItem segment
generated via SuccessFactors refer
Business Rules by to 2820644 - [1908 SFOData.Secondary
using a sequence Feature] API-12250: AssignmentsItem
number in SAP Add new attribute
SuccessFactors which assignmentIdExternal
can follow the target in User OData API
system requirements. (sap.com)
Note:
• For more details, please read this section in the SAP Help guide:
Differentiating Between Person ID, UUID, User ID, and Assignment ID - SAP Help Portal
• Before considering implementation/adoption of AssignmentID, please read the areas of impact and
areas where Assignment ID is not supported: Important Notes About Assignment ID - SAP Help
Portal
Please refer to the Key Advantages of Using Contingent Workforce Management in Employee Central
SAP SuccessFactors supports multiple employments and contingent employments. Hence, to differentiate
these scenarios worker types and employment types are introduced in Employee Central.
We recommend you understand the concepts of Concurrent (multiple) Employment and Contingent Worker
in SAP SuccessFactors.
8
• Events: Events are changes that happen during the different stages of an employee’s lifecycle from
hire to retire. The event sets the user status. Please read here for more information.
When contingent workforce is enabled in SAP SuccessFactors Employee Central, the following events
are applicable:
• SCWK (Start contingent worker)
• ECWK (End contingent worker)
Note: When a contingent worker record is created (Hired in Employee Central) a workorder is assigned
to userId/Employment; start record and end record are created.
• Regular Employment:
All employees have at least one regular employment contract with the organization to which the
employee is hired and goes through his employee life cycle till termination. Note that a special
variant of a regular employment is leveraged for contingent workers.
• Global Assignment:
An employee on a global assignment has two employment assignments, a Home assignment
(which can be marked dormant) and an active Host assignment (expatriate record). The Home
assignment is activated, and the host assignment is terminated upon completion of the global
assignment.
• Concurrent Employment:
An employee on a concurrent employment has two or more active employments and occupies
two positions at the same time. One of them is designated as the Primary employment. There
is a valid contract for each of the employments. When a contingent worker works on multiple
work orders, each work order is assigned with a new employment
• Contingent Employment:
Contingent workers are non-permanent who deliver certain services to the company.
Contingent workers are also managed in Employee central so that the managers can have a
uniform access to employees and contingents. (Please refer implementation guide for more
details).
To understand more about the Employment types and how to use multiple employments for specific
scenarios like international transfers please refer to the Implementation Design Principle Employee
Central: Managing Employments in SuccessFactors Suite
Please refer to section 6.1 for understanding the characteristics of Global Assignment and Concurrent
Employment.
9
5.3 Effective Dated and Non-Effective Dated portlets and APIs in SAP SuccessFactors EC
The following table lists the EC portlets and the corresponding OData APIs and CompoundEmployee API
segments respectively.
SOAP based APIs are deprecated in SAP SuccessFactors technology stack, the only exception is
CompoundEmployee API (Deprecation of Partner API, SFAPI Adhoc, and SFAPI for Simple Entities
- SAP Help Portal)
10
1. Login call from Client 2. Server accepts login 3. Query 4. QueryMore
• Any client tool which can query • User is Authorized • Using the JSessionID the Query • JSession ID is re-used and query
SOAP based API • Jsession ID + Corelation ID is sent to SAP SuccessFactors is sent again to fetch next page
• SAP SuccessFactors company ID details are returned • SAP SuccessFactors returns the • QuerySessionId knows the last
+ Username(SFAPI login • Server waits for the next client queryResponse and along with queried page details
permissions) + Password(Which call by keeping the connection that QuerySessionID is returned • This mechanism is driven by the
is not expired) open • QuerySessionID is binded to tag <hasMore>
JSessionID
Note: SOAP APIs are currently deprecated and will not be enhanced.
11
• 1. The client can be Middleware/an application which can invoke the API end point
1. Client • 2. Any third party tool which can query data
calling • 3. Authentication credentials are sent via Basic/OAuth2.0 concept
Odata
2.ODLoginFil • 1. After a successful login, API server generates Jsesssion ID + CSRF token (Useful for Session-reuse concept)
ter executes • 2. Query response is returned to the client with login cookie details
for initial
login
• 1. Based on the pagination concept used, the next page is returned by the API server
• 2. If it is client paging (top and skip), accordingly based on the skip number specified, the next page is returned
3. Querying • 3. In case it is server side pagination(Cursor/snapshot based), then based on the skip token the next page is returned by the
the data in server
batches
➢ To know more about SAP SuccessFactors OData APIs capabilities, please refer to the
developer guide - SAP SuccessFactors HXM Suite OData API: Developer Guide
➢ To know more about SAP SuccessFactors OData API functionalities, please refer to the
reference guide - SAP SuccessFactors HXM Suite OData API: Reference Guide
Note: Please read through the following Implementation Design Principle document for better
understanding of the SAP SuccessFactors API capabilities for building integrations - SAP
SuccessFactors Integration: Best Practices using SAP SuccessFactors APIs for Custom Integrations
5.5 Pagination
Please read the Pagination - SAP Help Portal for different types of pagination supported by SAP
SuccessFactors APIs
Client-Side Pagination:
Client-side pagination is supported by all APIs in SAP SuccessFactors. The flexibility with client-side
pagination is - you can query any page based on the $top and $skip parameters. Including the “orderby”
clause is mandatory - SAP KBA 2272937.
Cursor Pagination:
Cursor based pagination is only supported in Employee Central EmpJob entity, User entity, MDF Generic
Objects, and most EC Foundation Objects. Hence, this is not a recommended approach for Employee Data
replication. Advantages and disadvantages of cursor-based pagination Click here.
Snapshot Pagination:
12
In general, the following entities support snapshot pagination:
1. Entities based on succession data model elements.
2. All FO (Foundation Object) entities except FODynamicRole.
3. All EC2MDF entities.
4. Workflow related entities including EmpWfRequest, WfRequest, WfRequestComments,
WfRequestParticipator and WfRequestStep.
If the integration has re-try logic and uses Snapshot pagination, then a retry will always start from the 1st
page.
Note:
• How Do I Choose? - SAP Help Portal
• CompoundEmployee by default works on Snapshot-Based pagination. No support for cursor/Client-
side paging.
• To avoid missing of records/duplicates when doing full loads using OData APIs, it is recommended to
use Snapshot Paging – SAP KBA 2723468
• Batch Operation in OData V2 Adapter in SAP Cloud Platform Integration | SAP Blogs
• Batch Request with multiple operations on multiple entity sets using Cloud Integration OData Adapter |
SAP Blogs
• Making SAP SuccessFactors and Cloud Integration more reliable and performant | SAP Blogs
• File based integration: File based Integration through Cloud Integration/SAP SuccessFactors
Integration center is not recommended by SAP if the target or 3rd party system has web-services
enabled for data ingestion.
• API based integration: SAP SuccessFactors recommends using a secure authentication inbound
mechanism - OAuth2.0 (Basic authentication for SAP SuccessFactors APIs is deprecated)
Note: SOAP APIs are not supported in SAP SuccessFactors Integration Center.
• Cloud Integration
Cloud Integration (SAP Integration Suite) can be used to extract data from SAP SuccessFactors and
offers flexible approach for choosing the APIs (supports both SOAP and OData based), support for
complex process orchestration and message transformations.
Event based integrations must be evaluated based on scenarios and use cases.
13
Error handling can be used for validation/functional errors (missing mandatory segments, missing
required fields etc.,).
Exception handling can be used for catching abrupt run-time failures in Cloud Integration process due to
heap memory/Apache camel framework issues.
6 DETAILED SOLUTION
14
Position Data Employee can work for the same Employee will be working for multiple
position/different positions, when assigned positions as per the Employment
to Global Assignment, depends on the assignment (Contracts)
scenario of the employment assignment
Employment/ Applicable for Global Assignment Applicable for Concurrent Employment
Context Switcher
For detailed information refer to the following guide: Managing the Employment Lifecycle (from Hiring to
Termination) in Employee Central
Note:
• A global assignment and concurrent employment cannot be applied to the same employee at
the same time. This means that, if an employee has a concurrent employment, this employee
cannot have a global assignment at the same time, and vice versa.
• There is a field called “isPrimary” under “employment_information” node. This field is
deprecated (at least as of Q2 2017) and not related to the concurrent employment feature. This
should NOT be used to derive the primary or secondary Employment.
• Tips for Using Concurrent Employment in SuccessFactors Employee Central
• Needs only non-effective dated data as-of-today (Target system cannot understand time slices)
• Needs the full history and future effective dated data (Complete replica of EC Employee Data)
• Needs only partial history and supports partial update of history based on change records (For
Example: No future dated records)
o CompoundEmployee is the only API in SAP SuccessFactors, which can output the changed
field value and the previous field value in the API response, OData APIs do not have that
capability
Note: For the last two options listed above, according to the data needs, choose between EC OData APIs
and CompoundEmployee by referring to the IDP SuccessFactors Integrations - Best Practices using SAP
SuccessFactors APIs for Custom Integrations (Section 6.1 – Using the right APIs)
Design approach when target system cannot understand time slices using OData Entities:
15
nfoNav,employmentNav/j
obInfoNav
Replicate the data As User entity is a mix of Organizational Like User entity, EC In both cases a
based on the relevant data and Employee data, many changes entities too can trigger comparison of data
field changes on non-relevant fields (not related to replications to in the source and the
employee level data) will change the last downstream systems,
modified date field of the user entity, even though the selected target system can be
hence there might be many cases where fields in the query are not used to avoid not
an employee record might end up in changed. needed replications
replication wen triggered via last
modified queries but not relevant for the
target system as the fields in the select
statement remain the same.
Will records be No, HRIS-Sync will not get triggered in Yes
replicated, when not case other effective dated records are
effective dated changed
records are changed Note: In a system where Employee
which are not Central is enabled, Employee Profile
effective as of today (User) gets the data from different
portlets in Employee Central, through
HRIS sync job. The future dated
changes flow to User entity, when they
become effective according to the start
date.
Multiple UserId’s will be different and the related Entities like
Employments user accounts will be different. SFOData.EmpEmployme
nt will have multiple
records stores in the SAP
SuccessFactors
database, Root objects
like SFOData.PerPerson
has always one record
even though multiple
employments are present
for the Employee in the
SAP SuccessFactors
system.
Performance of query Since there is only one entity involved As per the business
and usually filters are at the parent level needs navigations must
most of the times, the query is simple be included, and
and fast compared to EC entities sometimes the queries
will have deep navigations
which can slow down the
performance.
16
entity levels too –
Recommended pagination
is “Snapshot”
Realtime data Since HRIS-Sync is a job which syncs Data is always up to date
without delay data from EC entities to user entity there (with a few exceptions
might be a delay and hence data might e.g. position to job
not have the most current state. This is information sync)
only the case for changes to data
triggered by other jobs, e.g. imports on
SFOData.EmpJob
Employee Status The API field to be considered is The API field is Picklist fields return
(Employee lifecycle) “status”. “Employee Status” (Pre- optionId as default
defined picklist values
By default, SFOData.User entity returns “employee-status”) in
active employees in the system. For SFOData.EmpJob
more details, please refer to this SAP
KBA 2736579
“effectiveLatestChange” field is only applicable to SFOData.EmpJob API for identifying or extracting the
latest changes for a given timeslice when multiple changes per day is made.
Sample Scenario:
Note: Value for "effectiveLatestChange" field is "Y" for the timeslice which has the max seqNumber among
the ones with same start date.
Note:
o CompoundEmployee API has restriction on ‘last_modified_on’ field - Compound Employee
API Change to Last Modified On & Snapshot Date 2H 2021 Production Release
o Use Full Transmission query mode with ‘last_modified_on’ date to restrict to query only
changed data. (Only exception is first time data load between source and target systems)
17
• Delta Mode/ Effective dated delta transmission:
This mode is recommended when the target system can detect changes based on “Action Code” and
accordingly can act on the data. Effective-dated delta transmission is designed for target systems that
work in an effective-dated manner. This means, it is assumed that target system stores the time
frame (start and end date) when a data record is effective. The action codes are as follows:
Note:
• For more details and to understand the CompoundEmployee API completely, please refer to the
guide - Employee Central Compound Employee API
• Please note that the XSD structure for delta/periodDelta query modes differ from the Full
Transmission and snapshot query mode - Generation of consumer interface structure file for
Compound Employee API
• Please pay attention to the request body of the CompoundEmployee used in the actual query step,
the XSD generation should have the exact selection segments and the result options values
passed, mismatch between the actual query and the XSD generation will result in the failure of
queryResponse parsing in the middleware/ETL tool.
• XSD structure format With/Without “renderPreviousTags” parameter - Generating
CompoundEmployee XSD structure using “renderPreviousTags” resultOptions parameter | SAP
Blogs
• Effective-dated and period delta transmission
• Delta Transmission Mode
• Supported Fields in where clause
• Overview of query parameters
• SAP KBA 2215682 SuccessFactors API URLs for different Data Centers
6.3 File based approach and API based approach security considerations
18
oFTP (Port 21) is not a recommended protocol for sensitive data like Employee Demographic
file, consider encrypting (using public key) the file feed (both, during transfer and at rest).
o Signing the file feed by source using private key is recommended to verify the authenticity.
o SAP SuccessFactors Integration center (Integration Center>SFTP Settings) do not support
File Transfer Protocol (FTP).
o Cloud Integration supports File Transfer Protocol (FTP) - Cloud Integration – Connecting to
FTP(S)-servers using the FTP Adapter | SAP Blogs
o Setting Up Inbound SFTP Connections (Details) - SAP Help Portal
o Cloud Integration - SFTP Adapter – SAP Help Portal
• SAP SuccessFactors provided SFTP/SAP Customer owned or 3rd party SFTP:
o Beginning August 1, 2014 SAP SuccessFactors provided SFTP server will support only SFTP
for Integration and HTTPS for the accessing via Web-browser client (KBA 2088013)
o SFTP (Port 22) protocol is considered secure (compared to FTP) for sensitive data like
Employee Demographic file (Developer/Organization user can still choose to encrypt/sign the
file based on the security policy followed/defined in their organization) - Using SAP
SuccessFactors Integration Center with file Decryption and Encryption (PGP) – Outbound
and Inbound samples
o Consider using asymmetric key pair for authentication (SSH keys) – Recommended method
for authentication
o Cloud Integration - How to encrypt/decrypt XML payload with AES256-CBC and RSA
Algorithm in Cloud Integration | SAP Blogs , Encryption using AES GCM iaik sampler
o Apply Security - Apply Message Level Security - Sign and Encrypt | IFlow | SAP API
Business Hub – Cloud Integration Exemplar Content
o Cloud Integration supports SFTP in the middle of the process flow too – Use Poll-Enrich with
SFTP Adapter | SAP Blogs
o SAP SuccessFactors Integration Center provides flexibility to change the SFTP port (SFTP
port is by default port 22. This should only be changed if there is an alternative SFTP port
due to your security requirements)
▪ To add an own SFTP the server IP addresses must be added to allow access from
the SuccessFactors data center. This KBA 2659632 explains necessary steps.
OAuth 2.0:
SAP SuccessFactors supports OAuth2.0 framework for authenticating APIs
Points to be noted:
1. Bearer token is issued always by SAP SuccessFactors OAuth2.0 server for accessing the
APIs of SAP SuccessFactors from external systems.
2. The logic of token validation and SAML Assertion expiration checks are mandatory if you are
building a new connector to SAP SuccessFactors and authenticating via OAuth 2.0 (The
checks are implemented within the tooling of Cloud Integration by default)
3. SAP SuccessFactors OAuth2.0 server implements RFC-7522 specification
(grant_type:urn:ietf:params:oauth:grant-type:saml2-bearer) for inbound authentication from
external systems.
Note:
• The OAuth2.0 framework is common to SFAPI (CompoundEmployee API) and OData V2/V4 version
of SAP SuccessFactors APIs.
• SAP SuccessFactors HXM Suite OData API: Developer Guide (V2) – Please familiarize yourself with
the documentation.
• SAP Integration Suite supports OAuth 2.0 in SAP SuccessFactors connector for ODataV2 and SOAP
protocols as of Aug-2021
• For Data Integration scenarios such as Employee Data extraction, please use a technical user and
use “credential type=OAuth2 SAML Bearer Assertion” in Cloud Integration.
• The keypair (certificate) generated in Cloud Integration binds the SAP SuccessFactors API/Technical
user to the certificate. Hence, the SAML Assertion generated will have the specific user context and
this governs the data/object access level in SAP SuccessFactors (API user permission in SAP
SuccessFactors).
19
• Ensure to separate the API users in each Integration use case (Individual users per integration or per
partner)
o Give specific/minimum needed Role Based Permissions for the API user
o Set Role Based Permission, so API user cannot be used to login through the UI of SAP
SuccessFactors
o Set an IP address restriction so it can only be used from the specific integration landscape
which the API user was intended to connect. (KBA 2253200)
• Please refer to the SAP SuccessFactors Integration: Migrating SAP SuccessFactors API calls from
Basic Authentication to oAuth2.0 for detailed configurations steps.
When to use? Full loads are recommended to be run Delta load is used to keep the
only during the initial cut-over phase/First Source and Target systems in Sync,
time migration scenarios by replicating "Changed only"
records from Source. This results in
Note: Apart from these scenarios a full the optimal usage of the system
load is recommended only when there is resources
an emergency/un-avoidable situation. (source/target/middleware) and is
This is to safeguard server resources. the recommended mode of
E.g., There was a mass change in the mechanism.
organization affecting every employee
record.
CompoundEmployee Full Transmission and Snapshot are the All modes of operation in
Mode only modes which can be used in Full CompoundEmployee can be used.
of operation load scenarios, as rest other modes
cannot work without last modified on filter Note: Last modified on date in
CompoundEmployee cannot be
greater than 3 months.
When to run? Recommendation from SAP The frequency of the delta runs can
SuccessFactors is to schedule a full load be set based on the customer
during off business hours needs.
Note: Handling Large Data with Content Enricher and OData v2 adapter | SAP Blogs
20
6.4.2 Filter Conditions
To ensure optimum Process Execution and efficient resource management, it is best advised to filter the
data being called from SuccessFactors. To align the relevant data, the query must have a filter “Where”
condition. This where condition is responsible for restricting data being queried.
CompoundEmployee API has certain available filter that can be used to restrict data being queried. You can
find out these filters at https://userapps.support.sap.com/sap/support/knowledge/en/2318180 . Some filters
are mandatory for certain execution modes, while some filter conditions are only available for certain query
modes.
ODATA APIs have more extensive field level filters and a lot more filterable fields are available. Various
operators and nested AND/OR conditions can be used.
1. eq
2. in
3. ge/gt
4. le/lt
5. contains
While developing the process, it adds value to check the OData Data dictionary to check if a particular field
allows being filtered upon. In case the field is not eligible for being filtered based on, then it is advised to
query the data and filter it within payload at the next step.
Extraction Short Description Target system needs entire Target system needs a Target system needs
Type history data of the Employee part of history data of only as-of-dated
the Employee and not records of the
future dated records Employee
Full Load Without Last QueryMode= FullTransmission N/A add
Modified On filed Mode, without any last effective_end_date=
in the filter modified on filters (Default <current_date> in
condition (Usually mode of operations for filter condition
the first run of the CompoundEmployee API)
integration) Effective end date
filter
Delta Load With Last QueryMode= FullTransmission QueryMode=delta/peri 1.effective_end_date
Modified On filed Mode, with last modified on odDelta , with =<current_date>
in the filter filters (Please do not go fromDate and toDate 2.QueryMode=delta/
condition beyond 3 months in the last set to the period start periodDelta , with
(Subsequent runs modified on date, as and period end dates fromDate and toDate
after the full load) ComopoundEmployee will and lastModifiedOn set to the current
error out) filter date and period end
dates and
lastModifiedOn filter
21
Extraction Short Description Target system needs Target system needs a part Target system
Type entire history data of the of history data of the needs only as-of-
Employee Employee and not future dated records of
dated records the Employee
Full Load Without Last use fromDate and toDate use fromDate to query the OData APIs work by
Modified On filed in the query without last history information and set default on the as-of-
in the filter modified on filter the toDate=<current date> dated information, if
condition (Usually not filter condition is
the first run of the passed
integration)
Delta Load With Last use fromDate and toDate use fromDate to query the Use last modified on
Modified On filed in the query with last history information and set filter
in the filter modified on filter the toDate=<current date>
condition along with last modified on
(Subsequent runs filter
after the full load)
Table: OData API filters to be considered along with the execution parameters
Note: SAP SuccessFactors API server has a restriction on the character limit for OData GET URI 2576271 -
OData GET request client URL size limitation: 2 KB
In CompoundEmployee API or in OData API, where Navigation for a referenced object isn’t feasible, Content
Enricher of the object in question is the only possible solution. In such case, the only way is to use Content
Enricher as a full load data (still query only the active data records using filters in Content enricher).
Note: Sampler blog content - Handling Large Data with Content Enricher and OData v2 adapter | SAP Blogs
6.6 Confirmation
After the data has been sent to the Target system, there is a need for an update in SuccessFactors to mark
the record status as successfully replicated. In case the data wasn’t replicated due to error, it should be
updated as such, in SuccessFactors as well. There are a variety of ways how the Confirmation flow can be
configured. The pre-requisite for the Confirmation Procedure to be implemented is, the target system should
be able to provide post processing logs. These post processing logs have the information about the outcome
of the data upload in the process.
22
6.6.1 Offline Reports
In case the target system can’t send a response back via integration then the data needs to be reported in
terms of Excel sheet, with the date of replication of the employee record, status and error message if any.
This report should be used for any gaps while the reconciliation. The report can be stored as audit logs and
sent it out periodically to the HR or Payroll Administrator via email or downloadable format.
As in flow diagram, the change in data is needed to be picked up, and once picked up in the process, it
should be marked as processing/pending. Once a record is marked pending/processing, It is either marked
Successful or Error, dependent on post processing in integration and target system. In subsequent
executions, it is important, to pickup all records that have been marked as error in the last call.
Ensure that all the entries in the custom MDF marked as Pending are executed and all the records are in
either successful or failed status.
The Custom MDF object that keeps the records replication status, should be an effective dated record, that
has the value of replication status, last successful replicated on and a flag to manually pick the record if
required in the next run. The custom MDF object should be regularly updated via replication process, and in
case the record status for any replication process is not successful, then the record needs to be picked up in
a schedule call. The employee should be replicated as on the date of erroneous replication, ensuring that the
data for the day is replicated as expected.
23
Note: Be cautious about the amount of records created on the custom MDF object confirmations,
recommendation from SAP is to have one MDF record per employee and keep updating the same record,for
each time the employee is picked up for replication to send the confirmation back.
A typical MDF object for confirmation would look like below screen
6.7 Monitoring
6.7.1 Monitoring using SAP SuccessFactors Execution Manager dashboard
Here are few pointers:
• Execution Manager (XM) is a Business User Friendly tool for HR Admin users.
• Execution Manager (XM) is a Business User Friendly tool for HR Admin users to track the execution
step by step. Keep the payload size low (<= 64KB) and do not log several megabytes of data into the
tool (Example: Do not log CE API responses in EMEventPayload).
• For each Cloud Integration process run, there should be one EMMonitoredProcess entry in the XM
log.
• One EMMonitoredProcess can have multiple EMEvents.
• EMEvennts can have EMEventAttributes and EMEventPayload.
• 15 days is the retention period for the XM logs (default).
• Recommended limit from the SAP SuccessFactors product team for XM logs is less than or equal to
64KB (currently, there are no errors/warning messages but, in the future guardrails will be enforced).
• For internal tool like SAP SuccessFactors Integration center, default logging is done in XM
• XM provides capability to do logging from a 3rd party middleware tool or Cloud Integration via web
services for custom built integrations.
• “ProcessType” is an enumerated value and accepts pre-defined value
(SFOData.EMMonitoredProcess.ProcessType=“INTEGRATION”). Custom built integrations using
middleware tool can be monitored via “Middleware Integrations” tab in the UI.
24
• Integrations which follow, Point to Point Integration pattern through APIs should not use XM for
monitoring purposes. (Because the dashboard UI is not designed for this use case, also there is no
ProcessType for such scenario).
Following columns are shown in the table in the process view of XM Dashboard
Column Name Description
Process Instance Name of the process (Provided either by the user or generated by code) which is
Name used to identify the job execution (Instantiation of the process run). This column
will be populated as the value of processInstanceName API field
(SFOData.EMMonitoredProcess).
Process Identifier “processDefinitionId” (number or UUID) uniquely identifies that process definition
within the system. Example: ID of the Integration Flow in Cloud Integration. The
column 'Process Identifier' in the UI shows the values populated using the
“processDefinitionId” API field (SFOData.EMMonitoredProcess).
Process Definition Name of the Integration Process. This column is populated using
Name “processDefinitionName“ API field (SFOData.EMMonitoredProcess).
Timestamp This is the time at which the first event for a particular process is sent to XM
Summary So far There is an icon for each row under this column, clicking on which shows the
'Summary so Far' for that process.
START should be the first event checkpoint for any process. It can be followed by any number of ERROR,
WARNING, INFO event checkpoints. For a long running job, SUMMARY_SO_FAR event checkpoints should
be sent at intervals. Once the process is completed, the END event checkpoint should be sent. If the process
fails due to any unknown error or exception, the FAILED event checkpoint should be sent.
25
Business errors/warnings to
business users.
FAILED Used to indicate failure of Yes This is an optional event, use this
the process Integration. only when you as a developer
When the process is specifically know the failure points
terminated due to based on the parameters or
technical failures. process run. Should be sent only
once per process run.
Process State:
SFOData.EMMonitoredProcess.ProcessState values are calculated based on the EMEventType values.
“INFO” and “SUMMARY_SO_FAR” events have no effect on the ProcessState.
State Diagram
26
Derived Process State as Meaning
shown in UI
Completed Successfully The process has completed successfully without any errors or warnings.
That is, no error or warning checkpoints had been sent for that process
Completed With Errors The process has completed with few errors in it. It might or might not have
any warnings it. A process with ‘Completed with Errors’ process state
would include processes which completed with at least one error, and it
can have warnings as well.
Completed With The process has completed with warnings. Also, this means that the
Warnings process doesn’t have any errors in it. A process with process state
‘Completed with Warnings’ can only have warnings in it but no errors.
Failed The process has failed. For example, if scheduler goes down while
executing a job/process, the process is said to have ‘Failed’
Unknown If the START event checkpoint has not been sent, the state of the process
is ‘Unknown
Note:
• Integration Center jobs monitoring by default is done using the XM dashoard.
• Please refer to the following SAP Blogs for detailed understanding on the integration process
development using the XM APIs in Cloud Integration.
CLOUD INTEGRATION and SAP SuccessFactors Monitoring EP01: The one with the Execution
Manager Dashboard | SAP Blogs , CLOUD INTEGRATION and SAP SuccessFactors Monitoring
EP02: The one where CLOUD INTEGRATION writes logs to Execution Manager | SAP Blogs
27
Some examples of such scenarios:
• Missing data in mandatory fields
• Inactive value taken for some field
• Incorrect code assigned for some data
• Events/changes made to terminated/inactive employees effective before the hiring date etc.
All these errors give rise to exceptions on the record level that is part of payload. This may or may not cause
the whole process to halt. It is best recommended to weed out the erroneous record, log it and update it in
Execution Manager or employ the confirmation process to mark these employee records as failed within
SuccessFactors.
If the error reason is assigned to the employee via the confirmation process then the admin can go into the
employees’ profile and correct the data.
It is advised to replicate the failed process again via an ad hoc run or correcting the data in SuccessFactors
and waiting for the system to pick the updated records up and sending it to integration.
Note: Cloud Integration(CPI): Customizing Email using Mail Adapter | SAP Blogs
Integration Scenario:
Source system is SAP SuccessFactors EC
Target system is a 3rd party time system
Business Need: Timesheet approver role needs to be assigned to the manager in real time.
API Used: CompoundEmployee API for replicating data from SAP SuccessFactors EC to 3rd party system
Logic used for assigning the timesheet role: Based on the direct_reports field value, if it is greater than
“0“ then the supervisor is assigned “Timesheet approver“ role
Delta load: As the supervisor changed for the employee, last modified time will be changed and Employee
will be picked up in the next replication.
Problem: direct_reports field is stored in the “USERS_SYS_INFO“ table and thus employment information is
not affected. Hence, the newly promoted manager data will not be having a last modified date with respect to
EC tables. Hence, CompoundEmployee API will not be able to detect the changes and replicate the
manager to target system (Reference - Support of Specific Attributes - SAP Help Portal)
28
Events relevant to this scenario: Individual Contributor to Manager / First Time Manager
Solution: Thus, event based approach becomes a need more than a solution in this scenario.
Dependency: HRIS Sync (Human Resource Information System (HRIS) Synchronization) should be
configured in the SAP SuccessFactors system. This is a pre-requisite for the solution to work
Note:
• For more details on Intelligent Service Center events please refer to the Implementation Guide here
• For details on SAP Enterprise Messaging basics, please refer to the blog here
• Business Rules when attached to the Entity in Manage Business Configuration, should always be
saved with “OnPostSave” as the trigger type.
• Sample Implementation – Click Here
8 REFERENCES
• SAP SuccessFactors Integration: Migrating SAP SuccessFactors API calls from Basic
Authentication to oAuth2.0
• Employee Central Core Hybrid: Handling Employee Identifiers
• SAP SuccessFactors Integration: Best Practices using SAP SuccessFactors APIs for Custom
Integrations
• SAP SuccessFactors Integration: Integration Center and Cloud Integration
29
Implementation Design Principle
www.sap.com/contactsap
The information contained herein may be changed without prior notice. Some software products marketed by SAP SE and its distributors contain proprietary software components of other software vendors.
National product specifications may vary.
These materials are provided by SAP SE or an SAP affiliate company for informational purposes only, without representation or warranty of any kind, and SAP or its affiliated companies shall not be liable
for errors or omissions with respect to the materials. The only warranties for SAP or SAP affiliate company products and services are those that are set forth in the express warranty statements
accompanying such products and services, if any. Nothing herein should be construed as constituting an additional warranty.
In particular, SAP SE or its affiliated companies have no obligation to pursue any course of business outlined in this document or any related presentation, or to develop or release any functionality
mentioned therein. This document, or any related presentation, and SAP SE’s or its affiliated companies’ strategy and possible future developments, products, and/or platform directions and functionality are
all subject to change and may be changed by SAP SE or its affiliated companies at any time for any reason without notice. The information in this document is not a commitment, promise, or legal obligation
to deliver any material, code, or functionality. All forward-looking statements are subject to various risks and uncertainties that could cause actual results to differ materially from expectations. Readers are
cautioned not to place undue reliance on these forward-looking statements, and they should not be relied upon in making purchasing decisions.
SAP and other SAP products and services mentioned herein as well as their respective logos are trademarks or registered trademarks of SAP SE (or an SAP affiliate company) in Germany and other
countries. All other product and service names mentioned are the trademarks of their respective companies. See www.sap.com/copyright for additional trademark information and notices.