Skip to content
Back to skills

Ftrl

ASecurity

Expert knowledge of Folketrygdloven (National Insurance Act) processing in melosys-api. Use when: (1) Understanding FTRL bestemmelser (§2-5 to §2-13), (2) Debugging yrkesaktiv/ikke-yrkesaktiv/pensjonist processing flows, (3) Understanding trygdedekning options and combinations, (4) Investigating vilkår for each bestemmelse, (5) Understanding medlemskapsperiode generation logic, (6) Debugging frivillig vs pliktig membership determination.

  • 71 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 27, 2026
documentationgokotlinsqldebuggingapidocumentation

Works with

  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned May 27, 2026

npx -y skills add FDU-INS/Insurance-Skills --skill ftrl --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ftrl?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ftrl
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/fdu-ins-ftrl/badge)](https://www.skillsdirectory.com/skills/fdu-ins-ftrl)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ftrl
description: |
  Expert knowledge of Folketrygdloven (National Insurance Act) processing in melosys-api.
  Use when: (1) Understanding FTRL bestemmelser (§2-5 to §2-13),
  (2) Debugging yrkesaktiv/ikke-yrkesaktiv/pensjonist processing flows,
  (3) Understanding trygdedekning options and combinations,
  (4) Investigating vilkår for each bestemmelse,
  (5) Understanding medlemskapsperiode generation logic,
  (6) Debugging frivillig vs pliktig membership determination.
---

# Folketrygdloven (FTRL) Domain

Folketrygdloven (National Insurance Act) Chapter 2 governs membership in the Norwegian social
insurance scheme for persons outside treaty/EU contexts. This domain handles §2-1 through §2-13,
managing pliktig (mandatory) and frivillig (voluntary) membership applications.

## Quick Reference

### Domain Model Hierarchy

```
Behandlingsresultat
├── medlemskapsperioder: List<Medlemskapsperiode>
│   ├── fom/tom: LocalDate
│   ├── bestemmelse: Medlemskapsbestemmelser
│   ├── medlemskapstype: Medlemskapstyper (PLIKTIG/FRIVILLIG)
│   ├── trygdedekning: Trygdedekning
│   ├── arbeidsland: String?
│   ├── innvilgelsesresultat: Innvilgelsesresultater
│   ├── skatteforholdTilNorge: Set<SkatteforholdTilNorge>
│   ├── inntektsperioder: Set<Inntektsperiode>
│   └── trygdeavgiftsperioder: Set<Trygdeavgiftsperiode>
└── trygdeavgiftType: Trygdeavgift_typer?
```

### FTRL Bestemmelser (Paragraphs)

| Paragraph | Type | Description |
|-----------|------|-------------|
| **§2-1** | Pliktig | Bosatt i Norge - grunnregel |
| **§2-2** | Pliktig | Arbeidstaker i Norge |
| **§2-5.a-g** | Pliktig | Offentlig ansatte (statsforvaltning, forsvaret, etc.) |
| **§2-5.h** | Pliktig | Student med lån/stipend |
| **§2-6** | Pliktig | Sjømenn på norskregistrerte skip |
| **§2-7.1** | Frivillig | Opphold i Norge (ikke bosatt) |
| **§2-7.4** | Frivillig | Familiemedlemmer §2-7 |
| **§2-7a** | Frivillig | Sjømenn bosatt i Norge, utenlandsk skip |
| **§2-8.1.a** | Frivillig | Utsendt arbeidstaker |
| **§2-8.1.b** | Frivillig | Student utenlands |
| **§2-8.1.c** | Frivillig | Offentlig oppdrag/stipend |
| **§2-8.1.d** | Frivillig | Pensjonist/uføretrygdet |
| **§2-8.2** | Frivillig | Andre yrkesaktive (rimelighetsvurdering) |
| **§2-8.4** | Frivillig | Familiemedlemmer §2-8 |
| **§2-13** | Unntak | Unntak fra medlemskap |

### Behandlingstema

| Tema | Description | Bestemmelser |
|------|-------------|--------------|
| **YRKESAKTIV** | Working persons | §2-1, §2-2, §2-5, §2-6, §2-7.1, §2-7a, §2-8.1.a, §2-8.2 |
| **IKKE_YRKESAKTIV** | Non-working persons | §2-1, §2-5.h, §2-7.1, §2-7.4, §2-8.1.b, §2-8.1.c, §2-8.4 |
| **PENSJONIST** | Pensioners/disabled | §2-8.1.d |

### Trygdedekning (Coverage)

| Code | Description | Use Case |
|------|-------------|----------|
| `FULL_DEKNING` | Full coverage in folketrygden | Standard for pliktig |
| `HELSEDEL` | Health coverage only | Pensjonister utenlands |
| `UTEN_DEKNING` | No coverage | Avslag/unntak |
| `FTRL_2_9_FØRSTE_LEDD_A_HELSE` | §2-9 health only | Special cases |

### Medlemskapstype

| Type | Description |
|------|-------------|
| `PLIKTIG` | Mandatory membership - automatic by law |
| `FRIVILLIG` | Voluntary membership - by application |

## Service Layer

### FtrlBestemmelser
Location: `service/src/main/kotlin/.../ftrl/bestemmelse/FtrlBestemmelser.kt`

Defines valid FTRL bestemmelser and their properties.

### YrkesaktivBestemmelser / IkkeYrkesaktivBestemmelser / PensjonistBestemmelser
Location: `service/src/main/kotlin/.../ftrl/bestemmelse/`

Separate files defining valid bestemmelser for each behandlingstema.

### MedlemskapsperiodeService
Location: `service/src/main/kotlin/.../ftrl/medlemskapsperiode/MedlemskapsperiodeService.kt`

Key operations:
- `hentMedlemskapsperioder()` - Get periods for behandling
- `opprettMedlemskapsperiode()` - Create new period
- `oppdaterMedlemskapsperiode()` - Update existing period
- `erstattMedlemskapsperioder()` - Replace periods (ny vurdering)

### OpprettForslagMedlemskapsperiodeService
Location: `service/src/main/kotlin/.../ftrl/medlemskapsperiode/OpprettForslagMedlemskapsperiodeService.kt`

Creates suggested membership periods based on søknadsperiode and rules.

### UtledMedlemskapsperioder
Location: `service/src/main/kotlin/.../ftrl/medlemskapsperiode/UtledMedlemskapsperioder.kt`

Logic for deriving membership periods from input data.

### GyldigeTrygdedekningerService
Location: `service/src/main/kotlin/.../ftrl/GyldigeTrygdedekningerService.kt`

Returns valid trygdedekning options for given context.

### LovligeKombinasjonerTrygdedekningBestemmelse
Location: `service/src/main/kotlin/.../ftrl/bestemmelse/LovligeKombinasjonerTrygdedekningBestemmelse.kt`

Defines valid combinations of trygdedekning and bestemmelse.

## Vilkår System

### Vilkår Structure
Location: `service/src/main/kotlin/.../ftrl/bestemmelse/vilkaar/`

```
VilkårForBestemmelse (interface)
├── VilkårForBestemmelseYrkesaktiv
├── VilkårForBestemmelseIkkeYrkesaktiv
└── VilkårForBestemmelsePensjonist
```

Each bestemmelse has associated vilkår (conditions) that must be evaluated.

### AvklarteFaktaForBestemmelse
Location: `service/src/main/kotlin/.../ftrl/bestemmelse/avklartefakta/`

Defines which avklarte fakta are required for each bestemmelse.

## Processing Flows

### Yrkesaktiv Flow (§2-8)
```
┌─────────────────────┐
│ Søknad mottas       │
│ (behandlingstema:   │
│  YRKESAKTIV)        │
└─────────┬───────────┘
          │
          ▼
┌─────────────────────┐
│ Velg bestemmelse    │
│ (§2-8.1.a, §2-8.2)  │
└─────────┬───────────┘
          │
          ▼
┌─────────────────────┐
│ Avklar vilkår       │
│ (arbeidsgiver,      │
│  arbeidsland, etc.) │
└─────────┬───────────┘
          │
          ▼
┌─────────────────────┐
│ Opprett medlemskaps-│
│ periode med avgift  │
└─────────┬───────────┘
          │
          ▼
┌─────────────────────┐
│ Fatt vedtak         │
│ IVERKSETT_VEDTAK_   │
│ FTRL                │
└─────────────────────┘
```

### Pensjonist Flow (§2-8.1.d)
```
┌─────────────────────┐
│ Søknad mottas       │
│ (behandlingstema:   │
│  PENSJONIST)        │
└─────────┬───────────┘
          │
          ▼
┌─────────────────────┐
│ Bestemmelse:        │
│ §2-8.1.d automatisk │
└─────────┬───────────┘
          │
          ▼
┌─────────────────────┐
│ Trygdedekning:      │
│ HELSEDEL            │
│ (kun helsedel)      │
└─────────┬───────────┘
          │
          ▼
┌─────────────────────┐
│ Betalingsvalg:      │
│ FAKTURA/KONTONUMMER │
└─────────┬───────────┘
          │
          ▼
┌─────────────────────┐
│ Fatt vedtak         │
└─────────────────────┘
```

## Saksflyt Integration

### IVERKSETT_VEDTAK_FTRL
```
LAGRE_MEDLEMSKAPSPERIODE_MEDL →
OPPRETT_FAKTURASERIE →
AVSLUTT_SAK_OG_BEHANDLING →
SEND_MELDING_OM_VEDTAK →
RESET_ÅPNE_ÅRSAVREGNINGER
```

## Debugging Queries

### Find Medlemskapsperiode by Behandling
```sql
SELECT mp.*, br.id as br_id, b.status
FROM medlemskapsperiode mp
JOIN behandlingsresultat br ON mp.behandlingsresultat_id = br.id
JOIN behandling b ON br.behandling_id = b.id
WHERE b.id = :behandlingId;
```

### Check Bestemmelse and Dekning
```sql
SELECT mp.id, mp.fom, mp.tom,
       mp.bestemmelse, mp.trygdedekning,
       mp.medlemskapstype, mp.arbeidsland,
       mp.innvilgelsesresultat
FROM medlemskapsperiode mp
WHERE mp.behandlingsresultat_id = :behandlingsresultatId;
```

### Find FTRL Cases for Person
```sql
SELECT f.saksnummer, f.type, b.id, b.status, b.tema
FROM fagsak f
JOIN behandling b ON b.fagsak_id = f.id
WHERE f.bruker_aktor_id = :aktorId
AND f.type = 'FTRL'
ORDER BY b.registrert_dato DESC;
```

### Check MEDL Registration
```sql
SELECT mp.medl_periode_id, mp.bestemmelse, mp.fom, mp.tom
FROM medlemskapsperiode mp
WHERE mp.behandlingsresultat_id = :brId
AND mp.medl_periode_id IS NOT NULL;
```

## Common Issues

| Issue | Symptoms | Investigation |
|-------|----------|---------------|
| Wrong bestemmelse | Incorrect paragraph in vedtak | Check vilkårsvurdering flow |
| Invalid dekning | Validation error | Check LovligeKombinasjonerTrygdedekningBestemmelse |
| Period overlap | Cannot save medlemskapsperiode | Check existing periods for fagsak |
| Missing MEDL | medl_periode_id is NULL | Check LAGRE_MEDLEMSKAPSPERIODE_MEDL step |
| Avgift calculation fail | No trygdeavgiftsperiode | Verify skatteforhold and inntekt set |

## Bestemmelse Details

### §2-8 First Paragraph (Frivillig Yrkesaktiv)

**a) Utsendt arbeidstaker**
- Norwegian employer sends to work abroad
- Employer has substantial activity in Norway
- Previously subject to Norwegian legislation

**b) Student utenlands**
- Studying abroad with Norwegian loan/stipend
- Enrolled at recognized institution

**c) Offentlig oppdrag/stipend**
- Government assignment abroad
- Research stipend from Norwegian sources

**d) Pensjonist/uføretrygdet**
- Receiving pension from folketrygden
- Only helsedel coverage available

### §2-8 Second Paragraph
- Other workers where "særlige grunner" make it reasonable
- Discretionary evaluation (rimelighetsvurdering)

### §2-13 Unntak
- Exception from mandatory membership
- Used when person should not be member despite §2-1/§2-2

## Detailed Documentation

- **[Bestemmelser](references/bestemmelser.md)**: All FTRL paragraphs and conditions
- **[Trygdedekning](references/trygdedekning.md)**: Coverage types and combinations
- **[Flows](references/flows.md)**: Processing flows per arbeidssituasjon
- **[Debugging Guide](references/debugging.md)**: SQL queries and troubleshooting

Files in this skill

  • SKILL.md10.5 KB
  • references/debugging.md6.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.