Skip to content
SLS (Statens Løn System)

SLS (Statens Løn System)

The SLS integration reports absence from approved timesheets to SLS, the Danish state payroll system, as absence records (FRAV) — so nobody keys sick days, vacation and leave into SLS by hand.

What it sends

  • Absence registered on activities that carry an SLS Absence Code , for employees in org units with an SLS Pay Group .
  • One record per employee, code and stretch of days — created, updated or removed in SLS as the timesheet changes.
  • Nothing before the Cut-Off Date , and nothing that is not approved yet.

The integration reads nothing from SLS. Employees are identified by their CPR number, so the CPR attribute must be filled in.

Before you start

You get the following from ØS (Økonomistyrelsen):

  • The address of the SLS webservice
  • A webservice user and its password
  • A client certificate file (.p12, .pfx or .pem) and the password protecting it
  • The pay group (løngruppe) of each institution or unit

ØS only accepts calls from network addresses it knows. mTime’s addresses are listed under IP addresses; ask ØS to allow them before the first run.

Setting it up in mTime

  1. Go to Integrations and select Statens Løn System.
  2. Enter the SLS Address and click Check connection . It opens a network connection to the address and closes it again — nothing is sent — and tells you whether SLS lets mTime in.
  3. Pick the Client certificate file and enter its Certificate password . mTime reads the certificate and its key from the file once; the file password is never stored.
  4. Enter the Webservice user and Webservice password .
  5. Under Time-Off Sync, turn on Send Time Off and set the Cut-Off Date to your go-live date. Absence before it is never sent.
  6. Turn the integration on and save.

Then tell mTime which absence to report:

  • On each org unit whose employees are in SLS, set the SLS Pay Group . It is not inherited by sub-units — set it on each unit that has employees.
  • On each time off activity that should reach SLS, set the SLS Absence Code . The dialog SLS absence codes on the integration page lists every code ØS allows, the rules it follows, and the activities under each code — you can add and remove activities right there. Activities without a code are not reported.

When absence is sent

Absence is sent when a timesheet statement is approved — or submitted, when the employment terms need no approval. The statement’s period is what is sent: every day of absence on a coded activity in that period becomes, or updates, a record in SLS.

If a statement is reopened and approved again, the difference is sent: new days are created, changed days are updated, and days that are gone are removed from SLS.

How days become records

mTime follows ØS’s rules for each code; the SLS absence codes dialog shows which rule applies to which code.

  • A full day is reported as one day. SLS caps a day at 7 hours 24 minutes (444 minutes); a longer day is sent capped, and the Integration Log row says so.
  • Two or more full days in a row on the same code are reported as one period, from the first to the last day.
  • Part of a day is reported as a single day with its minutes, for codes that take minutes.
  • Half-day codes (such as 505 and 615) are reported as a half day.
  • A running absence — sickness or leave with no end yet — is sent with an open end, and extended as each month is approved. When it ends, the record gets its end date.

A day without a working-time norm (a weekend or a holiday) is never reported.

Checking what reached SLS

Two places show it:

  • The SLS absence report — for the HR specialist: per employee and day, what is in SLS, what is still to be sent, and what needs a resync. Start there.
  • The Integration Log under Admin › Integration Log — for the administrator: one row per record, with SLS’s answer and the request sent. The CPR number is masked. A row SLS accepted with a remark (Advarsel), or where mTime cut a day to the cap, is marked with a warning.

A failed row is retried automatically for three days. After that it stays failed until a person runs the resync.

Keeping SLS in line after a setup change

Changing an activity’s SLS code or a unit’s pay group does not resend anything by itself. Run the Integration resync job for SLS: it compares what the approved timesheets say with what SLS holds and creates, updates or removes the records that differ. Run it as a dry run first — the report lists every change it would make. It also covers an employee whose absence was never sent, because the code was added after the approval.

Troubleshooting

ProblemSolution
Check connection says No answerSLS does not answer calls from addresses it does not know. Ask ØS to allow mTime’s IP addresses.
Check connection says refusedCheck the port number in the address. If it is right, SLS does not accept mTime’s network address — contact ØS.
Nothing is sentCheck that Send Time Off is on, the activity has an SLS Absence Code, the employee’s unit has an SLS Pay Group, the employee has a CPR number, the days are on or after the cut-off date, and the statement is approved.
The report shows No pay groupAbsence in that unit never reaches SLS. Set the SLS Pay Group on the unit, then run the resync.
A row failed with LukketSLS has closed the period for changes. The absence must be corrected in SLS.
A row failed with Fejl and SLS’s textSLS rejected the record — the text says why (an unknown pay group, a CPR not in SLS, a code not allowed for the employee). Fix the cause, then run the resync.
A day shows Needs resync in the reportA send or removal failed and its retries are used up. Run the Integration resync for SLS.

Next steps

Once the integration is running, see Integrations for how to turn an integration off, and the SLS absence report for the day-by-day view.