Registry entry

Norway Application for a Residence and Work Permit (Søknad om oppholds- og arbeidstillatelse) — GP-7028 B

The Norwegian Directorate of Immigration's (Utlendingsdirektoratet, UDI) form GP-7028 B, "Søknad om tillatelse til arbeid og opphold" ("Application for a permit to work and reside [in Norway]"), the general-purpose application UDI publishes for a first-instance or renewal residence/work permit under any of its four permit grounds: family immigration (section A, including up to a 9-month parental visit), work (section B, including au pair and trainee permits), education (section C), or protection/asylum or another basis (section D). This schema models the form's full seven-page applicant-facing content: personal particulars and contact information (section 1); identity/travel document details and any other persons entered in that document (section 2); prior residence, prior applications, and any prior expulsion from Norway (section 3); the top-level first-time-vs-renewal choice and requested permit duration, followed by all four ground-specific branches — the accompanying family member's own bio data and marriage/cohabitation questions for family immigration, the employer/salary/education-background questions for a work permit, the institution/financing questions for an education permit, and the basis-for-protection questions for section D (section 4); a bounded 6-row foreign-travel history table used only when renewing a permit (section 5); family members even when not themselves applying — a spouse/partner/cohabitant, up to two parents, and up to six other close relatives (children, foster children, or siblings), plus aggregate sibling/child counts (section 6); criminal-record questions (section 7); an optional power of attorney for a representative (section 8); the applicant's own signature block and notification-channel consent (section 9); and, when the applicant is a minor or otherwise not legally competent, up to two parent/guardian signature blocks (section 10). Because the source form's own instruction is simply to "fill in the field(s) that correspond to the basis you are applying on" — with no single dedicated selector widget for which ground(s) apply — this schema introduces four synthetic boolean gating fields (applyingForFamilyImmigration/applyingForWorkPermit/applyingForEducationPermit/applyingForProtectionOrOtherPermit) so each branch's fields can be expressed with this registry's visibleWhen/requiredWhen conventions; see VERIFICATION.md for the full disclosure. This schema excludes the form's own office-use-only content: the top-of-form date/UDI-case-number (DUF-nummer)/fee-paid stamp box (section 1) and the police/foreign-service-station remarks radios (MerknaderGruppe1-3, section 10, headed "Merknader for politiet eller utenriksstasjonen" — Remarks for the police or the foreign service station), since neither is applicant-entered content. It also excludes a disclosed stray duplicate widget layer on pages 4 and 5 (see VERIFICATION.md). Submitting this application is a citizen action performed directly with UDI (in person at a police station/Norwegian foreign mission, or electronically via the udi.no/søknadsportal channel the form's own instructions point to); this schema does not submit the application itself, and the live source (udi.no) is always authoritative. GovSchema is independent and is not affiliated with, endorsed by, or operated by the Kingdom of Norway or UDI.

Registry entry

no/udi/soknad-om-opphold-og-arbeidstillatelse

Jurisdiction
Norway · national
Version
1.0.0
Verification
draft

Authoritative source GP-7028 B (per 1. januar 2010 edition), "Søknad om tillatelse til arbeid og opphold", a 7-page fillable AcroForm PDF published unauthenticated by UDI.

Machine access

Registry catalog
registry/index.jsonone record per schema id

Field reference

229 fields, read from the published schema.json, with names, types, requiredness, and validation as the document states them. The live government form remains the authoritative source.

Fields

  • surname string required

    The applicant's surname, to be written exactly as it appears in the applicant's travel document.

    length: 0–200classification: pii
  • firstName string required

    First name

    length: 0–200classification: pii
  • middleName string

    Middle name

    length: 0–200classification: pii
  • previousSurname string

    Previous name/surname, if any

    length: 0–200classification: pii
  • dateOfBirth date required

    Date of birth

    classification: sensitive-pii
  • placeOfBirth string required

    Place/city of birth

    length: 0–200classification: pii
  • countryOfBirth string required

    Country of birth

    length: 0–100classification: pii
  • ethnicity string

    Ethnicity

    length: 0–200classification: pii
  • motherTongue string

    Mother tongue

    length: 0–100classification: pii
  • otherLanguages string

    Other languages spoken

    length: 0–300
  • gender enum required

    Modelled from two independent radio-button widgets sharing the field name 'KjønnGrupp1'.

    enum: Mann | Kvinneclassification: pii
  • occupation string

    Occupation

    length: 0–200classification: pii
  • citizenships string required

    Citizenship(s) — list all

    length: 0–300classification: pii
  • civilStatus enum required

    Modelled from six radio-button widgets sharing the field name 'SivilstatusGruppe1'.

    enum: Ugift | Gift/partner | Samboer | Separert | Skilt | Enke/enkemann
  • civilStatusLastChangedPlaceAndDate string

    Place and date of last change in civil status

    length: 0–300
  • homeCountryAddress string required

    Address in home country

    length: 0–250classification: pii
  • homeCountryPostalCode string

    Postal code (home country)

    length: 0–20classification: pii
  • homeCountryPostTown string

    Post town (home country)

    length: 0–200classification: pii
  • homeCountryCountry string required

    Country (home country address)

    length: 0–100classification: pii
  • homeCountryMobilePhone string

    Mobile phone in home country

    length: 0–30classification: pii
  • email string required

    UDI uses this address to contact the applicant throughout the application process, per the form's own instruction.

    length: 0–200classification: pii
  • alternateResponseAddress string

    Alternate address the decision on this application should be sent to, if any

    length: 0–250classification: pii
  • alternateResponsePostalCode string

    Postal code (alternate response address)

    length: 0–20classification: pii
  • alternateResponsePostTown string

    Place (alternate response address)

    length: 0–200classification: pii
  • alternateResponseCountry string

    Country (alternate response address)

    length: 0–100classification: pii
  • norwayAddress string required

    Address in Norway where you live or will live (street/road)

    length: 0–250classification: pii
  • norwayPostalCode string

    Postal code (Norway address)

    length: 0–20classification: pii
  • norwayPostTown string

    Post town (Norway address)

    length: 0–200classification: pii
  • norwayMobilePhone string

    Mobile number in Norway

    length: 0–30classification: pii
  • dateArrivedInNorway date

    Date arrived in Norway, if applicable

  • dateArrivedInSchengenArea date

    Date arrived in the Schengen area, if applicable

  • travelDocumentType enum required

    Modelled from three radio-button widgets sharing the field name 'ReisedokumentGrupp1'.

    enum: Pass fra hjemlandet | Reisebevis, utlendingspass eller liknende | Har ikke reisedokument
  • travelDocumentNumber string

    Travel document number

    length: 0–50classification: sensitive-pii
  • travelDocumentValidUntil date

    Travel document valid until

  • travelDocumentIssuingCountry string

    Country where the travel document was issued

    length: 0–100
  • travelDocumentIssuingAuthority string

    Issuing authority

    length: 0–200
  • otherPersonsInTravelDocument string

    Use a separate sheet if more space is needed, per the form's own instruction.

    length: 0–1000
  • previouslyResidedInNorway boolean required

    Modelled from a Ja/Nei radio pair sharing the field name 'OppholdGruppe1'.

  • previousResidencePeriodsAndDuration string

    If yes, time periods and duration

    length: 0–300
  • previouslyAppliedForResidenceInNorway boolean required

    Modelled from a Ja/Nei radio pair sharing the field name 'OppholdtGrupp2'.

  • previousResidencePurpose enum

    Modelled from three radio-button widgets sharing the field name 'OppholdGruppe3'.

    enum: Turisme | Arbeid | Annet. Spesifiser hva
  • previousResidencePurposeOther string

    If other, please specify

    length: 0–300
  • previouslyExpelledFromNorway boolean required

    Modelled from a Ja/Nei radio pair sharing the field name 'OppholdtGrupp4'.

  • entryBanStillInEffect boolean

    Modelled from a two-option radio widget 'OppholdGruppe5' whose 'Ja' option text itself instructs the applicant to attach the form for lifting the entry ban (see documents[] entry 'entryBanLiftingApplication').

  • permitApplicationType enum required

    Modelled from a two-option radio widget 'TillatelseGruppe1'.

    enum: Førstegangstillatelse | Fornyelse
  • permitDurationRequested string

    Length of permit requested

    length: 0–100
  • permitFromDate date

    Permit requested from date

  • permitToDate date

    Permit requested to date

  • applyingForFamilyImmigration boolean required

    Synthetic gating field introduced by this schema: the source form has no single dedicated selector widget for which of its four permit-ground sections (A family / B work / C education / D protection-or-other) the applicant is completing — its own instruction is simply "fill in the field(s) that correspond to the basis you are applying on," and more than one section can in principle apply at once. This field, and its siblings applyingForWorkPermit/applyingForEducationPermit/applyingForProtectionOrOtherPermit, make that applicability explicit and machine-checkable so the section's fields can be gated with visibleWhen/requiredWhen. See VERIFICATION.md.

  • familyImmigrationRelationship enum

    Modelled from 11 radio-button widgets sharing the field name 'TillatelseGruppe2'.

    enum: 11 values
  • accompanyingPersonSurname string

    Surname of the person you are applying for family immigration with

    length: 0–200classification: pii
  • accompanyingPersonFirstName string

    First name of that person

    length: 0–200classification: pii
  • accompanyingPersonMiddleName string

    Middle name of that person

    length: 0–200classification: pii
  • accompanyingPersonPreviousSurname string

    Previous name/surname of that person, if any

    length: 0–200classification: pii
  • accompanyingPersonDateOfBirth date

    Date of birth of that person

    classification: sensitive-pii
  • accompanyingPersonPlaceOfBirth string

    Place of birth of that person

    length: 0–200classification: pii
  • accompanyingPersonCountryOfBirth string

    Country of birth of that person

    length: 0–100classification: pii
  • accompanyingPersonMotherTongue string

    Mother tongue of that person

    length: 0–100
  • accompanyingPersonGender enum

    Modelled from two radio-button widgets sharing the field name 'TillatelseGruppe3'.

    enum: Mann | Kvinneclassification: pii
  • accompanyingPersonCitizenships string

    Citizenship(s) of that person

    length: 0–300classification: pii
  • accompanyingPersonAddress string

    Address of that person

    length: 0–250classification: pii
  • accompanyingPersonPostalCode string

    Postal code

    length: 0–20classification: pii
  • accompanyingPersonPostTown string

    Post town

    length: 0–200classification: pii
  • accompanyingPersonNorwegianPersonalNumber string

    Norwegian personal number (personnummer), if any

    patternclassification: sensitive-pii
  • accompanyingPersonPhone string

    Phone

    length: 0–30classification: pii
  • accompanyingPersonMobile string

    Mobile

    length: 0–30classification: pii
  • accompanyingPersonEmail string

    Email

    length: 0–200classification: pii
  • previouslyMarried boolean

    Modelled from a Ja/Nei radio pair sharing the field name 'GiftGruppe1'.

  • previousMarriageYear string

    If yes, when (year)? Use an extra sheet if needed.

    length: 0–200
  • previousMarriageDuration string

    How long were you married?

    length: 0–200
  • previousSpouseName string

    Who were you married to?

    length: 0–200classification: pii
  • intendedMarriageOrPartnershipDate date

    For an application for a fiancé(e) permit: the date you will marry or enter into a partnership

  • willLiveAtSameAddress boolean

    Modelled from a two-option radio widget 'GiftGruppe2' (Ja / Nei, av følgende grunn).

  • differentAddressExplanation string

    If no, explain why you will not live at the same address (in the same household) for the whole period you are applying for a permit

    length: 0–500
  • willBeSupportedByPersonInNorwayFirstTime boolean

    Modelled from a two-option radio widget 'GiftGruppe3' (Ja / Nei, forklar).

  • notSupportedExplanation string

    If no, explain why you will not be supported by the person in Norway

    length: 0–500
  • isSupportedByPersonInNorwayRenewal boolean

    Modelled from a Ja/Nei radio pair sharing the field name 'GiftGruppe4'.

  • applyingForWorkPermit boolean required

    Synthetic gating field; see the description of applyingForFamilyImmigration and VERIFICATION.md.

  • workRenewalHasChanges boolean

    Modelled from a Nei / Ja-fyll-ut-feltet-nedenfor radio pair sharing the field name 'ArbeidGruppe1'.

  • employerName string

    Employer or client (company name or host family)

    length: 0–250classification: pii
  • employerOrgNumber string

    Employer's organisation number

    length: 0–20
  • employerAddress string

    Employer's address

    length: 0–250
  • employerPostalCode string

    Employer's postal code

    length: 0–20
  • employerPostTown string

    Employer's post town

    length: 0–200
  • employerMobile string

    Employer's mobile number

    length: 0–30
  • employerEmail string

    Employer's email

    length: 0–200
  • salaryInNok string

    Salary in Norwegian kroner

    length: 0–50
  • jobTitleOrDuties string

    Type of work, job title, or main duties

    length: 0–300
  • workPercentageType enum

    Modelled from a two-option radio widget 'ArbeidGruppe2'.

    enum: 100 % | Annet %
  • workPercentageOther string

    The source PDF's widget for this field ('Stillingsprosent') carries a stray pre-filled default value of "90" left over from the form's own authoring/testing; this is disclosed here and not treated as a schema default.

    length: 0–10
  • applicantEducationLevel enum

    Modelled from six radio-button widgets sharing the field name 'ArbeidGruppe3'.

    enum: Grunnskole | Videregående, allmennfag | Videregående skole, yrkesfag | Påbygging til videregående utdanning | Universitets- eller høyskoleutdanning | Annet
  • educationDurationYears string

    Duration of education (years)

    length: 0–10
  • educationField string

    Field of education

    length: 0–200
  • educationDegreeObtained string

    Degree obtained

    length: 0–200
  • hasRelevantWorkExperience boolean

    Modelled from a Nei / Ja radio pair sharing the field name 'ArbeidGruppe4'; the 'Ja' option text itself instructs the applicant to attach supporting documentation (see documents[] entry 'workExperienceDocumentation').

  • applyingForEducationPermit boolean required

    Synthetic gating field; see the description of applyingForFamilyImmigration and VERIFICATION.md.

  • followsNormalStudyProgress boolean

    Modelled from a Ja/Nei radio pair sharing the field name 'UtdanningGruppe1'.

  • continuingAtSameInstitution boolean

    Modelled from a Ja/Nei radio pair sharing the field name 'UtdanningGruppe2'.

  • institutionName string

    Place of study/educational institution

    length: 0–250
  • institutionOrgNumber string

    Institution's organisation number

    length: 0–20
  • fieldOfStudy string

    Field of study/subject

    length: 0–250
  • studyFromMonthYear string

    Studies from (month/year)

    length: 0–20
  • studyToMonthYear string

    Studies to (month/year)

    length: 0–20
  • institutionPhone string

    Institution's phone number

    length: 0–30
  • institutionEmail string

    Institution's email

    length: 0–200
  • studyPlacementOrganizationName string

    Name of the organisation that arranged the study/school place, if any

    length: 0–250
  • studyFinancingType enum

    Modelled from three radio-button widgets sharing the field name 'UtdanningGruppe3'.

    enum: Egne midler | Stipend | Annet, forklar
  • studyFinancingOtherExplanation string

    If other, explain the financing of your stay

    length: 0–300
  • tuitionFeePerSemesterNok string

    Tuition fee (amount in Norwegian kroner per semester)

    length: 0–30
  • applyingForProtectionOrOtherPermit boolean required

    Synthetic gating field; see the description of applyingForFamilyImmigration and VERIFICATION.md.

  • renewingPreviousPermit boolean

    Modelled from a Ja/Nei radio pair sharing the field name 'BeskyttelseGruppe1'.

  • applyingOnNewBasis boolean

    Modelled from a Ja/Nei radio pair sharing the field name 'BeskyttelseGruppe2'.

  • newBasisExplanation string

    Explain the basis for the permit

    length: 0–500
  • protectionPermitBasis enum

    Modelled from three radio-button widgets sharing the field name 'BeskyttelseGruppe3'.

    enum: Beskyttelse (asyl) | Tillatelse på grunn av sterke menneskelige hensyn | Annet, forklar
  • foreignTripDepartureDate1 date

    Section 5 'Utenlandsopphold' is filled in only when renewing a permit, per its own heading; list trips chronologically starting with the earliest, over the last year before the application date.

  • foreignTripArrivalDate1 date

    Trip 1 — date of arrival back in Norway

  • foreignTripAbsenceDays1 string

    Trip 1 — number of days absent

    length: 0–10
  • foreignTripResidenceCountry1 string

    Trip 1 — country visited

    length: 0–100
  • foreignTripPurpose1 enum

    Modelled from a two-option radio widget.

    enum: Arbeid | Privat
  • foreignTripDepartureDate2 date

    Trip 2 — date of departure from Norway

  • foreignTripArrivalDate2 date

    Trip 2 — date of arrival back in Norway

  • foreignTripAbsenceDays2 string

    Trip 2 — number of days absent

    length: 0–10
  • foreignTripResidenceCountry2 string

    Trip 2 — country visited

    length: 0–100
  • foreignTripPurpose2 enum

    Modelled from a two-option radio widget.

    enum: Arbeid | Privat
  • foreignTripDepartureDate3 date

    Trip 3 — date of departure from Norway

  • foreignTripArrivalDate3 date

    Trip 3 — date of arrival back in Norway

  • foreignTripAbsenceDays3 string

    Trip 3 — number of days absent

    length: 0–10
  • foreignTripResidenceCountry3 string

    Trip 3 — country visited

    length: 0–100
  • foreignTripPurpose3 enum

    Modelled from a two-option radio widget.

    enum: Arbeid | Privat
  • foreignTripDepartureDate4 date

    Trip 4 — date of departure from Norway

  • foreignTripArrivalDate4 date

    Trip 4 — date of arrival back in Norway

  • foreignTripAbsenceDays4 string

    Trip 4 — number of days absent

    length: 0–10
  • foreignTripResidenceCountry4 string

    Trip 4 — country visited

    length: 0–100
  • foreignTripPurpose4 enum

    Modelled from a two-option radio widget.

    enum: Arbeid | Privat
  • foreignTripDepartureDate5 date

    Trip 5 — date of departure from Norway

  • foreignTripArrivalDate5 date

    Trip 5 — date of arrival back in Norway

  • foreignTripAbsenceDays5 string

    Trip 5 — number of days absent

    length: 0–10
  • foreignTripResidenceCountry5 string

    Trip 5 — country visited

    length: 0–100
  • foreignTripPurpose5 enum

    Modelled from a two-option radio widget.

    enum: Arbeid | Privat
  • foreignTripDepartureDate6 date

    Trip 6 — date of departure from Norway

  • foreignTripArrivalDate6 date

    Trip 6 — date of arrival back in Norway

  • foreignTripAbsenceDays6 string

    Trip 6 — number of days absent

    length: 0–10
  • foreignTripResidenceCountry6 string

    Trip 6 — country visited

    length: 0–100
  • foreignTripPurpose6 enum

    Modelled from a two-option radio widget.

    enum: Arbeid | Privat
  • spouseSurname string

    Section 6 'Familiemedlemmer' covers family members even if they are not themselves applying for a residence permit; per the form's own instruction this need not be repeated if already given in a previous application, but should be given if other family members are submitting applications at the same time (each family member must still submit their own application form).

    length: 0–200classification: pii
  • spouseFirstName string

    Spouse/partner/cohabitant — first name

    length: 0–200classification: pii
  • spouseDateOfBirth date

    Spouse/partner/cohabitant — date of birth

    classification: sensitive-pii
  • spouseGender enum

    Modelled from two radio-button widgets sharing the field name 'FamilieGruppe1'.

    enum: Mann | Kvinneclassification: pii
  • spouseApplyingSimultaneously boolean

    Is the spouse/partner/cohabitant applying at the same time as you?

  • spouseAddress string

    Spouse/partner/cohabitant — address

    length: 0–250classification: pii
  • spousePostalCodeAndPlace string

    Spouse/partner/cohabitant — postal code/place

    length: 0–200classification: pii
  • spouseCountry string

    Spouse/partner/cohabitant — country

    length: 0–100classification: pii
  • parent1FullName string

    Section 6 'Foreldre' (Parents).

    length: 0–300classification: pii
  • parent1DateOfBirth date

    Parent 1 — date of birth

    classification: sensitive-pii
  • parent1Country string

    Parent 1 — country of residence

    length: 0–100classification: pii
  • parent1Gender enum

    Modelled from two radio-button widgets sharing the field name 'FamilieGruppe2'.

    enum: Mann | Kvinneclassification: pii
  • parent1ApplyingSimultaneously boolean

    Is parent 1 applying at the same time as you?

  • parent2FullName string

    Parent 2 — surname, first name

    length: 0–300classification: pii
  • parent2DateOfBirth date

    Parent 2 — date of birth

    classification: sensitive-pii
  • parent2Country string

    Parent 2 — country of residence

    length: 0–100classification: pii
  • parent2Gender enum

    Modelled from two radio-button widgets sharing the field name 'FamilieGruppe3'.

    enum: Mann | Kvinneclassification: pii
  • parent2ApplyingSimultaneously boolean

    Is parent 2 applying at the same time as you?

  • relative1FullName string

    Section 6 'Andre nære slektninger' (other close relatives): list all children (biological or adopted), foster children, and siblings — use a separate sheet if needed. The source PDF names relative 1's combined surname/first-name widget 'Etternavnet til barn nummer 1' (literally "the surname of child no. 1"), even though — like the other five relatives' widgets, and the shared column header 'Etternavn, Fornavn' ("Surname, First name") spanning the whole row — its rect covers the full combined-name column; this is a disclosed naming quirk in the source PDF, not a second, missing first-name field. See VERIFICATION.md.

    length: 0–300classification: pii
  • relative1DateOfBirth date

    Relative 1 — date of birth

    classification: sensitive-pii
  • relative1Country string

    Relative 1 — country of residence

    length: 0–100classification: pii
  • relative1Relationship enum

    Modelled from three radio-button widgets sharing the field name 'Barn nummer 1'; the form's own column header abbreviates these B (biologisk/adoptivbarn) / F (fosterbarn) / S (søsken).

    enum: Biologiske barn eller adoptivbarn | Fosterbarn | Søsken
  • relative1Gender enum

    Modelled from two radio-button widgets sharing the field name 'FamilieGruppe4'.

    enum: Mann | Kvinneclassification: pii
  • relative1ApplyingSimultaneously boolean

    Is relative 1 applying at the same time as you?

  • relative2FullName string

    Relative 2 — surname, first name

    length: 0–300classification: pii
  • relative2DateOfBirth date

    Relative 2 — date of birth

    classification: sensitive-pii
  • relative2Country string

    Relative 2 — country of residence

    length: 0–100classification: pii
  • relative2Relationship enum

    Modelled from three radio-button widgets sharing the field name 'SlektGruppe2'; the form's own column header abbreviates these B (biologisk/adoptivbarn) / F (fosterbarn) / S (søsken).

    enum: Biologiske barn eller adoptivbarn | Fosterbarn | Søsken
  • relative2Gender enum

    Modelled from two radio-button widgets sharing the field name 'FamilieGruppe5'.

    enum: Mann | Kvinneclassification: pii
  • relative2ApplyingSimultaneously boolean

    Is relative 2 applying at the same time as you?

  • relative3FullName string

    Relative 3 — surname, first name

    length: 0–300classification: pii
  • relative3DateOfBirth date

    Relative 3 — date of birth

    classification: sensitive-pii
  • relative3Country string

    Relative 3 — country of residence

    length: 0–100classification: pii
  • relative3Relationship enum

    Modelled from three radio-button widgets sharing the field name 'SlektGruppe3'; the form's own column header abbreviates these B (biologisk/adoptivbarn) / F (fosterbarn) / S (søsken).

    enum: Biologiske barn eller adoptivbarn | Fosterbarn | Søsken
  • relative3Gender enum

    Modelled from two radio-button widgets sharing the field name 'FamilieGrupp6'.

    enum: Mann | Kvinneclassification: pii
  • relative3ApplyingSimultaneously boolean

    Is relative 3 applying at the same time as you?

  • relative4FullName string

    Relative 4 — surname, first name

    length: 0–300classification: pii
  • relative4DateOfBirth date

    Relative 4 — date of birth

    classification: sensitive-pii
  • relative4Country string

    Relative 4 — country of residence

    length: 0–100classification: pii
  • relative4Relationship enum

    Modelled from three radio-button widgets sharing the field name 'SlektGrupp4'; the form's own column header abbreviates these B (biologisk/adoptivbarn) / F (fosterbarn) / S (søsken).

    enum: Biologiske barn eller adoptivbarn | Fosterbarn | Søsken
  • relative4Gender enum

    Modelled from two radio-button widgets sharing the field name 'FamilieGrupp7'.

    enum: Mann | Kvinneclassification: pii
  • relative4ApplyingSimultaneously boolean

    Is relative 4 applying at the same time as you?

  • relative5FullName string

    Relative 5 — surname, first name

    length: 0–300classification: pii
  • relative5DateOfBirth date

    Relative 5 — date of birth

    classification: sensitive-pii
  • relative5Country string

    Relative 5 — country of residence

    length: 0–100classification: pii
  • relative5Relationship enum

    Modelled from three radio-button widgets sharing the field name 'SlektGrupp5'; the form's own column header abbreviates these B (biologisk/adoptivbarn) / F (fosterbarn) / S (søsken).

    enum: Biologiske barn eller adoptivbarn | Fosterbarn | Søsken
  • relative5Gender enum

    Modelled from two radio-button widgets sharing the field name 'FamilieGrupp8'.

    enum: Mann | Kvinneclassification: pii
  • relative5ApplyingSimultaneously boolean

    Is relative 5 applying at the same time as you?

  • relative6FullName string

    Relative 6 — surname, first name

    length: 0–300classification: pii
  • relative6DateOfBirth date

    Relative 6 — date of birth

    classification: sensitive-pii
  • relative6Country string

    Relative 6 — country of residence

    length: 0–100classification: pii
  • relative6Relationship enum

    Modelled from three radio-button widgets sharing the field name 'SlektGrupp6'; the form's own column header abbreviates these B (biologisk/adoptivbarn) / F (fosterbarn) / S (søsken).

    enum: Biologiske barn eller adoptivbarn | Fosterbarn | Søsken
  • relative6Gender enum

    Modelled from two radio-button widgets sharing the field name 'FamilieGrupp9'.

    enum: Mann | Kvinneclassification: pii
  • relative6ApplyingSimultaneously boolean

    Is relative 6 applying at the same time as you?

  • childrenCount string

    Number of children

    length: 0–10
  • sistersCount string

    Number of sisters

    length: 0–10
  • brothersCount string

    Number of brothers

    length: 0–10
  • siblingsInNorwayCount string

    Number of siblings living in Norway

    length: 0–10
  • underInvestigationForCriminalOffense boolean required

    Modelled from a Ja/Nei radio pair sharing the field name 'StraffGruppe1'.

  • investigationLocationOrCountry string

    If yes, in which police district/country?

    length: 0–200
  • previouslyConvictedOfCrime boolean required

    Modelled from a Ja/Nei radio pair sharing the field name 'StraffGruppe2'.

  • convictionWhenAndWhere string

    If yes, when and where were you convicted?

    length: 0–300
  • convictionReactionFine boolean

    Modelled from a checkbox widget 'Straffereaksjon: Bot'.

  • fineAmount string

    Fine amount

    length: 0–30
  • convictionReactionPrison boolean

    Modelled from a checkbox widget 'Straffereaksjon: Fengselstraff'.

  • prisonSentenceDays string

    Prison sentence (days)

    length: 0–20
  • typeOfCriminalOffense string

    Type of criminal offense

    length: 0–300
  • sentenceServedAndProbationOver boolean

    Modelled from a two-option radio widget 'StraffGruppe4' (Ja / Nei, forklar).

  • probationNotOverExplanation string

    If no, explain why the probation period is not yet over

    length: 0–300
  • poaAcknowledgeCorrespondenceToAttorney boolean

    Acknowledgement checkbox preceding the power-of-attorney grant.

  • poaAcknowledgeDecisionToAttorney boolean

    I understand that my representative will receive the decision instead of me

  • poaGrantAuthority boolean

    I grant the following person power of attorney to act on my behalf regarding my application

  • attorneySurname string

    Representative's surname

    length: 0–200classification: pii
  • attorneyFirstName string

    Representative's first name

    length: 0–200classification: pii
  • attorneyAddress string

    Representative's address

    length: 0–250classification: pii
  • attorneyPostalCode string

    Representative's postal code

    length: 0–20classification: pii
  • attorneyPostTown string

    Representative's post town

    length: 0–200classification: pii
  • attorneyCountry string

    Representative's country

    length: 0–100classification: pii
  • attorneyPhone string

    Representative's phone

    length: 0–30classification: pii
  • attorneyMobile string

    Representative's mobile

    length: 0–30classification: pii
  • attorneyEmail string

    Representative's email

    length: 0–200classification: pii
  • consentToSmsEmailNotifications boolean

    I agree to receive information about my case by SMS and email

  • applicantSignaturePlaceAndDate string required

    The source PDF has no separate widget for the wet-ink signature itself, only this place-and-date text field alongside the printed line 'Underskriften din' (Your signature).

    length: 0–200
  • guardian1SignaturePlaceAndDate string

    Section 10 'Når søkeren er barn eller umyndiggjort' (When the applicant is a child or incapacitated) applies only if the applicant is a minor or otherwise not legally competent to sign alone; per the form's own text, if parental responsibility is shared, both parents/guardians must consent. The source form has no dedicated yes/no widget for 'is the applicant a minor,' so these two parent/guardian signature-block fields are left optional rather than gated on a synthetic field.

    length: 0–200
  • guardian2SignaturePlaceAndDate string

    Parent/guardian 2 — place and date of signature

    length: 0–200

Verification record

Candidate selection

GOV-2340 is this cycle's firing of the GovSchema Standard Research recurring routine (GOV-2338 parent). CATALOG.md's own "Known Gaps & Opportunities" section (item 8) had already pre-scouted UDI's form GP7028 as Norway's last open vertical: Business Formation (GOV-2314/GOV-2316), National ID (GOV-2323), and DMV (GOV-2330) were already closed this cycle history, and Taxes/Passport were previously confirmed dead-end/weak. This form closes Norway's Visa vertical and brings Norway to 6/6.

Source

  • URL: https://www.udi.no/globalassets/global/skjemaer/arbeid-og-opphold-gp7028-b.pdf
  • Fetched fresh this session with a plain HTTP GET: HTTP 200, 1,519,473 bytes, genuine %PDF-1.6 header, no login/CAPTCHA/WAF gate.
  • Edition: the form's own footer prints "GP-7028 B — per 1. januar 2010" (page 1), the currently-live download as of this cycle.

Extraction technique

pdfjs-dist v3.11.174 (legacy/build/pdf.js, installed to a disposable /tmp directory) was used two ways:

  1. page.getAnnotations() per page, to enumerate every raw /Widget annotation with its field name, type, and rect.
  2. page.getTextContent() per page, to recover every printed instruction, section heading, and radio/checkbox option label, sorted into reading order by Y-then-X position — used to resolve the semantic grouping of every multi-widget radio/checkbox cluster below (e.g. which "Ja/Nei" pair answers which printed question).

Results: 7 pages, 325 raw Widget annotations, 231 distinct field names (getFieldObjects(): 233 keys, since two field names are shared by radio groups whose members appear on non-adjacent index positions in that map) — this exactly matches the issue's own pre-extraction count, independently reproduced. Per-page widget counts: page 1: 40, page 2: 55, page 3: 39, page 4: 76, page 5: 79, page 6: 28, page 7: 8 — also an exact match.

Field mapping (325 widgets → 229 fields + 4 documents[] entries)

Radio groups and checkbox pairs → single fields

Every widget cluster sharing one fieldName with radio: true collapsed to a single enum field (or boolean field, for two-option Ja/Nei pairs), per this registry's standing convention. This includes, among ~30 such groups: KjønnGrupp1, SivilstatusGruppe1, ReisedokumentGrupp1, TillatelseGruppe1/2/3, GiftGruppe1-4, ArbeidGruppe1-4, UtdanningGruppe1-3, BeskyttelseGruppe1-3, StraffGruppe1/2/4, FamilieGruppe1-9/FamilieGrupp6-9 (gender per family-member row), SlektGruppe2/3/SlektGrupp4-6 (relative-relationship radios), and the per-row UtenlandsoppholdGruppe1-6 (foreign-trip purpose).

Office-use-only content — excluded

Three widgets at the top of page 1, inside the printed "Stempel fra politidistriktet eller utenriksstasjonen" (Stamp from the police district or the foreign service station) box — Dato, DUFnummer (UDI's own case number), and Betalt gebyr i NOK (fee paid) — are filled in by the receiving authority, not the applicant, and are excluded. Likewise, page 7's MerknaderGruppe1/2/3 radios sit under the printed heading "Merknader for politiet eller utenriksstasjonen" (Remarks for the police or the foreign service station) and are excluded for the same reason. This matches this registry's established precedent for office-stamp/official- remarks sections (e.g. de/bmi/residence-deregistration, mx/sre/passport-application).

Synthetic permit-ground gating fields (disclosed judgment call)

The source form's own instruction for section "4 Tillatelsen du søker om" is "Fyll ut det/de feltene som svarer til grunnlaget du søker på" ("Fill in the field(s) that correspond to the basis you are applying on") — the plural "de feltene" makes clear more than one ground can apply at once (e.g. a spouse who will also work). The form has no single dedicated selector widget naming which of its four lettered sub-sections (A family / B work / C education / D protection-or-other) the applicant is completing. To make each branch's applicability explicit and machine- checkable with this registry's visibleWhen/requiredWhen conventions, this schema introduces four synthetic, unconditionally-required boolean fields with no backing widget: applyingForFamilyImmigration, applyingForWorkPermit, applyingForEducationPermit, applyingForProtectionOrOtherPermit. Each gates its own lettered section's fields. This is disclosed in every one of the four fields' own description, per this registry's "spec precision over cleverness" norm of never silently inventing structure the source doesn't express.

Bounded repeating groups
  • Foreign-travel-history table (section 5, renewal only): 6 rows × 5 sub-fields (foreignTripDepartureDateN/ArrivalDateN/ AbsenceDaysN/ResidenceCountryN/PurposeN), following this registry's entrantN-style flattened-bounded-repeating-group convention (cf. dk/cpr, no/skatteetaten). Disclosed duplicate widget layer: rows 1-4's four text columns (departure/arrival/ absence-days/country) each have two near-identical widgets at near-identical rects in the source PDF (row 4's "Oppholdsland" column is the sole exception, appearing only once) — the same kind of stray forms-authoring artifact this registry has disclosed in other Norway schemas (e.g. no/brreg). De-duplicated by field name; the row-level UtenlandsoppholdGruppeN purpose radio is not duplicated.
  • Family members (section 6): a spouse/partner/cohabitant (own address block, spouse*), up to two parents (parentN*), and up to six other close relatives — children/foster-children/siblings (relativeN*, N=1..6) — modelled as three distinct flattened groups rather than one uniform familyMemberN group, since their widget sets genuinely differ (only the spouse has an address block; only the "other relatives" have a B/F/S relationship radio). Disclosed source quirk: relative 1's combined surname/first-name widget is internally named Etternavnet til barn nummer 1 ("the surname of child no. 1") even though, like relatives 2-6's widgets and the shared column header "Etternavn, Fornavn" spanning the whole row, its rect covers the full combined-name column — modelled as relative1FullName, not a surname-only field, since the visual table structure is the source of truth over the internal widget name. Disclosed stray widget: one extra FamilieGruppe5 "Kvinne" option widget appears at an out-of- sequence rect (between the relative-6 and relative-9 rows) with no matching row; excluded as a duplicate-layer artifact, consistent with the row-level de-duplication used elsewhere in this schema.
documents[] entries (4)

Following this registry's own documented blind spot (a disposable conformance checker limited to fields[] can report a false "0 errors" on a schema with unconditionally- or conditionally-required documents), this schema's 4 documents[] entries were explicitly exercised in the conformance run below:

  1. passportPhoto (identity-document, unconditionally required) — the printed "Bilde" (Photo) placeholder box, page 1.
  2. entryBanLiftingApplication (supporting-evidence, requiredWhen entryBanStillInEffect == true) — the OppholdGruppe5 radio's own "Ja" option text instructs the applicant to attach this.
  3. workExperienceDocumentation (supporting-evidence, requiredWhen hasRelevantWorkExperience == true) — the ArbeidGruppe4 radio's own "Ja" option text instructs the applicant to attach this.
  4. correctnessAttestation (attestation, unconditionally required) — the closing declaration "Jeg bekrefter at opplysningene som er gitt i denne søknaden er korrekte og fullstendige" has no separate checkbox widget on this specimen (implicit in signing), matching this registry's no/skatteetaten precedent for the identical pattern.

No other "legg ved"/"legge ved" (attach) instruction appears anywhere in the form's own printed text (confirmed by a full-text grep of every page's extracted content), so no further documents[] entries were added on inference alone.

Signature and minor/guardian section

The applicant's own signature has no separate wet-ink widget, only a place-and-date text field (applicantSignaturePlaceAndDate) alongside the printed line "Underskriften din." Section 10, "Når søkeren er barn eller umyndiggjort" (When the applicant is a child or incapacitated), provides two parent/guardian place-and-date signature fields (guardian1SignaturePlaceAndDate/guardian2SignaturePlaceAndDate, required whenever parental responsibility is shared, per the form's own text) — left optional rather than gated on a synthetic field, since the source form has no yes/no widget testing "is the applicant a minor," consistent with this registry's convention of not inventing gating structure the source doesn't express (see no/skatteetaten's bruksenhetsnummer precedent for the same reasoning).

Conformance run

A disposable checker script (adapted from this registry's own fields[]+documents[]+exclusivityGroups evaluator used on prior Nordic cycles) was run against two mock scenarios with valid synthetic (non-real) data, each covering a different permit ground and structural path:

  • work-permit-first-time-minimal.json — a first-time work-permit application (section B), minimal required data, passportPhoto + workExperienceDocumentation + correctnessAttestation attached. 0 errors.
  • family-immigration-renewal-with-relatives.json — a renewal family-immigration application (section A) exercising a prior marriage, a spouse and one child relative, a foreign-trip-history row, a criminal conviction with a fine, and a granted power of attorney. 0 errors.

Both fixtures also pass node tools/validate.mjs and node tools/validate-ajv.mjs (structural + meta-schema conformance) for the schema document itself; registry-index.json was regenerated via npm run build-index.

Four mutation controls, each derived from one of the two fixtures above by removing exactly one requirement, each raised exactly 1 error:

  1. Removing applicantSignaturePlaceAndDate from the work-permit fixture → applicantSignaturePlaceAndDate: required but missing.
  2. Removing passportPhoto from the work-permit fixture's documents[]documents.passportPhoto: required but missing (exercises the documents[] blind spot on an unconditionally-required document).
  3. Removing fineAmount from the family-immigration fixture (which sets convictionReactionFine: true) → fineAmount: required but missing.
  4. Setting entryBanStillInEffect: true on the family-immigration fixture without attaching entryBanLiftingApplicationdocuments.entryBanLiftingApplication: required but missing (exercises the documents[] blind spot on a conditionally-required document).

Disclosed judgment calls (summary)

  • Four synthetic permit-ground gating booleans with no backing widget (see above) — the schema's single largest disclosed judgment call.
  • Office-use-only content excluded: the page-1 stamp box (date/DUF- nummer/fee) and page-7 police/embassy remarks radios.
  • Disclosed duplicate widget layer on page 4's foreign-travel-history table (rows 1-4) and a single stray FamilieGruppe5 widget on page 5.
  • relative1FullName modelled from a widget internally named as a surname-only field, per the visual table layout (see above).
  • Guardian signature fields (section 10) left optional/ungated, since no source widget tests "is the applicant a minor."
  • workPercentageOther's source widget (Stillingsprosent) carries a stray pre-filled default value of "90" in the PDF, disclosed and not treated as a schema default.

View the raw record (VERIFICATION.md)

Version history

  • 1.0.0 draft latest this page has verification record schema.json

Independent and non-affiliated

GovSchema is an independent, open-source project. This reference is not produced, reviewed, or endorsed by Utlendingsdirektoratet (the Norwegian Directorate of Immigration) or any government. The authoritative source is always the live government form and its official instructions.