Skip to content
cccskills
FreePublished on GitHub

ftrl

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.

The English summary is being prepared. Showing the original description.

See how to install

Files included (2)

  • SKILL.md12.9 KB
  • references/debugging.md9.1 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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          (columns fom_dato/tom_dato)
│   ├── bestemmelse: Bestemmelse
│   ├── medlemskapstype: Medlemskapstyper (PLIKTIG/FRIVILLIG)
│   ├── trygdedekning: Trygdedekninger   (column trygde_dekning)
│   ├── innvilgelsesresultat: InnvilgelsesResultat   (column innvilgelse_resultat)
│   ├── medlPeriodeID: Long?        (column medlperiode_id)
│   └── trygdeavgiftsperioder: Set<Trygdeavgiftsperiode>
└── trygdeavgiftType: Trygdeavgift_typer?

Note: Medlemskapsperiode (domain/.../Medlemskapsperiode.kt) has no arbeidsland column (dropped in V98), and no direct skatteforholdTilNorge/inntektsperioder collections; only trygdeavgiftsperioder is mapped directly (via grunnlagMedlemskapsperiode).

FTRL Bestemmelser (Paragraphs)

ParagraphTypeDescription
§2-1PliktigBosatt i Norge - grunnregel
§2-2PliktigArbeidstaker i Norge
§2-5.a-gPliktigOffentlig ansatte (statsforvaltning, forsvaret, etc.)
§2-5.hPliktigStudent med lån/stipend
§2-6PliktigSjømenn på norskregistrerte skip
§2-7.1FrivilligOpphold i Norge (ikke bosatt)
§2-7.4FrivilligFamiliemedlemmer §2-7
§2-7aFrivilligSjømenn bosatt i Norge, utenlandsk skip
§2-8.1.aFrivilligUtsendt arbeidstaker
§2-8.1.bFrivilligStudent utenlands
§2-8.1.cFrivilligOffentlig oppdrag/stipend
§2-8.1.dFrivilligPensjonist/uføretrygdet
§2-8.2FrivilligAndre yrkesaktive (rimelighetsvurdering)
§2-8.4FrivilligFamiliemedlemmer §2-8
§2-13UnntakUnntak fra medlemskap

Behandlingstema

The valid bestemmelser per tema are defined in code as YrkesaktivBestemmelser, IkkeYrkesaktivBestemmelser and PensjonistBestemmelser (service/.../ftrl/bestemmelse/). The lists below mirror those code objects.

TemaDescriptionBestemmelser (from code)
YRKESAKTIVWorking persons§2-1, §2-2, §2-3 andre ledd, §2-5 første ledd a-g, §2-7 første ledd, §2-7a, §2-8.1.a, §2-8.1.b, §2-8 andre ledd, + vertslandsavtaler (Arktisk råds sekretariat art16, Det internasjonale Barentssekretariatet art14, Den nordatlantiske sjøpattedyrkommisjon art16, Tilleggsavtale NATO)
IKKE_YRKESAKTIVNon-working persons§2-1, §2-5 første ledd h, §2-5 andre ledd, §2-7 første ledd, §2-7 fjerde ledd, §2-8.1.b, §2-8.1.c, §2-8 andre ledd, §2-8 fjerde ledd
PENSJONISTPensioners/disabled§2-1, §2-5 andre ledd, §2-7 første ledd, §2-7 fjerde ledd, §2-8.1.d, §2-8 andre ledd, §2-8 fjerde ledd

Trygdedekning (Coverage)

Coverage codes live in the Trygdedekninger enum (domain/.../kodeverk/Trygdedekninger). For FTRL the relevant values are FULL_DEKNING_FTRL (pliktige + §2-7/§2-7a) and the FTRL_2_9_* / FTRL_2_7* series (frivillig §2-8 / §2-7). There is no bare FULL_DEKNING, HELSEDEL or UTEN_DEKNING value in this enum (the bare HELSEDEL_* codes belong to a different enum, Avgiftsdekning).

CodeDescriptionUse Case
FULL_DEKNING_FTRLFull coverage in folketrygdenPliktige bestemmelser + §2-7/§2-7a
FTRL_2_9_FØRSTE_LEDD_A_HELSE§2-9 first ledd a, health onlyFrivillig §2-8
FTRL_2_9_FØRSTE_LEDD_B_PENSJON§2-9 first ledd b, pension onlyFrivillig §2-8
FTRL_2_9_FØRSTE_LEDD_C_HELSE_PENSJON§2-9 first ledd c, health + pensionFrivillig §2-8 (e.g. pensjonist)
FTRL_2_7_TREDJE_LEDD_B_HELSE_SYKE_FORELDREPENGER§2-7 third ledd bFrivillig §2-7
TILLEGGSAVTALE_NATO_HELSEDELNATO supplementary agreement, healthVertslandsavtale NATO

(The full FTRL_2_9_* matrix — including andre/tredje ledd variants — is enumerated in LovligeKombinasjonerTrygdedekningBestemmelse.)

Medlemskapstype

TypeDescription
PLIKTIGMandatory membership - automatic by law
FRIVILLIGVoluntary membership - by application

Service Layer

FtrlBestemmelser

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

@Component that resolves the valid bestemmelser for a given Behandlingstema (+ optional Trygdedekninger), by intersecting the tema list (YrkesaktivBestemmelser / IkkeYrkesaktivBestemmelser / PensjonistBestemmelser) with the legal trygdedekning-combinations from LovligeKombinasjonerTrygdedekningBestemmelse.

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:      │
│ FTRL_2_9_*_HELSE    │
│ (kun helsedel)      │
└─────────┬───────────┘
          │
          ▼
┌─────────────────────┐
│ Betalingsvalg:      │
│ FAKTURA/KONTONUMMER │
└─────────┬───────────┘
          │
          ▼
┌─────────────────────┐
│ Fatt vedtak         │
└─────────────────────┘

Saksflyt Integration

IVERKSETT_VEDTAK_FTRL

Step sequence (from ProsessflytDefinisjon):

LAGRE_PERSONOPPLYSNINGER →
LAGRE_MEDLEMSKAPSPERIODE_MEDL →
OPPRETT_FAKTURASERIE →
AVSLUTT_SAK_OG_BEHANDLING →
SEND_MELDING_OM_VEDTAK →
OPPRETTE_AARSAVREGNING_ENDRING →
RESET_ÅPNE_ÅRSAVREGNINGER

Debugging Queries

Schema note: medlemskapsperiode.behandlingsresultat_id is the FK to behandlingsresultat, whose PK is behandling_id (1:1 with behandling, no separate id column). So mp.behandlingsresultat_id equals the behandling.id. behandling links to fagsak via saksnummer (not fagsak_id); fagsak's PK is saksnummer and its type column is fagsak_type. There is no bruker_aktor_id on fagsak — the bruker's aktørID lives in the aktoer table (column aktoer_id, rolle = 'BRUKER', joined on saksnummer).

Find Medlemskapsperiode by Behandling

SELECT mp.*, b.status
FROM medlemskapsperiode mp
JOIN behandlingsresultat br ON mp.behandlingsresultat_id = br.behandling_id
JOIN behandling b ON br.behandling_id = b.id
WHERE b.id = :behandlingId;

Check Bestemmelse and Dekning

SELECT mp.id, mp.fom_dato, mp.tom_dato,
       mp.bestemmelse, mp.trygde_dekning,
       mp.medlemskapstype,
       mp.innvilgelse_resultat
FROM medlemskapsperiode mp
WHERE mp.behandlingsresultat_id = :behandlingId;

Find FTRL Cases for Person

SELECT f.saksnummer, f.fagsak_type, b.id, b.status, f.tema
FROM fagsak f
JOIN aktoer a ON a.saksnummer = f.saksnummer AND a.rolle = 'BRUKER'
JOIN behandling b ON b.saksnummer = f.saksnummer
WHERE a.aktoer_id = :aktorId
AND f.fagsak_type = 'FTRL'
ORDER BY b.registrert_dato DESC;

Check MEDL Registration

SELECT mp.medlperiode_id, mp.bestemmelse, mp.fom_dato, mp.tom_dato
FROM medlemskapsperiode mp
WHERE mp.behandlingsresultat_id = :behandlingId
AND mp.medlperiode_id IS NOT NULL;

Common Issues

IssueSymptomsInvestigation
Wrong bestemmelseIncorrect paragraph in vedtakCheck vilkårsvurdering flow
Invalid dekningValidation errorCheck LovligeKombinasjonerTrygdedekningBestemmelse
Period overlapCannot save medlemskapsperiodeCheck existing periods for fagsak
Missing MEDLmedlperiode_id is NULLCheck LAGRE_MEDLEMSKAPSPERIODE_MEDL step
Avgift calculation failNo trygdeavgiftsperiodeVerify skatteforhold and inntekt grunnlag

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

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Expert knowledge of Altinn A1 application processing for posted workers in melosys-api. Use when: (1) Understanding Altinn søknad/skjema processing, (2) Debugging MedlemskapArbeidEOS form mapping, (3) Understanding SoeknadMapper transformations, (4) Investigating posted worker application issues, (5) Understanding the MOTTAK_SOKNAD_ALTINN saga flow.

The English summary is being prepared. Showing the original description.

navikt/melosys-api2Updated Oct 21, 2026

Expert knowledge of Employer/Employment integration (EREG/AAREG) in melosys-api. Use when: (1) Working with organization data from EREG (Enhetsregisteret), (2) Working with employment data from AAREG (Arbeidsforhold), (3) Understanding employer/organization lookup, (4) Debugging employer or employment issues, (5) Understanding the mapping between register data and domain models. Triggers: orgnummer, arbeidsforhold, EREG, AAREG, Enhetsregisteret, registeropplysninger, ansettelsesperiode, saksopplysning.

The English summary is being prepared. Showing the original description.

navikt/melosys-api2Updated Oct 21, 2026

Modular monolith architecture overview for melosys-api. Use when needing to understand module structure, dependencies between modules, where to place new code, or when changes in one module might affect others. Triggers: "architecture", "module dependencies", "where should I put", "which modules", "dependency graph".

The English summary is being prepared. Showing the original description.

navikt/melosys-api2Updated Oct 21, 2026

Expert knowledge of Behandling (case treatment) domain in melosys-api. Use when: (1) Understanding the behandling lifecycle and status transitions, (2) Debugging issues with behandling creation, status changes, or closure, (3) Understanding relationships between Fagsak, Behandling, and Behandlingsresultat, (4) Investigating why a behandling is stuck or has wrong status, (5) Understanding Behandlingstyper, Behandlingstema, Behandlingsstatus enums, (6) Debugging journalføring or SED-triggered behandling creation, (7) Understanding behandling creation via saksflyt sagas.

The English summary is being prepared. Showing the original description.

navikt/melosys-api2Updated Oct 21, 2026

Expert knowledge of Behandlingsresultat (treatment result) domain in melosys-api. Use when: (1) Understanding result types and their meaning (FASTSATT_LOVVALGSLAND, MEDLEM_I_FOLKETRYGDEN, etc.), (2) Working with periods - Lovvalgsperiode, Medlemskapsperiode, Anmodningsperiode, Utpekingsperiode, (3) Debugging vedtak/decision metadata, criteria evaluation, or social insurance charges, (4) Understanding EU/EEA coordination logic and Article 16 exception handling, (5) Working with trygdeavgift (social insurance charge) calculations.

The English summary is being prepared. Showing the original description.

navikt/melosys-api2Updated Oct 21, 2026

brev

Free

Expert knowledge of Brev (letter generation) in melosys-api. Use when: (1) Producing letters and decision documents (vedtaksbrev), (2) Understanding Dokgen templates and mapping, (3) Configuring letter recipients and distribution, (4) Debugging letter generation issues, (5) Adding new letter types or templates.

The English summary is being prepared. Showing the original description.

navikt/melosys-api2Updated Oct 21, 2026

See all skills by navikt

Report a problem with this skill