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
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
- Schema document
registry/no/udi/soknad-om-opphold-og-arbeidstillatelse/1.0.0/schema.jsonapplication/schema+json- Verification record
registry/no/udi/soknad-om-opphold-og-arbeidstillatelse/1.0.0/VERIFICATION.mdtext/markdown- 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
-
surnamestring requiredThe applicant's surname, to be written exactly as it appears in the applicant's travel document.
length: 0–200classification: pii -
firstNamestring requiredFirst name
length: 0–200classification: pii -
middleNamestringMiddle name
length: 0–200classification: pii -
previousSurnamestringPrevious name/surname, if any
length: 0–200classification: pii -
dateOfBirthdate requiredDate of birth
classification: sensitive-pii -
placeOfBirthstring requiredPlace/city of birth
length: 0–200classification: pii -
countryOfBirthstring requiredCountry of birth
length: 0–100classification: pii -
ethnicitystringEthnicity
length: 0–200classification: pii -
motherTonguestringMother tongue
length: 0–100classification: pii -
otherLanguagesstringOther languages spoken
length: 0–300 -
genderenum requiredModelled from two independent radio-button widgets sharing the field name 'KjønnGrupp1'.
enum: Mann | Kvinneclassification: pii -
occupationstringOccupation
length: 0–200classification: pii -
citizenshipsstring requiredCitizenship(s) — list all
length: 0–300classification: pii -
civilStatusenum requiredModelled from six radio-button widgets sharing the field name 'SivilstatusGruppe1'.
enum: Ugift | Gift/partner | Samboer | Separert | Skilt | Enke/enkemann -
civilStatusLastChangedPlaceAndDatestringPlace and date of last change in civil status
length: 0–300 -
homeCountryAddressstring requiredAddress in home country
length: 0–250classification: pii -
homeCountryPostalCodestringPostal code (home country)
length: 0–20classification: pii -
homeCountryPostTownstringPost town (home country)
length: 0–200classification: pii -
homeCountryCountrystring requiredCountry (home country address)
length: 0–100classification: pii -
homeCountryMobilePhonestringMobile phone in home country
length: 0–30classification: pii -
emailstring requiredUDI uses this address to contact the applicant throughout the application process, per the form's own instruction.
length: 0–200classification: pii -
alternateResponseAddressstringAlternate address the decision on this application should be sent to, if any
length: 0–250classification: pii -
alternateResponsePostalCodestringPostal code (alternate response address)
length: 0–20classification: pii -
alternateResponsePostTownstringPlace (alternate response address)
length: 0–200classification: pii -
alternateResponseCountrystringCountry (alternate response address)
length: 0–100classification: pii -
norwayAddressstring requiredAddress in Norway where you live or will live (street/road)
length: 0–250classification: pii -
norwayPostalCodestringPostal code (Norway address)
length: 0–20classification: pii -
norwayPostTownstringPost town (Norway address)
length: 0–200classification: pii -
norwayMobilePhonestringMobile number in Norway
length: 0–30classification: pii -
dateArrivedInNorwaydateDate arrived in Norway, if applicable
-
dateArrivedInSchengenAreadateDate arrived in the Schengen area, if applicable
-
travelDocumentTypeenum requiredModelled from three radio-button widgets sharing the field name 'ReisedokumentGrupp1'.
enum: Pass fra hjemlandet | Reisebevis, utlendingspass eller liknende | Har ikke reisedokument -
travelDocumentNumberstringTravel document number
length: 0–50classification: sensitive-pii -
travelDocumentValidUntildateTravel document valid until
-
travelDocumentIssuingCountrystringCountry where the travel document was issued
length: 0–100 -
travelDocumentIssuingAuthoritystringIssuing authority
length: 0–200 -
otherPersonsInTravelDocumentstringUse a separate sheet if more space is needed, per the form's own instruction.
length: 0–1000 -
previouslyResidedInNorwayboolean requiredModelled from a Ja/Nei radio pair sharing the field name 'OppholdGruppe1'.
-
previousResidencePeriodsAndDurationstringIf yes, time periods and duration
length: 0–300 -
previouslyAppliedForResidenceInNorwayboolean requiredModelled from a Ja/Nei radio pair sharing the field name 'OppholdtGrupp2'.
-
previousResidencePurposeenumModelled from three radio-button widgets sharing the field name 'OppholdGruppe3'.
enum: Turisme | Arbeid | Annet. Spesifiser hva -
previousResidencePurposeOtherstringIf other, please specify
length: 0–300 -
previouslyExpelledFromNorwayboolean requiredModelled from a Ja/Nei radio pair sharing the field name 'OppholdtGrupp4'.
-
entryBanStillInEffectbooleanModelled 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').
-
permitApplicationTypeenum requiredModelled from a two-option radio widget 'TillatelseGruppe1'.
enum: Førstegangstillatelse | Fornyelse -
permitDurationRequestedstringLength of permit requested
length: 0–100 -
permitFromDatedatePermit requested from date
-
permitToDatedatePermit requested to date
-
applyingForFamilyImmigrationboolean requiredSynthetic 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.
-
familyImmigrationRelationshipenumModelled from 11 radio-button widgets sharing the field name 'TillatelseGruppe2'.
enum: 11 values -
accompanyingPersonSurnamestringSurname of the person you are applying for family immigration with
length: 0–200classification: pii -
accompanyingPersonFirstNamestringFirst name of that person
length: 0–200classification: pii -
accompanyingPersonMiddleNamestringMiddle name of that person
length: 0–200classification: pii -
accompanyingPersonPreviousSurnamestringPrevious name/surname of that person, if any
length: 0–200classification: pii -
accompanyingPersonDateOfBirthdateDate of birth of that person
classification: sensitive-pii -
accompanyingPersonPlaceOfBirthstringPlace of birth of that person
length: 0–200classification: pii -
accompanyingPersonCountryOfBirthstringCountry of birth of that person
length: 0–100classification: pii -
accompanyingPersonMotherTonguestringMother tongue of that person
length: 0–100 -
accompanyingPersonGenderenumModelled from two radio-button widgets sharing the field name 'TillatelseGruppe3'.
enum: Mann | Kvinneclassification: pii -
accompanyingPersonCitizenshipsstringCitizenship(s) of that person
length: 0–300classification: pii -
accompanyingPersonAddressstringAddress of that person
length: 0–250classification: pii -
accompanyingPersonPostalCodestringPostal code
length: 0–20classification: pii -
accompanyingPersonPostTownstringPost town
length: 0–200classification: pii -
accompanyingPersonNorwegianPersonalNumberstringNorwegian personal number (personnummer), if any
patternclassification: sensitive-pii -
accompanyingPersonPhonestringPhone
length: 0–30classification: pii -
accompanyingPersonMobilestringMobile
length: 0–30classification: pii -
accompanyingPersonEmailstringEmail
length: 0–200classification: pii -
previouslyMarriedbooleanModelled from a Ja/Nei radio pair sharing the field name 'GiftGruppe1'.
-
previousMarriageYearstringIf yes, when (year)? Use an extra sheet if needed.
length: 0–200 -
previousMarriageDurationstringHow long were you married?
length: 0–200 -
previousSpouseNamestringWho were you married to?
length: 0–200classification: pii -
intendedMarriageOrPartnershipDatedateFor an application for a fiancé(e) permit: the date you will marry or enter into a partnership
-
willLiveAtSameAddressbooleanModelled from a two-option radio widget 'GiftGruppe2' (Ja / Nei, av følgende grunn).
-
differentAddressExplanationstringIf 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 -
willBeSupportedByPersonInNorwayFirstTimebooleanModelled from a two-option radio widget 'GiftGruppe3' (Ja / Nei, forklar).
-
notSupportedExplanationstringIf no, explain why you will not be supported by the person in Norway
length: 0–500 -
isSupportedByPersonInNorwayRenewalbooleanModelled from a Ja/Nei radio pair sharing the field name 'GiftGruppe4'.
-
applyingForWorkPermitboolean requiredSynthetic gating field; see the description of applyingForFamilyImmigration and VERIFICATION.md.
-
workRenewalHasChangesbooleanModelled from a Nei / Ja-fyll-ut-feltet-nedenfor radio pair sharing the field name 'ArbeidGruppe1'.
-
employerNamestringEmployer or client (company name or host family)
length: 0–250classification: pii -
employerOrgNumberstringEmployer's organisation number
length: 0–20 -
employerAddressstringEmployer's address
length: 0–250 -
employerPostalCodestringEmployer's postal code
length: 0–20 -
employerPostTownstringEmployer's post town
length: 0–200 -
employerMobilestringEmployer's mobile number
length: 0–30 -
employerEmailstringEmployer's email
length: 0–200 -
salaryInNokstringSalary in Norwegian kroner
length: 0–50 -
jobTitleOrDutiesstringType of work, job title, or main duties
length: 0–300 -
workPercentageTypeenumModelled from a two-option radio widget 'ArbeidGruppe2'.
enum: 100 % | Annet % -
workPercentageOtherstringThe 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 -
applicantEducationLevelenumModelled 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 -
educationDurationYearsstringDuration of education (years)
length: 0–10 -
educationFieldstringField of education
length: 0–200 -
educationDegreeObtainedstringDegree obtained
length: 0–200 -
hasRelevantWorkExperiencebooleanModelled 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').
-
applyingForEducationPermitboolean requiredSynthetic gating field; see the description of applyingForFamilyImmigration and VERIFICATION.md.
-
followsNormalStudyProgressbooleanModelled from a Ja/Nei radio pair sharing the field name 'UtdanningGruppe1'.
-
continuingAtSameInstitutionbooleanModelled from a Ja/Nei radio pair sharing the field name 'UtdanningGruppe2'.
-
institutionNamestringPlace of study/educational institution
length: 0–250 -
institutionOrgNumberstringInstitution's organisation number
length: 0–20 -
fieldOfStudystringField of study/subject
length: 0–250 -
studyFromMonthYearstringStudies from (month/year)
length: 0–20 -
studyToMonthYearstringStudies to (month/year)
length: 0–20 -
institutionPhonestringInstitution's phone number
length: 0–30 -
institutionEmailstringInstitution's email
length: 0–200 -
studyPlacementOrganizationNamestringName of the organisation that arranged the study/school place, if any
length: 0–250 -
studyFinancingTypeenumModelled from three radio-button widgets sharing the field name 'UtdanningGruppe3'.
enum: Egne midler | Stipend | Annet, forklar -
studyFinancingOtherExplanationstringIf other, explain the financing of your stay
length: 0–300 -
tuitionFeePerSemesterNokstringTuition fee (amount in Norwegian kroner per semester)
length: 0–30 -
applyingForProtectionOrOtherPermitboolean requiredSynthetic gating field; see the description of applyingForFamilyImmigration and VERIFICATION.md.
-
renewingPreviousPermitbooleanModelled from a Ja/Nei radio pair sharing the field name 'BeskyttelseGruppe1'.
-
applyingOnNewBasisbooleanModelled from a Ja/Nei radio pair sharing the field name 'BeskyttelseGruppe2'.
-
newBasisExplanationstringExplain the basis for the permit
length: 0–500 -
protectionPermitBasisenumModelled from three radio-button widgets sharing the field name 'BeskyttelseGruppe3'.
enum: Beskyttelse (asyl) | Tillatelse på grunn av sterke menneskelige hensyn | Annet, forklar -
foreignTripDepartureDate1dateSection 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.
-
foreignTripArrivalDate1dateTrip 1 — date of arrival back in Norway
-
foreignTripAbsenceDays1stringTrip 1 — number of days absent
length: 0–10 -
foreignTripResidenceCountry1stringTrip 1 — country visited
length: 0–100 -
foreignTripPurpose1enumModelled from a two-option radio widget.
enum: Arbeid | Privat -
foreignTripDepartureDate2dateTrip 2 — date of departure from Norway
-
foreignTripArrivalDate2dateTrip 2 — date of arrival back in Norway
-
foreignTripAbsenceDays2stringTrip 2 — number of days absent
length: 0–10 -
foreignTripResidenceCountry2stringTrip 2 — country visited
length: 0–100 -
foreignTripPurpose2enumModelled from a two-option radio widget.
enum: Arbeid | Privat -
foreignTripDepartureDate3dateTrip 3 — date of departure from Norway
-
foreignTripArrivalDate3dateTrip 3 — date of arrival back in Norway
-
foreignTripAbsenceDays3stringTrip 3 — number of days absent
length: 0–10 -
foreignTripResidenceCountry3stringTrip 3 — country visited
length: 0–100 -
foreignTripPurpose3enumModelled from a two-option radio widget.
enum: Arbeid | Privat -
foreignTripDepartureDate4dateTrip 4 — date of departure from Norway
-
foreignTripArrivalDate4dateTrip 4 — date of arrival back in Norway
-
foreignTripAbsenceDays4stringTrip 4 — number of days absent
length: 0–10 -
foreignTripResidenceCountry4stringTrip 4 — country visited
length: 0–100 -
foreignTripPurpose4enumModelled from a two-option radio widget.
enum: Arbeid | Privat -
foreignTripDepartureDate5dateTrip 5 — date of departure from Norway
-
foreignTripArrivalDate5dateTrip 5 — date of arrival back in Norway
-
foreignTripAbsenceDays5stringTrip 5 — number of days absent
length: 0–10 -
foreignTripResidenceCountry5stringTrip 5 — country visited
length: 0–100 -
foreignTripPurpose5enumModelled from a two-option radio widget.
enum: Arbeid | Privat -
foreignTripDepartureDate6dateTrip 6 — date of departure from Norway
-
foreignTripArrivalDate6dateTrip 6 — date of arrival back in Norway
-
foreignTripAbsenceDays6stringTrip 6 — number of days absent
length: 0–10 -
foreignTripResidenceCountry6stringTrip 6 — country visited
length: 0–100 -
foreignTripPurpose6enumModelled from a two-option radio widget.
enum: Arbeid | Privat -
spouseSurnamestringSection 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 -
spouseFirstNamestringSpouse/partner/cohabitant — first name
length: 0–200classification: pii -
spouseDateOfBirthdateSpouse/partner/cohabitant — date of birth
classification: sensitive-pii -
spouseGenderenumModelled from two radio-button widgets sharing the field name 'FamilieGruppe1'.
enum: Mann | Kvinneclassification: pii -
spouseApplyingSimultaneouslybooleanIs the spouse/partner/cohabitant applying at the same time as you?
-
spouseAddressstringSpouse/partner/cohabitant — address
length: 0–250classification: pii -
spousePostalCodeAndPlacestringSpouse/partner/cohabitant — postal code/place
length: 0–200classification: pii -
spouseCountrystringSpouse/partner/cohabitant — country
length: 0–100classification: pii -
parent1FullNamestringSection 6 'Foreldre' (Parents).
length: 0–300classification: pii -
parent1DateOfBirthdateParent 1 — date of birth
classification: sensitive-pii -
parent1CountrystringParent 1 — country of residence
length: 0–100classification: pii -
parent1GenderenumModelled from two radio-button widgets sharing the field name 'FamilieGruppe2'.
enum: Mann | Kvinneclassification: pii -
parent1ApplyingSimultaneouslybooleanIs parent 1 applying at the same time as you?
-
parent2FullNamestringParent 2 — surname, first name
length: 0–300classification: pii -
parent2DateOfBirthdateParent 2 — date of birth
classification: sensitive-pii -
parent2CountrystringParent 2 — country of residence
length: 0–100classification: pii -
parent2GenderenumModelled from two radio-button widgets sharing the field name 'FamilieGruppe3'.
enum: Mann | Kvinneclassification: pii -
parent2ApplyingSimultaneouslybooleanIs parent 2 applying at the same time as you?
-
relative1FullNamestringSection 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 -
relative1DateOfBirthdateRelative 1 — date of birth
classification: sensitive-pii -
relative1CountrystringRelative 1 — country of residence
length: 0–100classification: pii -
relative1RelationshipenumModelled 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 -
relative1GenderenumModelled from two radio-button widgets sharing the field name 'FamilieGruppe4'.
enum: Mann | Kvinneclassification: pii -
relative1ApplyingSimultaneouslybooleanIs relative 1 applying at the same time as you?
-
relative2FullNamestringRelative 2 — surname, first name
length: 0–300classification: pii -
relative2DateOfBirthdateRelative 2 — date of birth
classification: sensitive-pii -
relative2CountrystringRelative 2 — country of residence
length: 0–100classification: pii -
relative2RelationshipenumModelled 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 -
relative2GenderenumModelled from two radio-button widgets sharing the field name 'FamilieGruppe5'.
enum: Mann | Kvinneclassification: pii -
relative2ApplyingSimultaneouslybooleanIs relative 2 applying at the same time as you?
-
relative3FullNamestringRelative 3 — surname, first name
length: 0–300classification: pii -
relative3DateOfBirthdateRelative 3 — date of birth
classification: sensitive-pii -
relative3CountrystringRelative 3 — country of residence
length: 0–100classification: pii -
relative3RelationshipenumModelled 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 -
relative3GenderenumModelled from two radio-button widgets sharing the field name 'FamilieGrupp6'.
enum: Mann | Kvinneclassification: pii -
relative3ApplyingSimultaneouslybooleanIs relative 3 applying at the same time as you?
-
relative4FullNamestringRelative 4 — surname, first name
length: 0–300classification: pii -
relative4DateOfBirthdateRelative 4 — date of birth
classification: sensitive-pii -
relative4CountrystringRelative 4 — country of residence
length: 0–100classification: pii -
relative4RelationshipenumModelled 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 -
relative4GenderenumModelled from two radio-button widgets sharing the field name 'FamilieGrupp7'.
enum: Mann | Kvinneclassification: pii -
relative4ApplyingSimultaneouslybooleanIs relative 4 applying at the same time as you?
-
relative5FullNamestringRelative 5 — surname, first name
length: 0–300classification: pii -
relative5DateOfBirthdateRelative 5 — date of birth
classification: sensitive-pii -
relative5CountrystringRelative 5 — country of residence
length: 0–100classification: pii -
relative5RelationshipenumModelled 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 -
relative5GenderenumModelled from two radio-button widgets sharing the field name 'FamilieGrupp8'.
enum: Mann | Kvinneclassification: pii -
relative5ApplyingSimultaneouslybooleanIs relative 5 applying at the same time as you?
-
relative6FullNamestringRelative 6 — surname, first name
length: 0–300classification: pii -
relative6DateOfBirthdateRelative 6 — date of birth
classification: sensitive-pii -
relative6CountrystringRelative 6 — country of residence
length: 0–100classification: pii -
relative6RelationshipenumModelled 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 -
relative6GenderenumModelled from two radio-button widgets sharing the field name 'FamilieGrupp9'.
enum: Mann | Kvinneclassification: pii -
relative6ApplyingSimultaneouslybooleanIs relative 6 applying at the same time as you?
-
childrenCountstringNumber of children
length: 0–10 -
sistersCountstringNumber of sisters
length: 0–10 -
brothersCountstringNumber of brothers
length: 0–10 -
siblingsInNorwayCountstringNumber of siblings living in Norway
length: 0–10 -
underInvestigationForCriminalOffenseboolean requiredModelled from a Ja/Nei radio pair sharing the field name 'StraffGruppe1'.
-
investigationLocationOrCountrystringIf yes, in which police district/country?
length: 0–200 -
previouslyConvictedOfCrimeboolean requiredModelled from a Ja/Nei radio pair sharing the field name 'StraffGruppe2'.
-
convictionWhenAndWherestringIf yes, when and where were you convicted?
length: 0–300 -
convictionReactionFinebooleanModelled from a checkbox widget 'Straffereaksjon: Bot'.
-
fineAmountstringFine amount
length: 0–30 -
convictionReactionPrisonbooleanModelled from a checkbox widget 'Straffereaksjon: Fengselstraff'.
-
prisonSentenceDaysstringPrison sentence (days)
length: 0–20 -
typeOfCriminalOffensestringType of criminal offense
length: 0–300 -
sentenceServedAndProbationOverbooleanModelled from a two-option radio widget 'StraffGruppe4' (Ja / Nei, forklar).
-
probationNotOverExplanationstringIf no, explain why the probation period is not yet over
length: 0–300 -
poaAcknowledgeCorrespondenceToAttorneybooleanAcknowledgement checkbox preceding the power-of-attorney grant.
-
poaAcknowledgeDecisionToAttorneybooleanI understand that my representative will receive the decision instead of me
-
poaGrantAuthoritybooleanI grant the following person power of attorney to act on my behalf regarding my application
-
attorneySurnamestringRepresentative's surname
length: 0–200classification: pii -
attorneyFirstNamestringRepresentative's first name
length: 0–200classification: pii -
attorneyAddressstringRepresentative's address
length: 0–250classification: pii -
attorneyPostalCodestringRepresentative's postal code
length: 0–20classification: pii -
attorneyPostTownstringRepresentative's post town
length: 0–200classification: pii -
attorneyCountrystringRepresentative's country
length: 0–100classification: pii -
attorneyPhonestringRepresentative's phone
length: 0–30classification: pii -
attorneyMobilestringRepresentative's mobile
length: 0–30classification: pii -
attorneyEmailstringRepresentative's email
length: 0–200classification: pii -
consentToSmsEmailNotificationsbooleanI agree to receive information about my case by SMS and email
-
applicantSignaturePlaceAndDatestring requiredThe 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 -
guardian1SignaturePlaceAndDatestringSection 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 -
guardian2SignaturePlaceAndDatestringParent/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,473bytes, genuine%PDF-1.6header, 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:
page.getAnnotations()per page, to enumerate every raw/Widgetannotation with its field name, type, and rect.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'sentrantN-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-levelUtenlandsoppholdGruppeNpurpose 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 uniformfamilyMemberNgroup, 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 namedEtternavnet 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 asrelative1FullName, not a surname-only field, since the visual table structure is the source of truth over the internal widget name. Disclosed stray widget: one extraFamilieGruppe5"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:
passportPhoto(identity-document, unconditionally required) — the printed "Bilde" (Photo) placeholder box, page 1.entryBanLiftingApplication(supporting-evidence,requiredWhen entryBanStillInEffect == true) — theOppholdGruppe5radio's own "Ja" option text instructs the applicant to attach this.workExperienceDocumentation(supporting-evidence,requiredWhen hasRelevantWorkExperience == true) — theArbeidGruppe4radio's own "Ja" option text instructs the applicant to attach this.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'sno/skatteetatenprecedent 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+correctnessAttestationattached. 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:
- Removing
applicantSignaturePlaceAndDatefrom the work-permit fixture →applicantSignaturePlaceAndDate: required but missing. - Removing
passportPhotofrom the work-permit fixture'sdocuments[]→documents.passportPhoto: required but missing(exercises thedocuments[]blind spot on an unconditionally-required document). - Removing
fineAmountfrom the family-immigration fixture (which setsconvictionReactionFine: true) →fineAmount: required but missing. - Setting
entryBanStillInEffect: trueon the family-immigration fixture without attachingentryBanLiftingApplication→documents.entryBanLiftingApplication: required but missing(exercises thedocuments[]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
FamilieGruppe5widget on page 5. relative1FullNamemodelled 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.0draftlatestthis pagehas verification recordschema.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.