Case study · 02 /

Workforce & Staffing · Vreespol

Cross-border payroll integration for Vreespol.

Vreespol · Polish-Dutch staffing agency placing seasonal workers across Dutch agriculture and horticulture.


  • 5 days → 0

    Monthly payroll reconciliation eliminated

  • DATEV ↔ Salesforce

    OAuth 2.0 integration via on-premise Connect

  • Multi-wage-code

    Hours, vacation, sick leave, bonuses, deductions

Context

Vreespol places seasonal Polish workers into Dutch agriculture and horticulture at scale. Salesforce was the operational backbone: workers, assignments, timesheets, forecasts. Payroll was processed in DATEV, the de facto German payroll system, but data was being copied between systems by hand each month. The manual process broke down at scale: hundreds of workers, multiple wage codes, vacation and sick-leave accrual, transport and accommodation deductions, all needing to land in DATEV by the 5th or 6th of every month for the prior month’s payroll.

The integration had to live within Salesforce’s governor limits and account for the source-of-truth Resource object sitting inside a managed package, meaning we couldn’t change its triggers and had to architect around it.

Our role

End-to-end Salesforce delivery for the integration and the surrounding payroll automation. Architecture, custom Apex, batch jobs, and ongoing operations of the pipeline alongside Vreespol’s HR ops team.

What we delivered

  • DATEV API integration via OAuth 2.0, including Client ID and Secret handling, certificate setup, and routing through Vreespol’s on-premise DATEV Connect instance. Salesforce has no direct DATEV path, so the integration sat between Salesforce and Vreespol’s own servers.
  • Monthly payroll batch job aggregating hours, vacation, sick leave, bonuses, transport, accommodation, and group insurance from the operational forecast records and shipping them to DATEV under the correct wage codes for each category (positives and deductions handled separately).
  • Vacation accrual engine with year-rollover handling, scheduled monthly, resetting entitlements in January and carrying partial balances forward.
  • Employee master-data sync as a separate batch path: name, address, employment dates, German health-insurance fund, federal state, every field DATEV requires before payroll lines can post.
  • Managed-package workaround. The source-of-truth records lived inside a managed package, so we engineered around the package’s constraints rather than modifying it.
  • Visibility for HR ops. Status fields, last-update timestamps, and DATEV-side IDs surfaced on every record, so finance and ops could see exactly what synced and when without asking engineering.

Monthly payroll became a scheduled job, not a five-day reconciliation effort.

Outcome

New hires synced within hours instead of waiting for month-end batches. Vacation entitlements stopped drifting because the same engine that paid them also tracked their accrual. The HR ops team got a dashboard view of what had been sent to DATEV and what was pending, ending the recurring “did this go through?” support thread.

The integration ran for over a year before the engagement closed, surviving DATEV API quirks without manual intervention.

05 / Stack

  • Sales Cloud
  • Apex
  • Batch Apex
  • DATEV API
  • OAuth 2.0
  • Custom Objects
  • Resource Hero App
  • Salesforce Flow

Next

Strategic Salesforce delivery, where it matters most.

Let's build together.

Wiktor Dyngosz

Wiktor Dyngosz

Co-Founder & CEO

wiktor@nuvoteam.com

Book a 30-minute call