As part of HR DQ project, we have developed the below Talend jobs which gets the data from SuccessFactor tables and ingest data into the respective STG/ODS tables. We are following the DataOcean standard jobs.
| Talend Job name | SuccessFactor Table name | Talend project | GCP Project | STG Table | ODS table |
| F010_SAP_SF_EmpJob_SAP_SF_to_ODS | EmpJob | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_D_EmpJob | ODS_SFC_0000_F001_F_D_EmpJob |
| F009_SAP_SF_EmpEmployment_SAP_SF_to_ODS | EmpEmployment | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_D_EmpEmployment | ODS_SFC_0000_F001_F_D_EmpEmployment |
| F005_SAP_SF_EmpEmploymentTermination_SAP_SF_to_ODS | EmpEmploymentTermination | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_D_EmpEmploymentTermination | ODS_SFC_0000_F001_F_D_EmpEmploymentTermination |
| F006_SAP_SF_EmpPayCompRecurring_SAP_SF_to_ODS | EmpPayCompRecurring | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_D_EmpPayCompRecurring | ODS_SFC_0000_F001_F_D_EmpPayCompRecurring |
| F007_SAP_SF_EmpCompensation_SAP_SF_to_ODS | EmpCompensation | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_W_EmpCompensation | ODS_SFC_0000_F001_F_W_EmpCompensation |
| F008_SAP_SF_FOPayComponent_SAP_SF_to_ODS | FOPayComponent | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_D_FOPayComponent | ODS_SFC_0000_F001_F_D_FOPayComponent |
| F004_SAP_SF_EmpJobRelationships_SAP_SF_to_ODS | EmpJobRelationships | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_D_EmpJobRelationships | ODS_SFC_0000_F001_F_D_EmpJobRelationships |
| F001_SAP_SF_PerEmail_SAP_SF_to_ODS | PerEmail | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_D_PerEmail | ODS_SFC_0000_F001_F_D_PerEmail |
| F002_SAP_SF_PerPersonal_SAP_SF_to_ODS | PerPerson | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_D_PerPerson | ODS_SFC_0000_F001_F_D_PerPerson |
| F003_SAP_SF_PerPerson_SAP_SF_to_ODS | PerPersonal | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_D_PerPersonal | ODS_SFC_0000_F001_F_D_PerPersonal |
| F011_SAP_SF_FOEventReason_csv_to_GCS | FOEventReason | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_W_FOEventReason | ODS_SFC_0000_F001_F_W_FOEventReason |
| F012_SAP_SF_UserAccount_csv_to_GCS | UserAccount | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_W_UserAccount | ODS_SFC_0000_F001_F_W_UserAccount |
| F014_SAP_FOLocationGroup_SAP_SF_to_ODS | FOLocationGroup | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_W_FOLocationGroup | ODS_SFC_0000_F001_F_W_FOLocationGroup |
| F015_SAP_FOCompany_SAP_SF_to_ODS | FOCompany | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_W_FOCompany | ODS_SFC_0000_F001_F_W_FOCompany |
| F016_SAP_FOCostCenter_SAP_SF_to_ODS | FOCostCenter | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_W_FOCostCenter | ODS_SFC_0000_F001_F_W_FOCostCenter |
| F017_SAP_FOBusinessUnit_SAP_SF_to_ODS | FOBusinessUnit | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_W_FOBusinessUnit | ODS_SFC_0000_F001_F_W_FOBusinessUnit |
| F018_SAP_PickListValueV2_SAP_SF_to_ODS | PickListValueV2 | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_W_PickListValueV2 | ODS_SFC_0000_F001_F_W_PickListValueV2 |
| F019_SAP_Position_SAP_SF_to_ODS | Position | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_W_Position | ODS_SFC_0000_F001_F_W_Position |
| F020_SAP_EmpWorkPermit_SAP_SF_to_ODS | EmpWorkPermit | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_W_EmpWorkPermit | ODS_SFC_0000_F001_F_W_EmpWorkPermit |
| F021_SAP_FOLocation_SAP_SF_to_ODS | FOLocation | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_W_FOLocation | ODS_SFC_0000_F001_F_W_FOLocation |
| F012_SAP_User_SAP_SF_to_ODS | User | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_W_User | ODS_SFC_0000_F001_F_W_User |
| F022_SAP_empCompensationGroupSumCalculatedNav_SAP_SF_to_ODS | empCompensationGroupSumCalculatedNav | DATA_OCEAN_DOMAIN_HR | prj-data-dm-hr-prod | STG_SFC_0000_0000_F001_F_W_empCompensationGroupSumCalculatedNav | ODS_SFC_0000_F001_F_W_empCompensationGroupSumCalculatedNav |
Talend flow explanation
![]()
Main Flow

We are following the DataOcean standard Jobs except the J001* (SuccessFactor Rest API) job which is explained below

The above job invokes the SuccessFactor Rest API (by passing the username / password) to extract the data. Below are the main SuccessFactor parameters which are getting used while extraction, these parameters are common to all the SuccessFactor jobs.
l_VAR_SAP_SF_ENV : This parameter will contain DEV / PROD as the value, this is to mask the confidential information. If its DEV then the column will get populated with "" in the BQ tables, if PROD then it will have the source value in the target BQ.
l_VAR_SAP_SF_LIMIT : This parameter is used to manage the number of records per iteration
l_VAR_SAP_SF_URL : This parameter is used to hold the SuccessFactore REST API URL
l_VAR_SAP_SF_PASSWORD : This parameter is used to store the password required to invoke the API
l_VAR_SAP_SF_USERNAME : This parameter is used to store the username required to invoke the API
Possibilities for the Talend job failure
As this is a full extract job and we are not doing any transformation (its 1:1 mapping), so the possibilities of failure could be one of the below
Once the issue is fixed, we can rerun the job from start and it will create the file again and load the data and there will be no loss of data.
******************************************************************************************************************************************************************************************
Data Validation/Troubleshoot queries
Data Validation:
<Provide the SQL queries to validate the data or the record count in the BQ target tables>
Logging:
<Details about the log tables in Big query>
Troubleshoot steps:
<Provide the steps to debug the ETL flow in case of failure. For example, if an ETL job fails, how should we trigger it? Can we directly rerun the job, or are there steps to delete the data from the previous execution before rerunning the job? or any change should be made in the context table for date executions>
As part of HR DQ project, we have developed the below Talend jobs about running some data quality validation queries and writing the results in Google Drive files.
| Talend Job Name | Talend Project | GCP Project | |
|---|---|---|---|
| F001_BQ_to_Gsheet_Drive_Selfservice 0.1 | DATA_OCEAN_DOMAIN_HR | prj-data-dq-selfservice-dev | |
| J001_BQ_to_Gsheet_Drive_Selfservice 1.1 | DATA_OCEAN_DOMAIN_HR | prj-data-dq-selfservice-dev |
This job uses data quality queries stored in prj-data-dq-selfservice-dev.DM.Dataplex_quality table and
`prj-data-dq-selfservice-dev.DataOcean_dataquality_kpi` schema.
The data quality quality executed queries are materialized in Google Drive Failed Records folder.



This job points to J001_BQ_to_Gsheet_Drive_SelfService job, which has all the detailed business rules.
P1

P2
