Home / Case Studies / JD Edwards to SAP SuccessFactors
    CASE STUDY · HCM DATA MIGRATION · US LOCAL GOVERNMENT

    Oracle JD Edwards to SAP SuccessFactors HCM Migration for a US Local Government

    A US local government organisation moved its workforce data off Oracle JD Edwards onto SAP SuccessFactors. Syntra ETL owned the migration lifecycle end to end — source discovery and profiling, source-to-target mapping, transformation, validation, reconciliation and the final production load — run across three structured cycles over roughly six months, so the migration was rehearsed twice before anything touched production.

    6 months
    Discovery to production cutover
    3
    Migration cycles (PPR1, PPR2, production)
    6
    Workforce data domains in scope
    3-way
    Source, prepared and loaded reconciliation

    The challenge: a public-sector HCM migration that has to be auditable

    Moving an HR system is not really a software problem. The employee record is the payroll record, the org chart, the manager relationship and the compliance file all at once — and in local government it is also a public record. Getting it wrong is not a data-quality issue, it is a payroll issue and an audit issue.

    Oracle JD Edwards and SAP SuccessFactors model that information very differently. JDE holds legacy codes, effective-dated structures and organisational values accumulated over years of operation; SuccessFactors expects its own objects, its own reference values and its own validation rules. Every legacy code has to be crosswalked, every date sequence has to survive the move, and every manager has to exist in the target before the employee who reports to them can be loaded.

    The other constraint was the implementation timeline. The migration could not become the thing that delayed the SuccessFactors go-live, which meant the process had to be repeatable — run once, correct, run again, and prove readiness before the production window opened.

    Challenges we solved

    A JDE-to-SuccessFactors migration for a government employer has to be exact about codes, dates, hierarchy and access.

    🔎

    Finding the authoritative source

    JDE estates accumulate extracts, copies and shadow reports. The first job was identifying the authoritative JDE tables and extracts, confirming data ownership, and agreeing the employee population and the active/inactive worker rules before a single record moved.

    🧮

    Legacy data quality, found early not late

    Profiling surfaced nulls, duplicates, invalid dates, orphaned records, inconsistent organisational values and historical employee identifiers — before the first load, where they are cheap to fix, rather than during cutover, where they are not.

    🔄

    Crosswalking legacy codes

    Business units, legal entities, jobs, positions, locations, departments, cost centres and pay status all had to be converted from JDE values to approved SuccessFactors values, with the mapping reviewed and approved jointly before production.

    📅

    Effective dating and record sequencing

    Historical job changes, transfers, position changes, manager changes and compensation changes only mean anything in order. Start dates, end dates, overlapping records and chronological sequencing were validated as a category of their own.

    👥

    Referential integrity in the target

    SuccessFactors rejects an employee whose manager, position, department, job classification or location does not yet exist. Load order and pre-load referential checks were built into the process rather than discovered through load errors.

    🔒

    Government-grade controls

    Role-based access, controlled extracts, encryption in transit and at rest, sensitive-data handling, a migration audit trail, mapping version control and formal per-cycle sign-off — treated as requirements, not options.

    The Syntra ETL controlled migration method

    One repeatable pipeline, run three times. Traceability is maintained from the original JD Edwards source record through transformation and into SuccessFactors.

    JD EdwardsExtractProfileStageMapTransformValidateGenerate SF load filesLoadReconcileException resolutionSign-off

    What was migrated

    Scope was agreed during discovery against the SuccessFactors modules being implemented and the historical-data requirements set by the customer.

    Employee / worker data

    • Employee ID / personnel number
    • Name and preferred name
    • Date of birth, gender
    • Contact information, address, email, phone
    • National identifiers where applicable
    • Employment status
    • Hire, rehire and termination dates

    Employment & job information

    • Company / legal entity
    • Business unit, department, division
    • Location
    • Job and position
    • Employee class, employment type
    • Full-time / part-time status
    • Supervisor / manager
    • FTE, standard hours, work schedule
    • Pay group

    Organisational data

    • Departments
    • Locations
    • Business units
    • Cost centres
    • Jobs and positions
    • Reporting relationships
    • Organisational hierarchy

    Compensation

    • Base salary
    • Salary basis
    • Pay frequency
    • Compensation history
    • Allowances
    • Pay components
    • Effective dates

    Personal / biographical

    • Personal information
    • Addresses
    • Emergency contacts
    • Dependants
    • Citizenship
    • Identification information

    Employment history

    • Historical job changes
    • Department transfers
    • Position changes
    • Manager changes
    • Compensation changes
    • Employment-status changes

    Getting workforce data out of JD Edwards

    JD Edwards stores HR data in a way that pre-dates every convention a modern HCM platform assumes. Four characteristics drive most of the extraction design.

    F060116 — Employee MasterThe employee master in JD Edwards EnterpriseOne. It holds the employment record, but not the person: name and contact details live separately, so the extract has to join across before it has anything resembling a SuccessFactors worker.
    F0101 — Address Book Master / AN8JD Edwards models an employee as an Address Book entity. The Address Book Number (AN8) is the spine that connects the employee master, the person record and the organisational assignment. Lose AN8 and the record set falls apart.
    F0005 — User Defined Codes (UDC)Almost every meaningful value in JDE — employment status, pay status, job type, employee class — is a UDC, stored as a short code against a product code and code type. UDCs are site-specific by design, so they cannot be assumed and must be extracted as reference data in their own right, then crosswalked to SuccessFactors picklist values.
    F0006 / F0010 — Business Unit Master, Company ConstantsThe organisational skeleton. Business units and companies here become SuccessFactors Foundation Objects, and they have to exist in the target before any worker can be assigned to them.
    Julian dates — CYYDDDJD Edwards stores dates as a century-year-day-of-year integer, not a date type. Every hire, rehire, termination and effective date needs converting before SuccessFactors will accept it, and the conversion has to be right about the century digit or a 1998 hire date silently becomes 2098.
    Blank vs. null vs. zeroLegacy JDE data distinguishes poorly between an unset value, a blank and a zero. What SuccessFactors treats as a mandatory-field violation is often a legacy default that meant "not applicable" thirty years ago — which is why profiling runs before mapping, not after.

    How SuccessFactors Employee Central accepts data

    Employee Central is effective-dated and heavily referential. It will reject a worker whose department, position, job classification or manager does not already exist, which makes load order part of the design rather than an implementation detail.

    1. 1Foundation ObjectsLegal Entity, Business Unit, Division, Department, Location, Job Classification, Pay Group and Cost Center. Everything else references these, so they load first and nothing downstream can succeed until they are correct.
    2. 2PositionsWhere position management is in scope, positions must exist before a worker can be assigned to one. Position-to-position reporting is also established at this stage.
    3. 3Basic user informationThe user record itself — Person ID External and User ID. This is where the JD Edwards employee number is either retained or cross-referenced, and that decision determines whether history can be traced back to the source afterwards.
    4. 4Biographical and personal informationName, date of birth, gender, national identifiers, addresses, contact details, emergency contacts and dependants. Country-specific field requirements apply here.
    5. 5Employment informationThe employment relationship: hire date, rehire date, termination date and employment status, which anchor every dated record that follows.
    6. 6Job history (job_info)The effective-dated heart of Employee Central. Every job change, transfer, position change, manager change and status change is a dated row. They must be chronologically sequenced and non-overlapping, and each one must reference Foundation Objects that already exist.
    7. 7Manager assignmentSelf-referential: a worker's manager is another worker. Either the hierarchy is loaded in dependency order, or managers are assigned in a second pass once the full population exists.
    8. 8CompensationBase salary, salary basis, pay frequency, pay components and allowances — effective-dated in the same way as job history, and validated against the Pay Group Foundation Object.

    This dependency chain is the reason the programme ran two full rehearsal cycles. A referential failure at step 6 is usually caused by a mapping decision made at step 1, and the only way to find that cheaply is to run the whole sequence end to end before the production window.

    Source-to-target mapping

    A mapping workbook carried every field from JD Edwards through its transformation rule to the SuccessFactors target object and field. It was reviewed and approved jointly before the production migration.

    JD Edwards sourceTransformationSuccessFactors target
    Employee NumberRetain / cross-referencePerson ID / User ID
    Business UnitMap to approved valuesBusiness Unit
    Home CompanyMap to legal entityCompany
    Job TypeCrosswalkJob Classification
    Supervisor IDValidate manager existsManager
    Pay StatusConvert to SuccessFactors statusEmployment Status
    Location CodeCrosswalkLocation

    Three cycles, not one migration

    The migration was rehearsed twice at full scale before the production window. Each cycle ran the same pipeline and produced its own reconciliation report.

    Cycle 1 — PPR 1

    • Validate JDE extraction
    • Validate source-to-target mappings
    • Execute initial transformations
    • Generate SuccessFactors load files
    • First target load
    • Identify SuccessFactors validation errors
    • Identify data-quality issues
    • Initial reconciliation
    • Capture business feedback

    Cycle 2 — PPR 2

    • Incorporate PPR1 corrections
    • Re-extract updated source data
    • Apply approved mappings
    • Re-run transformations
    • Validate corrected records
    • Second full migration
    • Reduce migration exceptions
    • Detailed reconciliation
    • Establish production readiness

    Cycle 3 — production load

    • Final agreed JDE extract
    • Delta / final-change capture
    • Data-freeze coordination
    • Final transformation
    • Pre-load validation
    • Production file generation
    • Production load
    • Error correction and reprocessing
    • Final reconciliation
    • Business validation and sign-off

    Proving the migration was correct

    Reconciliation ran for every cycle, at three levels, with every discrepancy categorised so the customer could approve the migration on evidence rather than assertion.

    Record counts

    • JDE employee count
    • = Syntra ETL prepared count
    • = SuccessFactors loaded count
    • subject to agreed exclusions

    Business totals

    • By legal entity
    • By department
    • By location
    • By employee status
    • By employee type
    • By job
    • By pay group

    Field-level validation

    • Employee ID
    • Hire date
    • Department
    • Job
    • Position
    • Manager
    • Location
    • Employment status

    Exception categories

    • Expected transformation
    • Approved exclusion
    • Source-data issue
    • Mapping issue
    • Load error
    • Target configuration issue

    What the organisation got

    Measured against the success criteria agreed at the start of the engagement.

    All agreed JD Edwards objects processed through the migration pipeline.
    Required SuccessFactors records loaded, with validation errors resolved between cycles.
    Reconciliation met the agreed thresholds at record-count, business-total and field level.
    Critical employee and organisational attributes validated against the source.
    Outstanding exceptions documented and formally approved rather than silently dropped.
    PPR2 demonstrated production readiness before the cutover window opened.
    Final production migration completed within the agreed cutover window, with customer acceptance.
    Complete migration audit and reconciliation evidence handed over for public-sector audit.

    Frequently asked questions

    Can Syntra ETL migrate JD Edwards data into SAP SuccessFactors?
    Yes. This engagement covered the full lifecycle — JDE extraction, profiling, source-to-target mapping, transformation, validation, SuccessFactors load-file generation, loading, reconciliation and exception resolution — across three migration cycles.
    How long does a JD Edwards to SuccessFactors migration take?
    This programme ran to approximately six months from discovery through to production cutover, structured as discovery and assessment, mapping and build, a first rehearsal cycle, remediation, a second rehearsal cycle and the production load. Duration depends on the SuccessFactors modules in scope and how much history has to move.
    Why run two rehearsal cycles before production?
    The first pre-production rehearsal is where the largest number of mapping and data-quality corrections surface. The second applies those corrections and is intended to closely replicate the production migration, so production readiness is demonstrated rather than assumed.
    How is the migration reconciled?
    At three levels for every cycle: record counts across source, prepared and loaded data; business totals by legal entity, department, location, status, type, job and pay group; and field-level comparison of critical attributes. Every discrepancy is categorised, which gives a complete audit trail for migration approval.
    What historical workforce data can be migrated?
    Where required, historical job changes, department transfers, position changes, manager changes, compensation changes and employment-status changes. Effective dating and chronological sequencing are validated as part of the process.
    Is this approach suitable for public-sector employers?
    It was designed for one. Role-based access, controlled data extracts, encryption in transit and at rest, sensitive-data handling, a full migration audit trail, source-to-target traceability, mapping version control and formal cycle sign-off were built into the engagement.
    Which JD Edwards tables hold the data for an HCM migration?
    An HR extract typically centres on the employee master (F060116) joined to the Address Book master (F0101) through the Address Book Number, with organisational structure from the Business Unit Master (F0006) and Company Constants (F0010), and reference values from the User Defined Codes table (F0005). The exact set depends on the modules in use and on how the estate has been configured.
    How are JD Edwards Julian dates converted for SuccessFactors?
    JD Edwards stores dates as CYYDDD — a century digit, two year digits and the day of the year. Each one is converted to a calendar date during transformation. The century digit matters: handled carelessly it shifts historical hire dates by a hundred years, which is why date conversion is validated as its own category rather than assumed.
    How are JD Edwards UDC values mapped to SuccessFactors?
    User Defined Codes are site-specific, so they are extracted as reference data and crosswalked explicitly to SuccessFactors picklist values and Foundation Objects. The crosswalk is held in the mapping workbook, reviewed and approved by the business, and applied identically across every migration cycle.
    What order does data have to load into Employee Central?
    Foundation Objects, then positions, then basic user information, then biographical and personal data, then employment information, then effective-dated job history, then manager assignment, then compensation. Employee Central rejects a worker whose referenced objects do not yet exist, so the sequence is part of the migration design.

    Moving off JD Edwards?

    Whether the target is SAP SuccessFactors, Oracle Fusion or Workday, tell us your source system, the modules in scope and your cutover date.