HR to ERP
Personio to Oracle Fusion ERP integration: Personio employments as workers with expense account and approver
With an integration between Personio and Oracle Fusion ERP, every employment from Personio becomes a worker in Oracle, under the right legal employer, with manager and a default expense account from the cost centre. A new colleague can therefore submit and approve expenses in Oracle from day one, and a termination in Personio ends the work relationship in Oracle.
What the integration does
Organisations that use Personio as their HR system and Oracle Fusion Cloud ERP for finance, purchasing and expenses do need workers in Oracle but have no Oracle HCM. Finance then enters those workers with spreadsheets, and anyone who arrives without an expense account cannot submit their first expense report.
- Personio reports a changed employment; KoppelHet fetches the employment with cost centres and manager.
- KoppelHet builds the expense account from legal entity and cost centre and checks it against finance's list.
- The changes go to Oracle as an HCM Data Loader file, with the Personio IDs as source key.
- KoppelHet requests the load status and puts rejected lines on the error list.
- On a termination the work relationship is ended on the last working day.
What to watch for with Personio and Oracle Fusion ERP
- Personio can split an employment over several cost centres, each with a weight. Oracle has one default expense account on the assignment. KoppelHet takes the cost centre with the highest weight, and lists an equal split for finance instead of choosing itself.
- Personio distinguishes internal and external employments. Oracle records per work relationship whether someone is an employee or a contingent worker. KoppelHet loads an external employment as contingent worker, so contractors can submit expenses in Oracle but do not count with own employees in reports.
- Personio records a move to another entity as a termination with the type company switch. Oracle does not allow a termination and a global transfer on the same work relationship at the same time. KoppelHet therefore ends the old work relationship and loads the new employment as a separate work relationship under the new legal employer, starting the next day.
- Oracle recognises records by a source key, and its owner must exist beforehand as a value in the HRC_SOURCE_SYSTEM_OWNER lookup. KoppelHet uses the person and employment IDs from Personio as source key, so a second employment of the same person becomes a second work relationship and not a duplicate person.
- Personio has a range of termination types, such as resignation, dismissal by the employer, retirement and an expiring contract. Oracle asks for an action code on a termination and can record a reason. KoppelHet converts the type from Personio with a table into the action and reason codes set up in Oracle, so turnover reports in Oracle stay usable.
- If a termination in Personio is reversed after Oracle has already processed it, Oracle has a separate flag to undo the termination. KoppelHet compares the terminations in Personio with what has been loaded every run and sends that reversal in that case, so the worker becomes active again with the same assignment.
How we build and run it
- The integration runs on the KoppelHet platform, hosted in a data centre in the EU.
- Every sync and every error is visible in the functional log; on an error your administrator is notified.
- A change that cannot go through is not half-applied but queued for another attempt.
- KoppelHet is ISO 27001 certified. Data travels encrypted and stays on the platform no longer than needed.
- After go-live we manage the integration and adjust it when your process changes.
- The integration fits next to your existing integration layer. Only the fields in the design are transferred; the platform keeps no register of its own.
Implementation and price
This is not an app you switch on. We build the integration for your organisation on our platform, with building blocks we reuse on every project. So it is custom work that does not start from scratch.
A consultant prepares the intake and analyses both systems. We then record the mapping and exceptions field by field, test in the test or acceptance environment and go live at a moment you choose. Costs are a one-off amount for the setup and a monthly amount for platform, monitoring and support.
Frequently asked questions
Do we need Oracle HCM?
No. Oracle Fusion ERP uses its own worker data for expenses and approvals. This integration fills that from Personio.
Does the payroll journal also go through this integration?
No. This integration keeps workers current. A journal from payroll to Oracle is a separate flow that can be added later as an extension.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- Personio through webhooks (employment.created, employment.updated, employment.updated.cost-centers, employment.terminated; IDs only, acknowledge within 3 seconds, HMAC-SHA256 signature) and GET /v2/persons/{person_id}/employments (type INTERNAL or EXTERNAL, legal_entity, supervisor, org_units, cost_centers with weight, termination with termination_date, last_working_day and type, including SUB_COMPANY_SWITCH).
- Oracle through HCM Data Loader (Worker.dat) - components Worker, PersonName, PersonEmail, WorkRelationship (LegalEmployerName, WorkerType, TerminateWorkRelationshipFlag, ActualTerminationDate, ActionCode, ReasonCode, ReverseTerminationFlag), WorkTerms, Assignment (BusinessUnitId, DepartmentName, DefaultExpenseAccount as concatenated segments) and AssignmentSupervisor, with SourceSystemOwner from HRC_SOURCE_SYSTEM_OWNER and SourceSystemId. Terminate and GlobalTransferFlag not together on one work relationship.
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in Personio | Field in Oracle Fusion ERP | Notes |
|---|---|---|
employment.id | SourceSystemId (WorkRelationship, WorkTerms, Assignment) | |
person: voornaam, achternaam, e-mail | PersonName en PersonEmail | |
legal_entity.id | LegalEmployerName en BusinessUnitId | Lookup table |
type (INTERNAL, EXTERNAL) | WorkerType E of C | |
cost_centers (hoogste weight) | DefaultExpenseAccount | Segments with the chart of accounts separator |
org_units (type department) | DepartmentName | |
supervisor.id | AssignmentSupervisor | |
termination.last_working_day en type | ActualTerminationDate, ActionCode en ReasonCode |
Related
Ashby → Personio
Ashby to Personio integration: hires with hours and entity as new employees in Personio
Bullhorn → Personio
Bullhorn to Personio integration: placements as a person with employment in Personio
Carerix → Personio
Carerix to Personio integration: successful placement as a new employee in Personio
Greenhouse → Personio
Greenhouse to Personio integration: hired candidates as employees in Personio