SAP SuccessFactors foundation object sync

SAPSF ObjectSync

Production-grade utility to synchronise SAP SuccessFactors Organisational Management foundation objects from a source tenant to a lower target tenant through OData v2.

5object levels supported
3auth modes
2interfaces: CLI + web UI
1audit trail per run

Architecture - how sync works

Every sync run follows the same safe path: resolve ancestors, dry-run preview, review reports, then optionally apply.

Source PRD
OData v2 read
Dry-Run Engine
Resolve + compare
Target Dev
OData upsert
Before writes
Excel report
Audit trail
Run log
Rollback data
Pre-sync snapshot

Dry-run first - see what will change before anything writes

Every run defaults to dry-run mode. You see the full sync preview, changes, and reports before a single record is touched on the target tenant.

Example dry-run output

$ python -m src.sync_engine --file input.xlsx --dry-run === DRY RUN (no writes) === Source: PRD (prod-api.sap.com) Target: Dev (dev-api.sap.com) Resolving hierarchy for: UK HR Ops (Sub Department) Sub Department: UK HR Ops Department: UK HR Central Division: UK Human Resources Business Unit: UK Corporate Legal Entity: UK Ltd (GB01) Objects to sync: 5 CREATE Sub Department UK HR Ops (missing on target) UPDATE Department UK HR Central (name differs) UPDATE Division UK Human Resources (status changed) SKIP Business Unit UK Corporate (identical) SKIP Legal Entity UK Ltd (identical) Changes: 3 (2 UPDATE, 1 CREATE) Skips: 2 (no change needed) Reports written to: output/sync_report_20260515_143002.xlsx output/sync_20260515_143002.log # Dry-run succeeded. Review reports, then re-run with --no-dry-run to apply.

What you get

  • Object-by-object preview - see exactly which records will be created, updated, or skipped
  • Change detail - which fields differ between source and target
  • Excel report - downloadable workbook with colour-coded rows and summary sheets
  • Audit log - timestamped, append-only run log with all decisions
  • Zero risk - no writes happen in dry-run mode. Guaranteed.

Object coverage matrix

Foundation objects supported for sync, with OData entities, dependencies, and operational notes.

LevelCanonical NameOData Entity SetDependenciesCreateUpdateRisk notes
5Sub Departmentcust_SubDepartmentDepartment must exist on targetYESYESCustom object; entity set name varies by tenant
4DepartmentFODepartmentDivision must exist on targetYESYESStandard FO; name and status fields tracked
3DivisionFODivisionBusiness Unit must exist; Division-BU junction must alignYESYESJunction table sync required for BU linkage
2Business UnitFOBusinessUnitLegal Entity must exist; BU-LE junction must alignDRY-RUNYESCreate via API requires careful parent resolution
1Legal EntityFOCompanyNone (leaf-level; no parent FO)DRY-RUNYESRarely synced; typically exists in all tenants already

🛡 Safety checklist - before, during, and after a sync

These steps are built into the tool's workflow. Follow them for every sync run.

Before sync

  • Verify target tenant is a lower environment (Dev/Test), never PRD
  • Confirm source and target credentials in .env are correct
  • Run --dry-run first and review the Excel report
  • Check the run log for any unexpected SKIP or ERROR lines
  • Validate ancestor resolution is correct for all input rows

During sync

  • Monitor the live log output for CREATE/UPDATE confirmations
  • Watch for HTTP errors or OData validation failures mid-run
  • If a mid-sync error occurs, the tool stops and logs the failure point
  • Partial syncs are logged; you can resume or roll back

After sync

  • Open the Excel report and confirm all rows are green (synced)
  • Spot-check 2-3 objects on the target tenant via SF UI
  • Archive the run log and Excel report for audit evidence
  • Run the PIC (Position Integrity Checker) if positions reference these objects

If you need to roll back

  • Use the pre-sync snapshot data from the log to identify affected records
  • For UPDATEs: the old values are recorded in the run log
  • For CREATEs: delete the newly created object via SF UI or OData
  • Re-run ObjectSync with the original target data or restore from SF backup
  • Always test rollback in Dev before attempting in Test

When to use it

Post-PRD change

  • PRD foundation objects were updated
  • Dev environments need the same structure
  • Manual copy would be slow and error-prone

Pre-release alignment

  • Align Dev structure to PRD before testing
  • Ensure test scenarios use current hierarchy
  • Catch missing objects before configuration build

Consultant onboarding

  • New team member needs representative Dev data
  • Seed a fresh Dev tenant with current structure
  • Reduce setup time from hours to minutes

SAP SuccessFactors toolkit

This tool is part of the SF Compass consulting suite.