Skip to main content

Audit your organization against German labor law

The Compliance tab checks your flair configuration and employee data against German labor law, such as the Working Hours Act (ArbZG), the Minimum Wage Act (MiLoG), and the Maternity Protection Act (MuSchG). This guide covers preparing the data the audit relies on, running the audit, and reviewing, exporting, and dismissing its findings.

Who can use this?

HR Admins in the flair HR app in Salesforce. The Audit, Document categories, and Legal entities tabs require the HR Manager custom permission, which Flair Manager and Flair Employee Management include. The Protected employee data tab and findings that reveal health data require the View Sensitive Compliance Findings custom permission, which only Flair Manager includes.

The audit is a starting point, not legal advice. Collective agreements and works agreements can allow rules that differ from the statutory defaults the audit checks. The rules are fixed checks in flair; no AI is involved in a finding.

Before you begin​

  • Make sure each legal entity or payroll territory has a country. The audit only checks employees who work under German law. See Set the country and minimum wage sector.
  • Classify your absence categories and your employment contract document category. Without a classification, the audit can't tell vacation from sick leave or find employment contracts, and it reports a Missing data finding instead.

Open the Compliance tab​

  1. In Salesforce, open the flair HR app.
  2. Click the Compliance tab. The Audit tab opens with the result of the last audit.

The Audit tab of the Compliance page with severity counts, filters, and findings grouped by rule

The Compliance tab has these tabs:

TabWhat you do thereWho sees it
AuditRun the audit and review its findings.HR Manager custom permission
Absence categoriesClassify each absence category, for example as vacation or sick leave.Everyone with access to the Compliance tab, including Flair Absence Manager
Document categoriesMark the category that holds signed employment contracts.HR Manager custom permission
Legal entitiesSet the country of legal entities and payroll territories, and the minimum wage sector of legal entities.HR Manager custom permission
Protected employee dataRecord disability and pregnancy data for the protected-group checks.View Sensitive Compliance Findings custom permission
Accrual policiesCreate and edit accrual policies.Everyone with access to the Compliance tab

Prepare the data the audit relies on​

Each tab under Compliance lists the records the audit reads. Change a value in the table, and then click Save. To discard your changes, click Cancel.

Classify absence categories​

  1. On the Compliance tab, click the Absence categories tab.
  2. In the Classification column of each category, select what the category is: Vacation, Sick leave, Sick child, Maternity protection, Parental leave, Special leave, Unpaid leave, Business trip (not an absence), Home office (not an absence), Training, or Other.
  3. Click Save.

The audit uses the classification to find vacation policies, unpaid sick leave, and maternity protection absences. The Paid column is read-only here.

Classify the employment contract category​

  1. On the Compliance tab, click the Document categories tab.
  2. In the Classification column of the category that holds signed employment contracts, select Employment contract.
  3. Click Save.

Archived document categories aren't listed.

Set the country and minimum wage sector​

The audit decides per employee which country's law applies. It takes the country of the employee's payroll territory first, then the country of the legal entity, and then the employee's own country. Only employees resolved to Germany are audited.

  1. On the Compliance tab, click the Legal entities tab.
  2. Under Legal entities, select a Country for each legal entity.
  3. Optional: If a legal entity is bound by a generally binding sector minimum wage, select it in Minimum wage sector.
  4. Under Payroll territories, select a Country for each payroll territory that needs one.
  5. Click Save. Each table has its own Save button, which appears once you change a value in that table.

The available sectors are Airport ground handling, Airport security, Building cleaning, Care, Electrical trades, Painting and varnishing, Roofing, and Scaffolding.

The Legal entities tab with a country and minimum wage sector for each legal entity and a country for each payroll territory

Record protected employee data​

The Protected employee data tab holds health data. It lists every employee with a degree of disability, an equal status, or an expected delivery date.

  1. On the Compliance tab, click the Protected employee data tab.
  2. To add an employee who isn't listed yet, search for them in Add employee.
  3. Enter the employee's Degree of disability, Equal status, Valid until, or Expected delivery date.
  4. Click Save.

A degree of disability of 50 or more counts as a severe disability until the Valid until date passes. Employees with Equal status also count toward the disability employment quota. Set the Expected delivery date once the employee has told you about the pregnancy; it turns on the maternity protection checks for that employee.

Run the audit​

When the Compliance audit job is scheduled, flair runs the audit every night at 03:00. The job is scheduled with the other flair jobs; you find it in HR Admin on the Scheduled Jobs tab. To check your data right away, run it yourself:

  1. On the Audit tab, click Run audit. The message The audit is running. Results appear here when it finishes. appears, and Run audit stays unavailable until the run ends.
  2. Wait for the run to finish. The tab refreshes every 10 seconds while the audit runs, and Last audit shows when the latest run completed.

The audit checks active employees whose start date has passed or isn't set. It doesn't start a second run while one is in progress.

If part of a run fails, a message under Last audit reports how many batches failed. The affected employees keep their findings from the previous audit, and no finding is removed until a run completes without errors.

Review findings​

The badges at the top count the open findings per severity:

SeverityMeaning
ViolationThe configuration or data breaks a statutory rule.
WarningThe data may break a rule, or an exception may apply that you need to check.
Missing dataThe audit can't run a check because data or a classification is missing.
InformationA statutory obligation to be aware of, such as the disability employment quota.

Findings are grouped by rule, with violations first. Each group shows the rule, a link to the law on gesetze-im-internet.de, and the number of findings.

  1. Optional: Narrow the list with the Status, Severity, and Law filters. Status shows Open findings by default.
  2. To see the affected records, click the arrow next to a group. The group expands to show the rule's explanation and a table of the affected records with the Record and Detected columns. Rules that report values add a Details column, and dismissed findings add a Note column.
  3. To open a record, click its name in the Record column. Findings about the whole configuration show Whole organisation instead.

Details shows the values the rule found, for example the number of days and the last date. Detected is the date the audit first reported the finding. A group shows up to 2,000 findings.

An expanded finding group with the rule explanation and the affected records with their details

When you fix the data behind a finding, the finding disappears after the next audit that no longer detects it.

Export findings​

  1. On the Audit tab, set the filters you want the export to follow.
  2. Click Export, and then select CSV or Excel.

The file lists each finding with its severity, law, rule, record, details, status, dismissal data, and a link to the law. An export holds up to 10,000 findings.

Dismiss or reopen a finding​

Dismiss a finding when it doesn't apply, for example because a collective agreement or works agreement allows it. A dismissed finding stays dismissed when the audit runs again.

  1. On the Audit tab, expand the group that contains the finding.
  2. In the finding's row, click the row action menu and select Dismiss.
  3. In Reason, enter why the finding doesn't apply. A reason is required.
  4. Click Dismiss.

To dismiss every open finding of a rule at once, click Dismiss all on the group, enter a Reason, and click Dismiss.

The Note column of a dismissed finding shows who dismissed it, when, and why. To see dismissed findings, set Status to Dismissed or All. To reopen one, select Reopen in its row action menu.

What the audit checks​

The audit reads time entries and worked time from the last 6 months. Rules about young people use the employee's date of birth; rules about pregnancy and disability use the data on the Protected employee data tab. Findings from the rules marked Health data are visible only to users with the View Sensitive Compliance Findings custom permission.

Working time (ArbZG)​

RuleLawSeverityWhat the audit checks
No daily limitArbZG § 3WarningThe Time Framework's time limit settings enforce no daily maximum.
Daily limit above 10 hArbZG § 3ViolationThe daily limit allows more than 10 hours.
Break rules incompleteArbZG § 4ViolationThe Time Framework's break rules don't require 30 minutes after 6 hours and 45 minutes after 9 hours.
Rest period not monitoredArbZG § 5WarningThe Time Framework doesn't monitor the daily rest period.
Rest period below 11 hArbZG § 5ViolationThe configured daily rest period is shorter than 11 hours.
Time not recordedArbZG § 16ViolationThe employee has no active workload with a Time Framework, or time tracking is skipped.
Planned day above 10 hArbZG § 3ViolationThe workload plans a day longer than 10 hours.
Planned week above 48 hArbZG § 3ViolationThe workload plans a week longer than 48 hours.
Seven-day weekArbZG § 9WarningThe workload plans work on all seven days.
Worked over 10 hArbZG § 3ViolationThe employee worked more than 10 hours on a day.
Average above 8 hArbZG § 3ViolationThe average working day (Monday to Saturday) over the last 6 months was longer than 8 hours. Only checked for employees who started at least 6 months ago.
Breaks not takenArbZG § 4ViolationTime entries are marked as not meeting the break rules.
Rest under 11 hArbZG § 5ViolationThe rest between two working days was shorter than 11 hours.

Absences and vacation (EntgFG, BUrlG)​

RuleLawSeverityWhat the audit checks
Sick leave unpaidEntgFG § 3ViolationAn absence category classified as Sick leave isn't paid.
Category not classified—Missing dataAn absence category assigned to an employee has no classification.
Vacation expires earlyBUrlG § 7WarningA vacation accrual policy lets the year's vacation expire before 31 March of the following year.
Vacation below minimumBUrlG § 3ViolationThe yearly vacation entitlement is below 24 working days on a six-day week (20 days on a five-day week), converted to the employee's working days per week.
No vacation policy—Missing dataThe employee has no active vacation accrual policy, although an absence category is classified as Vacation.

The vacation entitlement checks count day-based accrual policies and respect their workload proration. Employees with an hour-based vacation policy are skipped.

Young people (JArbSchG)​

RuleLawSeverityWhat the audit checks
Minor: planned hours too highJArbSchG § 8ViolationThe workload of an employee under 18 plans more than 8 hours a day or 40 hours a week.
Minor worked over 8 hJArbSchG § 8ViolationThe employee worked more than 8 hours on a day before turning 18.
Minor: rest under 12 hJArbSchG § 13ViolationThe rest between two working days was shorter than 12 hours before the employee turned 18.
Minor: more than 5 daysJArbSchG § 15ViolationThe workload of an employee under 18 plans more than 5 days a week.
Minor: vacation below minimumJArbSchG § 19ViolationThe vacation entitlement is below 30, 27, or 25 working days on a six-day week for employees under 16, 17, or 18 at the start of the year, converted to the employee's working days per week.
Date of birth missing—Missing dataThe employee has no date of birth, so the youth rules can't be checked.

Pay and contracts (MiLoG, AEntG, TzBfG, NachwG)​

RuleLawSeverityWhat the audit checks
Below minimum wageMiLoG § 1ViolationThe hourly rate is below the statutory minimum wage: 13.90 € from 2026 and 14.60 € from 1 January 2027.
Below sector minimum wageAEntG § 8ViolationThe hourly rate is below the minimum wage of the sector set on the legal entity, when that rate is higher than the statutory one.
Check wage exemptionMiLoG § 22WarningThe hourly rate is below the minimum wage, but the employee is a minor, an apprentice, an intern, or in a comparable training employment, so an exemption may apply.
No contracted hours—Missing dataThe active workload has no contracted hours, so a non-hourly salary can't be converted to an hourly rate.
Fixed term over 2 yearsTzBfG § 14WarningA chain of fixed-term employments lasts 2 years or longer.
Too many extensionsTzBfG § 14WarningA chain of fixed-term employments was extended more than 3 times.
Fixed term after earlier jobTzBfG § 14WarningThe fixed-term chain started after an earlier employment with the employer.
Fixed term not signed in timeTzBfG § 14WarningNo employment contract was filed before the current fixed-term employment started.
No contract category—Missing dataNo document category is classified as Employment contract.
Contract missingNachwG § 2WarningThe employee has no employment contract on file.
Contract not signedNachwG § 2WarningNone of the employee's employment contracts is signed. A contract without a sign request counts as signed outside flair.

Both NachwG rules apply only to employees who started on or after 1 August 2022 and more than a month ago. The hourly rate comes from the employee's current salary and the contracted hours of their workload. A fixed-term chain treats consecutive fixed-term employments as one when no more than 4 days lie between the end of one and the start of the next.

Protected groups (SGB IX, MuSchG)​

RuleLawSeverityWhat the audit checks
Additional leave missingSGB IX § 208Violation, Health dataA severely disabled employee doesn't get one additional week of vacation on top of the statutory minimum.
Disability quota not metSGB IX § 154Information, Health dataA legal entity with 20 or more German employees fills fewer positions with severely disabled people than required (5 %). Checked once per legal entity at the end of each run.
Work during maternity protectionMuSchG § 3Violation, Health dataThe employee worked during an approved maternity protection absence or in the 8 weeks after the expected delivery date.
Maternity protection too shortMuSchG § 3Violation, Health dataA finished maternity protection absence ends after the expected delivery date, but less than 8 weeks after it.
Pregnant: over 8.5 h a dayMuSchG § 4Violation, Health dataA pregnant employee worked more than 8.5 hours on a day.
Pregnant: over 8.5 h plannedMuSchG § 4Violation, Health dataThe workload of a pregnant employee plans more than 8.5 hours a day.
Pregnant: night workMuSchG § 5Violation, Health dataA pregnant employee worked between 20:00 and 06:00.
Pregnant: Sunday workMuSchG § 6Violation, Health dataA pregnant employee worked on a Sunday.