This tutorial turns the two-page Checklist for New Application for Single Permit into a working Identità flow.

The checklist contains 15 numbered items. We will not create 15 unconditional Steps. Some items are application facts from NIDMS, some accept alternative documents, and some apply only to a particular job or accommodation type.

By the end, the flow will:

  • collect the documents needed for every new Single Permit application;
  • ask simple routing questions for conditional documents;
  • enforce the checklist's document rules;
  • compare important facts across the application pack; and
  • show the correct manifest before a run is processed.

Warning

This tutorial models the supplied checklist. If Identità publishes a newer checklist or changes a policy, update the catalogue, rules, and tutorial before using the flow for live applications.

1. Translate the checklist before opening the builder

First decide what each checklist item means inside the program.

Checklist item Model it as
01 Residence Application Form Core Step and source for the NIDMS Profile Variables that can be derived from the form.
02 Passport (Full Copy) Core Passport Step plus full-copy and eight-month-validity rules.
03 Work Contract Core Work Contract Step plus signatures, wage, duration, sports endorsement, and vehicle-detail rules.
04 Position Description Core Position Description Step plus signatures and cross-checks against the contract.
05 Proof of Advertisement Core Proof of Advertisement Step plus channel, publication-date, duration, and submission-window rules.
06 Declaration of Suitability Core Declaration of Suitability Step.
07 Health Screening Conditional Health Screening Approval Step.
08 Property Lease or Purchase Agreement One core Accommodation Evidence Step that accepts the correct accommodation document for the applicant.
09 Housing Authority Approval Conditional Step for rented accommodation.
10 Lease Professional Attestation A separate conditional Step for rented accommodation.
11 Health Insurance Policy Core Health Insurance Step plus cover and duration rules.
12 Driving Licence Conditional Step when the applicant will operate a vehicle.
13 Pre-Departure Course Conditional Step controlled by whether the course is required for this application.
14 Additional Documents Separate conditional Steps for food handling, security, electricians, nursing/midwifery, and tourism/hospitality.
15 Other Documents Do not make this an always-required catch-all Step. Add a known requirement when Identità requests a specific extra document.

Why the Residence Application Form is different

For this flow, the Residence Application Form is a real core Step. Its extracted values feed derived Profile Variables. Cross-document checks use those resolved Profile Variables as the NIDMS side of the comparison instead of reading the form fields directly.

The important facts include:

nidms_given_names
nidms_surname
nidms_passport_number
nidms_address_in_malta
nidms_employment_start_date
nidms_employment_end_date

Not every routing fact appears on the form. Keep those values as defined Profile Variables and set them when the run is created. For example, application_type, submitter_type, employer_kind, and hiring_route remain set values. Do not change them to derived values without a real source field.

The NIDMS identity tutorial explains how the two kinds of Profile Variable work together.

2. Check the document catalogue

Before creating the flow, open the document catalogue in Admin and confirm that every requirement and accepted document type exists.

Most of the required catalogue already exists:

  • Travel Document;
  • Work Contract;
  • Position Description;
  • Proof of Advertisement;
  • Declaration of Suitability;
  • Health Screening Approval;
  • property lease, accommodation declaration, and keeper's declaration;
  • Housing Authority Approval;
  • Professional Lease Attestation;
  • Health Insurance;
  • Driving Licence;
  • Pre-Departure Course Certificate;
  • Food Handling Certificate;
  • Security Licence and Tag;
  • Electrician Licence;
  • Nursing/Midwifery Certificate; and
  • Tourism and Hospitality Skills Pass.

Catalogue support used by this flow

The Identità catalogue includes the checklist-specific additions below. Check that they are present before activating a manually created flow:

Catalogue feature Why it exists
Applicant property purchase Property Purchase Agreement is separate from Proof of Purchase (non-EU landlord), which proves an accommodation provider's ownership.
Lease attestation Lease Professional Attestation is a separate requirement. A rented application needs the lease and the attestation, not one or the other.
Position Description signatures applicant_signature and employer_signature are separate Signature fields.
Advertisement channels advertising_channels stores every channel; its validator uses the canonical Jobsplus, EURES, local, and other values.
Vehicle details in contract Work Contract fields store the vehicle type, sitting-passenger capacity, driver capacity, and wheelchair-user capacity.

Also confirm that the main Accommodation Evidence requirement accepts:

  • Property Lease Agreement;
  • Property Purchase Agreement;
  • Keeper's Declaration for a hotel or guest house; and
  • Declaration of Accommodation for free accommodation.

The Lease Professional Attestation must remain a separate requirement.

Note

A Step points to a requirement, and a requirement lists the document types that may satisfy it. Alternatives belong inside one requirement. Documents that must both be supplied need separate Steps.

3. Create the empty flow

  1. Open Flows.
  2. Select New Flow.
  3. Enter New Single Permit Checklist as the name.
  4. Enter Documents and checks for a new Single Permit application as the description.
  5. Clear Active while the flow is being built.
  6. Select Create.

The empty builder contains Steps, Profile Variables, Cross-Document Checks, and Manifest Preview.

4. Add the routing Profile Variables

Profile Variables answer the questions that decide which conditional Steps belong in one applicant's manifest.

Create these variables with manual only as the source:

Label Name Type Choices or meaning
Accommodation type accommodation_kind Choice rented, owned, hotel, hosted_free
Health screening required health_screening_required Yes / No Whether IDCU screening approval applies.
Sports employment sports_employment Yes / No Whether the sports-association endorsement rule applies.
Operates an LPTV operates_lptv Yes / No Requires a Malta or EU driving licence.
Operates another vehicle operates_other_vehicle Yes / No Requires the appropriate country-of-origin driving licence.
Pre-departure course required pre_departure_course_required Yes / No Whether the course certificate is required for this applicant.
Food handling role food_handling_role Yes / No Requires a food-handling certificate.
Security officer role security_officer_role Yes / No Requires both the security tag and police licence evidence.
Electrician role electrician_role Yes / No Requires the Maltese electrician licence.
Nursing or midwifery role nursing_midwifery_role Yes / No Requires the Maltese council certificate.
Tourism or hospitality role tourism_hospitality_role Yes / No Requires full Skills Pass certification.

For Accommodation type, enter these choices:

rented | Rented property
owned | Applicant-owned property
hotel | Hotel or guest house
hosted_free | Free accommodation

Use separate Yes/No variables for the occupations. One applicant can need more than one extra document. For example, a catering job in hospitality may need both a Food Handling Certificate and a Skills Pass.

To add each variable:

  1. Select Add Variable.
  2. enter the Label and Name exactly as shown;
  3. choose Choice or Yes / No;
  4. leave document auto-derivation empty;
  5. add a short description; and
  6. select Add variable.

The officer sets these answers on the run's Application tab. An integration can populate them earlier when NIDMS and occupation routing are connected.

5. Add the always-needed Steps

Add these Steps first. Keep Core step selected, leave Required when empty, and use Send back when a required document is missing.

Order Bundle Document requirement Reviewer notes
10 Identity Identità: Passport Full copy, including blank pages; original must be presented at biometrics.
20 Employment Identità: Work Contract Must include wage and duration and be signed by applicant and employer.
30 Employment Identità: Position Description Must be completed and signed by applicant and employer; details must correspond with the contract.
40 Employment Identità: Proof of Advertisement Jobsplus and EURES; full publication date; at least 3 weeks within the 2 months before application.
50 Employment Identità: Declaration of Suitability Must be fully completed and signed by the employer.
70 Health Identità: Health Insurance Issued policy, not a quote; EUR 100,000 minimum; outpatient and hospital cover; covers the first year.
80 Accommodation Identità: Accommodation Document Applicant must appear as lessee, purchaser, guest, or accommodated person as applicable.

Add the Passport Step like this:

  1. Select Add Step.
  2. choose Identità: Passport;
  3. enter order 10;
  4. enter bundle Identity;
  5. keep Core step selected;
  6. choose Send back for a missing document;
  7. leave both conditions empty;
  8. enter the reviewer note from the table; and
  9. select Add step.

Repeat the same pattern for the other core rows.

6. Add conditional health and accommodation Steps

Conditional Steps should have Core step cleared. Their condition decides whether they belong in the manifest.

Health Screening Approval

Option Value
Order 60
Bundle Health
Requirement Identità: Health Screening Approval
Required when Health screening required is yes
Missing action Send back

The checklist refers to the IDCU requirements. Set health_screening_required from the applicable health-screening policy. If the approval is required for every application handled by this flow, make the Step core and remove the variable.

Housing Authority Approval

Option Value
Order 90
Bundle Accommodation
Requirement Identità: Housing Authority Approval
Required when Accommodation type is rented
Missing action Send back

Lease Professional Attestation

Option Value
Order 100
Bundle Accommodation
Requirement Lease Professional Attestation
Required when Accommodation type is rented
Depends on Identità: Accommodation Document
Missing action Send back

The attestation must be signed by the landlord and completed and officially stamped by the lawyer, notary, or legal procurator.

7. Add the vehicle and occupation Steps

Add these with Core step cleared:

Order Requirement Required when
110 Identità: Driving Licence ANY: Operates an LPTV is yes; Operates another vehicle is yes
120 Identità: Pre-Departure Course Certificate Pre-departure course required is yes
130 Identità: Food Handling Certificate Food handling role is yes
140 Identità: Security Licence & Tag Security officer role is yes
150 Identità: Electrician Licence B Electrician role is yes
160 Identità: Nursing/Midwifery Certificate Nursing or midwifery role is yes
170 Identità: Skills Pass Tourism or hospitality role is yes

Use bundle Occupation-specific evidence for all of them.

For the Driving Licence Step:

  1. add the first condition, Operates an LPTV is yes;
  2. add the second condition, Operates another vehicle is yes; and
  3. choose ANY of rather than ALL of.

The applicant needs a licence when either driving route applies.

The supplied checklist does not explicitly limit the Pre-Departure Course to one occupation. The separate pre_departure_course_required variable avoids hard-coding an assumption. If the governing policy later says that every new application needs it, make the Step core.

8. Add document validation rules

Steps answer which document is needed. Validation rules answer whether the received document meets the checklist.

The flow builder does not currently expose a form for creating FlowValidationRule records. Add these through the validated flow seed or Django Admin. The supplied flow importer validates the rule structure before it updates a tenant.

Add at least these rules:

Document Rule Operator and evidence Failure action
Passport Full passport copy equals: full_copy_complete = true Send back
Passport More than 8 months validity minimum_date_offset_months: expiry_date, 8 months Send back
Work Contract Applicant signature present required: applicant_signature Send back
Work Contract Employer signature present required: employer_signature Send back
Work Contract Wage present required: gross_salary Send back
Work Contract Employment duration present Require commencement_date; review contract_end_date or open-ended wording Send back
Work Contract Sports endorsement Conditional on sports_employment is yes; equals: sports_association_endorsed = true Send back
Work Contract Wage complies with current DIER rules external_review: gross_salary, salary_frequency Flag to officer
Position Description Applicant signature present required: applicant_signature Send back
Position Description Employer signature present required: employer_signature Send back
Proof of Advertisement Full publication date present required: publication_date Send back
Proof of Advertisement Published within previous 2 months date_within_application_window: publication_date, 2 months Send back
Proof of Advertisement Advert ran for at least 3 weeks minimum_number: advertised_duration_days >= 21 Send back
Proof of Advertisement Jobsplus and EURES both present external_review until the rule engine supports a contains-all operator Send back
Declaration of Suitability Employer signature present required: employer_signature Send back
Health Screening IDCU approval equals: is_from_idcu = true; review approval_outcome Send back
Health Insurance Hospitalisation covered equals: hospitalisation_covered = true Send back
Health Insurance Outpatient treatment covered equals: outpatient_covered = true Send back
Health Insurance At least EUR 100,000 minimum_number: coverage_limit >= 100000 Send back
Health Insurance At least 12 months minimum_period_months: coverage start/end, 12 months Send back
Driving Licence Not expired minimum_date_offset_months: expiry_date, 0 months Send back
Driving Licence Correct issuing authority for route external_review: issuing_country, vehicle_categories Flag to officer
Skills Pass QR verification is valid Review verification_code.valid from SkillsPassQRCode Send back

Do not put policy thresholds such as EUR 100,000 into the general money field type. Store the truthful amount and let a named business rule fail. See How validation works.

9. Add the important cross-document checks

Now compare the facts that should tell the same story across the application pack.

Create these checks:

Key Name Match type Suggested field sets
SP01 Applicant name Fuzzy Passport given_names + surname; Work Contract full_name; Position Description applicant name when added; Declaration of Suitability full_name; Health Insurance full_name; role certificates full_name
SP02 Passport number Exact Passport passport_number; Work Contract passport_number; Declaration of Suitability applicant_document_number
SP03 Employer name Fuzzy Work Contract employer_name; Position Description employer_name; Proof of Advertisement employer_name; Declaration of Suitability employer_name
SP04 Job title Fuzzy Work Contract job_title; Position Description job_title; Proof of Advertisement job_titles; Declaration of Suitability job_title
SP05 Wage Exact Work Contract gross_salary + salary_frequency; Position Description gross_salary + salary_frequency
SP06 Applicant signature Signature Work Contract applicant_signature; Position Description applicant_signature
SP07 Employer signature Signature Work Contract employer_signature; Position Description employer_signature; Declaration of Suitability employer_signature
SP08 Accommodation address Fuzzy Accommodation document property_address; Housing Authority Approval property_address; Lease Attestation property_address
SP09 Applicant is accommodation holder Fuzzy Passport name; lease lessees, purchase agreement purchasers, accommodation declaration full_name, or keeper declaration full_name
SP10 Insured person Fuzzy Passport name; Health Insurance full_name
SP11 Licence or certificate holder Fuzzy Passport name; applicable Driving Licence, Food Handling, Security, Electrician, Nursing, Pre-Departure, or Skills Pass holder name
SP12 Skills Pass role Fuzzy Skills Pass job_family; Work Contract and Position Description job_title

Use Block severity and Send back when a mismatch means the submitted pack must be corrected. Use Flag and Flag to officer for signatures, external records, or wording that needs judgement.

The Proof of Advertisement job_titles field is a list. The fuzzy check compares each advertised job separately and passes when one candidate matches the proposed role. See Standardise difficult cross-checks and the match-type reference.

Add the NIDMS profile comparisons

Add a Profile variables field set to the applicable checks:

  • NIDMS applicant name against Passport and employment documents;
  • NIDMS passport number against the Passport;
  • NIDMS Malta address against the accommodation pack; and
  • NIDMS intended employment dates against insurance and accommodation coverage.

Choose the derived nidms_* variables as the reference source. The run first extracts the Residence Application Form, resolves those Profile Variables, and then compares the uploaded evidence with the resolved NIDMS profile.

10. Add reviewer notes from the checklist

Reviewer notes keep instructions visible beside each run requirement. Include:

  • every uploaded original must be presented at the biometrics appointment;
  • the passport copy must include blank pages;
  • sports contracts need the association endorsement;
  • vehicle-operating contracts must state the vehicle and capacities;
  • the Position Description must correspond with the contract;
  • accommodation evidence must name the applicant;
  • a lease must show start and end dates;
  • a hotel requires the Keeper's Declaration;
  • free accommodation requires the Declaration of Accommodation;
  • the lease attestation needs the landlord signature and professional stamp;
  • an insurance quote is not a policy; and
  • role-specific licences and certificates must belong to the applicant.

Notes explain what to review. Use validation rules and cross-checks for findings that must appear in Checks and affect the recommendation.

11. Test the Manifest Preview

Do not activate the flow until the preview produces the right list for several profiles.

Scenario A: ordinary office role in rented accommodation

accommodation_kind = rented
health_screening_required = yes
all occupation flags = no
pre_departure_course_required = no

Expected conditional documents:

  • Health Screening Approval;
  • Housing Authority Approval; and
  • Lease Professional Attestation.

No driving or occupation-specific certificate should appear.

Scenario B: hospitality catering role in a hotel

accommodation_kind = hotel
health_screening_required = yes
food_handling_role = yes
tourism_hospitality_role = yes
pre_departure_course_required = yes

Expected accommodation document:

  • Keeper's Declaration through the Accommodation Evidence requirement.

Expected extras:

  • Food Handling Certificate;
  • Full Skills Pass;
  • Pre-Departure Course Certificate; and
  • Health Screening Approval.

Housing Authority Approval and Lease Professional Attestation must be Not required.

Scenario C: LPTV driver with free accommodation

accommodation_kind = hosted_free
operates_lptv = yes
operates_other_vehicle = no

Expected extras:

  • Driving Licence; and
  • Declaration of Accommodation through the Accommodation Evidence requirement.

If both driving variables are unanswered, the Driving Licence Step should be Undecided, not silently Not required.

12. Run one complete test application

After the previews are correct:

  1. edit the flow and select Active;
  2. create a test run with a non-production reference;
  3. fill every routing Profile Variable;
  4. upload one file for every required Step;
  5. wait for Automated review to finish;
  6. check Requirements for missing and Received-with-issues documents;
  7. check Documents for extraction validation errors;
  8. check Checks for document-rule and cross-document results;
  9. correct one extracted value and confirm that dependent results rerun;
  10. replace one document and confirm that stale overrides are cleared when the computed result changes; and
  11. download the vetting report and confirm that the checklist findings and SOP references are understandable.

Use the Run Detail reference while testing.

Finished-flow checklist

The flow is ready only when:

  • every supplied-checklist requirement has a clear Step, condition, rule, or documented NIDMS source;
  • alternatives are grouped into one requirement and documents needed together use separate Steps;
  • every conditional Step has a Profile Variable and tested manifest scenario;
  • each document type exposes the fields needed by its rules and cross-checks;
  • factual field types do not contain policy thresholds;
  • named SOP rules appear under Document checks;
  • cross-document checks use the correct Exact, Fuzzy, Range, Signature, or External match type;
  • Residence Application Form values are routed through derived NIDMS Profile Variables before cross-checking;
  • a complete test run reaches Ready for decision; and
  • the generated report explains both the evidence and the recommendation.