🦎 Rules explained · Conservation Regulator

Rules-as-code · Plain-English guide

Applying for a wildlife licence

How the digitised Wildlife Regulations 2024 take what an applicant wants to do with wildlife and work out — automatically — which kind of licence they need, which single licence should be issued, what the application form must contain, and roughly what it will cost. No code, no jargon left unexplained.

Conservation Regulator 12 licence types · 19 encoded rule groups Version v1.0.0 Source: staging

How to read this guide

This ruleset is about the application, not the licence once held. It starts from what an applicant says they want to do — the animals, the activities, the purpose, the source — and runs them through a five-step pipeline to reach a recommended licence type, a set of required form fields, and an indicative fee. Everything is worked out by the same rules, evaluated top-to-bottom; when two rules touch the same value, the later one wins. The colour code is constant throughout: Permitted / applies, Not permitted, Obligated / Required, Rules work out.

01

The big picture

The Wildlife Regulations 2024 create twelve kinds of wildlife licence — basic, advanced, specimen, dingo, controller, dealer, demonstrator, displayer, game bird farmer, processor, farmer and taxidermist — plus separate import and export permits. Which one an applicant needs depends not on ticking a box but on the combination of what they want to do, which animals are involved, and why.

This ruleset does that reasoning for them. It takes the application's inputs and runs a five-step pipeline:

  1. Expand the activities — some activities imply others (breeding an animal means keeping it, and keeping it means possessing a live animal). The rules fill those in first.
  2. Test every licence gate — each licence type has a set of conditions. The rules check all of them and flag every licence type the request would need.
  3. Converge on one licence to issue — a single recommended licence type is chosen from whatever was flagged.
  4. Decide which form fields are required — applicant identity, premises, enclosures and supporting evidence become Required according to who is applying and for what.
  5. Estimate the fee — each licence type has a fee in “fee units”, prorated over the requested term.

A separate check runs alongside step 2: the application is only permissible if it maps to at least one licence type. If the requested combination matches nothing, that is itself the answer — no licence covers it.

Four ideas behind the rules

Idea 1

Facts in, licence out

The applicant never picks a licence type. They describe what they want to do and with which animals; the rules derive the licence, the required fields and the fee. Anything the rules work out is marked Rules work out.

Idea 2

Every licence is a gate

A licence type isn't unlocked by one fact. Each is a small combination — an activity and a Schedule (or animal trait) and a purpose. Miss any part and that licence doesn't apply; a different one might.

Idea 3

Activities cascade

Real activities overlap. Buying implies acquiring; keeping implies possessing a live animal; breeding implies both. The rules expand the applicant's ticks before testing any gate, so the gates see the full picture.

Idea 4

The later rule wins

Rules run top-to-bottom. When several licence types are flagged, the convergence step re-assigns the single recommended type in order, so the last matching line decides. This one idea explains which licence an ambiguous application ends up with.

02

What the system asks about

The application is one big record. Most of it is You provide — facts the applicant supplies. A smaller set is Rules work out — conclusions the rules derive. These are the fields that actually drive the logic below; the full model has more, but they follow the same pattern.

🗂️ The application

The hub record — who is applying and what they want to do.

Desired activitiesYou providebuy, sell, keep, breed, display, …
PurposeYou providecommercial, educational, hunting, …
Wildlife sourceYou providetaken from the wild, farmed, …
Is a natural person?You provideyes / no (vs a company)
Issue months (term)You providenumber of months
Licence typeRules work outthe recommended type
Indicative feeRules work outfee units → amount

🐊 The wildlife

Which official lists the animal appears on, plus a few traits. These are the key that opens most gates.

Listed in Schedule 2 / 3A / 3B / 4A / 4B / 5A / 5B / 6 / 7You provideyes / no each
Is a dingoYou provideyes / no
Is a bird / bred in captivityYou provideyes / no
Is aliveYou provideyes / no
Includes venomous / dangerous wildlifeYou provideyes / no

⚖️ Required licences

One yes/no flag per licence type — all computed. Step 2 sets them; step 3 reads them.

Is basic / advanced / specimen / dingo / controller / dealer … licence requiredRules work outyes / no each
Licence types selectedRules work outany licence flagged?

🧾 The fee

Worked out from the licence type and the requested term.

Fee unitsRules work outset by licence type
Fee per month / amountRules work outprorated over the term
Cost per fee unitYou provide$16.22 (configuration)
03

Step 1 · Expanding what you asked to do

Before any licence is tested, the rules fill in the activities that are implied by the ones the applicant ticked (Section 7). This matters because the licence gates below check for specific activities — and an applicant who says “I want to breed” shouldn't have to separately tick “keep” and “possess” for the gates to fire.

If the applicant ticks……the rules also set
Buy wildlifeAcquire wildlife
Receive wildlifePossess wildlife
Keep wildlifePossess wildlife · Wildlife is alive
Breed wildlifePossess wildlife · Keep wildlife · Wildlife is alive

These run in order, so a chain resolves in one pass: breeding turns on keeping, which (already set) implies possessing a live animal. The is alive flag it sets is later used to exclude the specimen, taxidermist and processor gates, which all require the animal not to be alive.

04

Step 2 · Which licence each request needs

This is the heart of the ruleset. Each licence type (Sections 8–19) is a gate: a combination of an activity, the animal's Schedule (or a trait), and a purpose. The rules test every gate independently and set a yes/no flag for each type the request matches. An application can match several at once — that's expected, and step 3 resolves it.

Almost every gate is built the same way: “any handling activity AND the right Schedule AND the right purpose.” Here is the basic-licence gate drawn out; the others differ only in which Schedules and purposes they check.

The full set of gates, with the primary condition for each. “Handling activity” means any of the acquire/keep/possess/dispose/display family (each gate lists a slightly different subset). Where a gate has more than one route to a “yes”, the alternative is noted.

Licence typeActivityWildlifePurpose / other
Basic S8Any handlingSchedule 2 or 7Non-commercial
Advanced S9Any handlingSchedule 2, 3A, 3B or 7Non-commercial
Specimen S10Any handlingPrepared or mounted specimen · not aliveNon-commercial
Dingo S11Any handling or displayIs a dingoNon-commercial · or canine-show display · or educational display
Controller S12Destroy or disposeTaken from the wildNon-commercial
Dealer S13Any handling · or dispose (not sell) of dead stockSchedule 2, 3A, 4B or 7Commercial
Demonstrator S14Any handling(for the films route) Schedule 2–4BPromote ecology + conservation · or commercial-films display
Displayer S15Any handling / displayCommercial-films · conservation · or educational
Game bird farmer S16Any handling · or possess/display dead stockIs a bird · bred in captivity · (or dead + specimen)For hunting
Processor S17Buy/acquire/receive · or sell/keep/processSchedule 5A · (or dead Schedule 7)Provide products for sale
Farmer S18Any handling · or dispose of infertile eggsSchedule 7For farming wildlife
Taxidermist S19Buy/acquire/receive · or sell/keep/displaySchedule 2–4B · not alivePreserve / mount / restore
Import / Export S115Import / export wildlife

Running alongside these gates is a single obligation (the “Misc” rule): the application must map to at least one licence type. The rules OR together the flags from basic through taxidermist into a computed licence types selected value and mark it Obligated — the machine-checkable way of saying “if this application matches no licence, it isn't permissible as-is.” (The dingo and import/export flags are absent from that roll-up — see Observations 1 and 2.)

05

Step 3 · Landing on one licence to issue

Step 2 can flag several licence types. Step 3 picks the single one to actually issue. It does this with a run of rules — one per type — each of the form “if this type is flagged, set the recommended licence type to it.” Because rules run top-to-bottom and the last match wins, the effective priority is the reverse of the writing order:

Effective priority (highest first)Recommended licence type
1Taxidermist
2Farmer
3Processor
4Game bird farmer
5Displayer (also the demonstrator + dealer tie-break)
6Dingo
7Demonstrator
8Dealer
9Controller
10Specimen
11Advanced (but basic + advanced together ⇒ basic)
12Basic

So an application that qualifies for several categories is issued the one highest in effective priority — for example, a request that needs both a controller and a taxidermist licence is recommended a taxidermist licence. Two deliberate tie-breaks are built in: basic + advanced resolves back to basic, and demonstrator + dealer resolves to displayer. (Two behaviours that earlier versions got wrong here — the specimen case and the missing dingo line — have since been corrected: specimen now issues a specimen licence, and there is now a dingo line. Import/export still has no line — Observation 2.)

06

Step 4 · What the application must include

Section 20 turns the application into a form. Depending on who is applying and for what, individual fields become Required (must be filled in) or stay optional. The main triggers:

  • Who is applying — a natural person must give their own name, date of birth, phone and residential address; a company must give the same details for the person responsible for the licensed activities.
  • Keeping wildlife — if the applicant will keep wildlife, each wildlife-premises address is required (for every premises listed); a commercial applicant who won't keep wildlife must instead give a business-premises address.
  • Employees, premises & enclosures — for each employee acting on the applicant's behalf, their identity and start date are required; each wildlife premises and enclosure prompts for its plans.
  • Dingo licences — proof of age over 18 and proof of dingo-enclosure construction are required.
  • A standing obligation — every applicant must declare any animal-cruelty findings of guilt in the past ten years (marked Obligated).
  • Travelling displays — a demonstrator/displayer taking venomous or dangerous wildlife on the road is prompted for travelling-enclosure plans.

Import/export permits (Section 115) add their own applicant name-and-address requirements when either permit is needed. Several of the field rules in this section have wiring slips worth a look — see Observation 4.

07

Step 5 · The indicative fee

Section 23 attaches a fee to the recommended licence type. Every type has a fixed number of fee units; the amount is those units prorated over the requested term (issue months), with a concession halving for eligible individuals.

Recommended licence typeFee units
Basic6.7
Advanced12.4
Specimen1
Dingo9.6
Controller20
Dealer57.2
Demonstrator37.3
Displayer51.3
Game bird farmer49.2
Processor49.2
Farmer49.2
Taxidermist40.7

The amount is built in two moves. A fee per month is set to the cost of a fee unit ($16.22) divided by 12 for terms under 18 months, or by 15 for terms of 18 months or more — a modest bulk discount on longer licences. The amount is then fee per month × issue months × fee units, so at a 12-month term it equals the licence's fee units × the cost per unit, exactly as expected. Finally, a natural person eligible for a concession has the amount halved. (An earlier version left the cost-per-unit out and applied the term twice; the current encoding fixes both.)

08

Worked examples

Three applications traced through the pipeline: the common ambiguous case, a clean single-licence case, and the dingo case that still trips the permissibility check.

🦜 A · A hobbyist keeping a Schedule 2 parrot

Given Wants to buy and keep the bird Yes
Given Animal is listed in Schedule 2 Yes
Given Purpose is commercial No
1 Expand: buy ⇒ acquire; keep ⇒ possess + the animal is alive.
2 Gates: the basic gate (handling + Schedule 2 + non-commercial) fires. The advanced gate also accepts Schedule 2 and non-commercial, so it fires too. Both flags are set.
3 Converge: basic ⇒ basic, advanced ⇒ advanced, then the “basic + advanced” tie-break sets it back to basic.
4 Fee: basic = 6.7 fee units, prorated over the term.
Recommended a Wildlife basic licence. (A live Schedule 2 animal also satisfies the advanced gate, but the tie-break keeps it basic.)

🏪 B · A commercial dealer of Schedule 3A birds

Given Wants to buy and sell live birds Yes
Given Animal is listed in Schedule 3A Yes
Given Purpose is commercial Yes
1 Expand: buy ⇒ acquire.
2 Gates: the basic and advanced gates both require non-commercial, so neither fires. The dealer gate (handling + commercial + Schedule 2/3A/4B/7) fires.
3 Converge: only dealer is flagged ⇒ recommended type is dealer.
4 Fields & fee: commercial and not keeping wildlife ⇒ a business-premises address is required; dealer = 57.2 fee units.
Recommended a Wildlife dealer licence, with a business address required.

🐕 C · A non-commercial dingo keeper

Given Wants to keep the animal Yes
Given Animal is a dingo Yes
Given Purpose is commercial No
1 Expand: keep ⇒ possess + alive.
2 Gates: the dingo gate (handling + is-a-dingo + non-commercial) fires and sets is dingo licence required.
3 Converge: there is now a dingo line, so the recommended licence type is set to Dingo licence, and step 5 prices it at 9.6 fee units.
4 Permissibility: the dingo flag is still left out of the “at least one licence selected” roll-up, so a dingo-only application reads as matching no licence for that obligation — even though a Dingo licence was issued and priced.
The dingo licence is now correctly issued and priced, but still doesn't satisfy the permissibility check. This is the remaining half of the gap in Observation 1.
09

Test cases

Coverage at a glance

17 test suite(s), 45 scenario(s), 96 expectation(s) in total. 43 scenario(s) assert an outcome; 2 assert nothing (inputs only).

Scenarios that assert nothing exercise the rules but cannot pass or fail — they are a coverage gap worth noting.

The 45 scenarios still concentrate on step 2 — the twelve licence gates. Each of Sections 8–19 gets a small suite pairing a positive case (the right activity + Schedule + purpose, asserting the matching isX LicenceRequired = true) with one or two negatives (wrong Schedule, or commercial flipped, asserting it stays false). Suite S7 checks the activity-implication shortcuts, and small suites cover the permissibility roll-up (“Misc”), the convergence, and — new since the earlier encoding — the indicative fee (Section 23) and the Dingo gate (S11). That gate coverage is genuinely solid and now reaches further down the pipeline than it once did.

The remaining gaps are in convergence and the tail of the pipeline. The convergence suite tests only the basic and advanced cases, so the last-match-wins priority for the other ten types — including the newly-added Dingo line and the specimen → specimen fix — is unverified. The required-fields logic (Section 20) has just two scenarios, and the import/export permits (Section 115) and the permissibility gap for a dingo-only application (Observation 2) have none.

Two scenarios are also weak in construction: two assert nothing at all (the S13 venomous-snake case and the S14 conservation-breeding case), so they run the rules but can neither pass nor fail. Most tellingly, the “Basic plus advanced equals advanced” scenario asserts the issued type is advanced, while the rules resolve basic + advanced to basic (Observation 5) — so either that test or that rule is wrong, and nothing currently forces the question.

S8 Wildlife basic licence

3 scenario(s) · rules JnuLJdbB88QWH54dmNDx0E4k→JnuLJdbB88QWH54dmNDx0E4k
Basic licence required

Given these inputs

@id:98ZudGRxsbWEzxgsul1kNlZb
@type:Regsoft
@name:Basic licence required
application.desiredActivities.aquireWildlife:True
application.desiredActivities.breedWildlife:False
application.desiredActivities.buyWildlife:True
application.desiredActivities.displayWildlife:False
application.desiredActivities.disposeOfWildlife:False
application.desiredActivities.keepWildlife:False
application.desiredActivities.possessWildlife:False
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:False
application.purpose.isCommercial:False
application.wildlife.isListedInSchedule2:True
application.wildlife.isListedInSchedule7:False

Then expect

  • value of Regsoft.application.licences.isBasicLicenceRequired = True
Wildlife from a different schedule requires a different licence

Given these inputs

@id:YONpXzJV3z3Jl9Fda8wvcXwh
@type:Regsoft
@name:Wildlife from a different schedule requires a different licence
application.desiredActivities.aquireWildlife:True
application.desiredActivities.breedWildlife:False
application.desiredActivities.buyWildlife:True
application.desiredActivities.displayWildlife:False
application.desiredActivities.disposeOfWildlife:False
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:True
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:False
application.purpose.isCommercial:False
application.wildlife.isListedInSchedule2:False
application.wildlife.isListedInSchedule7:False

Then expect

  • value of Regsoft.application.licences.isBasicLicenceRequiredTrue
Commercial purposes require a different licence

Given these inputs

@id:GXVkz95uslkJ1csVu6ZBSTUA
@type:Regsoft
@name:Commercial purposes require a different licence
application.desiredActivities.aquireWildlife:True
application.desiredActivities.breedWildlife:False
application.desiredActivities.buyWildlife:True
application.desiredActivities.displayWildlife:False
application.desiredActivities.disposeOfWildlife:False
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:False
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:False
application.purpose.isCommercial:True
application.wildlife.isListedInSchedule2:True
application.wildlife.isListedInSchedule7:False

Then expect

  • value of Regsoft.application.licences.isBasicLicenceRequiredTrue

S7 Setting implied actions

4 scenario(s) · rules 3BTSGBweVC9z2icjVtBVnahM→3BTSGBweVC9z2icjVtBVnahM
Buying wildlife implies keeping wildlife

Given these inputs

@id:LZPs4U8KxZwIJoVShyfQO0GR
@type:Regsoft
@name:Buying wildlife implies keeping wildlife
application.desiredActivities.breedWildlife:False
application.desiredActivities.buyWildlife:True
application.desiredActivities.keepWildlife:False
application.desiredActivities.receiveWildlife:False

Then expect

  • value of Regsoft.application.desiredActivities.aquireWildlife = True
Receiving wildlife implies possessing wildlife

Given these inputs

@id:lr8uWO8GGMbxEKbNbYtceZ0s
@type:Regsoft
@name:Receiving wildlife implies possessing wildlife
application.desiredActivities.breedWildlife:False
application.desiredActivities.buyWildlife:False
application.desiredActivities.keepWildlife:False
application.desiredActivities.receiveWildlife:True

Then expect

  • value of Regsoft.application.desiredActivities.possessWildlife = True
Keeping wildlife implies possessing live wildlife

Given these inputs

@id:wbwFLrKL2bL5AEQGs6ULia00
@type:Regsoft
@name:Keeping wildlife implies possessing live wildlife
application.desiredActivities.breedWildlife:False
application.desiredActivities.buyWildlife:False
application.desiredActivities.keepWildlife:True
application.desiredActivities.receiveWildlife:False

Then expect

  • value of Regsoft.application.desiredActivities.possessWildlife = True
  • value of Regsoft.application.wildlife.isAlive = True
Breeding wildlife implies possessing and keeping live wildlife

Given these inputs

@id:HelbhofVJPeMr0MopuoawG2h
@type:Regsoft
@name:Breeding wildlife implies possessing and keeping live wildlife
application.desiredActivities.breedWildlife:True
application.desiredActivities.buyWildlife:False
application.desiredActivities.keepWildlife:False
application.desiredActivities.receiveWildlife:False

Then expect

  • value of Regsoft.application.desiredActivities.possessWildlife = True
  • value of Regsoft.application.desiredActivities.keepWildlife = True
  • value of Regsoft.application.wildlife.isAlive = True

S9 Wildlife advanced licence

3 scenario(s) · rules 2EHzjiU2iOmvaO0bns18q8eD→2EHzjiU2iOmvaO0bns18q8eD
Schedule 3 taxa require advanced licence

Given these inputs

@id:eYpZ4pupiE8wiQg8JzJtBDtK
@type:Regsoft
@name:Advanced licence required
application.desiredActivities.aquireWildlife:True
application.desiredActivities.breedWildlife:False
application.desiredActivities.buyWildlife:True
application.desiredActivities.displayWildlife:False
application.desiredActivities.disposeOfWildlife:False
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:False
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:False
application.purpose.isCommercial:False
application.wildlife.isListedInSchedule2:False
application.wildlife.isListedInSchedule3PartA:False
application.wildlife.isListedInSchedule3PartB:True
application.wildlife.isListedInSchedule7:False

Then expect

  • value of Regsoft.application.licences.isAdvancedLicenceRequired = True
Schedule 2 taxa do not require an advanced licence

Given these inputs

@id:VBC2s3rMTEaReK97NgqPwJOx
@type:Regsoft
@name:Schedule 2 animals don't require advanced licence
application.desiredActivities.aquireWildlife:True
application.desiredActivities.breedWildlife:False
application.desiredActivities.buyWildlife:True
application.desiredActivities.displayWildlife:False
application.desiredActivities.disposeOfWildlife:False
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:True
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:False
application.purpose.isCommercial:False
application.wildlife.isListedInSchedule2:True
application.wildlife.isListedInSchedule3PartA:False
application.wildlife.isListedInSchedule3PartB:False
application.wildlife.isListedInSchedule7:False

Then expect

  • value of Regsoft.application.licences.isAdvancedLicenceRequiredTrue
Commercial keeping of venemous taxa is not permitted

Given these inputs

@id:6cGYpKH714Afg1622idGkgP9
@type:Regsoft
@name:Commercial keeping of venemous taxa is not permitted
application.desiredActivities.aquireWildlife:True
application.desiredActivities.breedWildlife:False
application.desiredActivities.buyWildlife:True
application.desiredActivities.displayWildlife:False
application.desiredActivities.disposeOfWildlife:False
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:True
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:False
application.purpose.isCommercial:True
application.wildlife.isListedInSchedule3PartA:False
application.wildlife.isListedInSchedule3PartB:True

Then expect

  • value of Regsoft.application.licences.isAdvancedLicenceRequiredTrue

S10 Wildlife specimen licence

2 scenario(s) · rules ohg9h2rLhJxPZpyEhQswDLxF→ohg9h2rLhJxPZpyEhQswDLxF
Specimen licence required for non-commercial mounted specimens

Given these inputs

@id:v9DlOeqndNgWgsjxfJjjCQSp
@type:Regsoft
@name:Specimen licence required to handle mounted specimens
application.desiredActivities.aquireWildlife:True
application.desiredActivities.buyWildlife:True
application.desiredActivities.disposeOfWildlife:False
application.desiredActivities.keepWildlife:False
application.desiredActivities.possessWildlife:True
application.desiredActivities.receiveWildlife:False
application.desiredActivities.sellWildlife:False
application.purpose.isCommercial:False
application.specimen.isMountedSpecimen:True
application.specimen.isPreparedSpecimen:False
application.wildlife.isAlive:False

Then expect

  • value of Regsoft.application.licences.isSpecimenLicenceRequired = True
Commercial selling of mounted animals is not enabled by a specimen licence

Given these inputs

@id:XGRYv8u50A9ZZYaxmusrOupE
@type:Regsoft
@name:Commercial selling of mounted animals is not allowed for specimen licences
application.desiredActivities.aquireWildlife:True
application.desiredActivities.buyWildlife:True
application.desiredActivities.disposeOfWildlife:True
application.desiredActivities.keepWildlife:False
application.desiredActivities.possessWildlife:True
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:True
application.purpose.isCommercial:True
application.specimen.isMountedSpecimen:True
application.specimen.isPreparedSpecimen:False
application.wildlife.isAlive:False

Then expect

  • value of Regsoft.application.licences.isSpecimenLicenceRequiredTrue

S11 Dingo licence

3 scenario(s) · rules TcRqIG8cX5l5tejUtT6INXL8→TcRqIG8cX5l5tejUtT6INXL8
Showing dingo at canine events is allowed

Given these inputs

@id:Ll7wmVdbnCCx98costjOSqwo
@type:Regsoft
@name:Application for Dingo licence
application.desiredActivities.aquireWildlife:True
application.desiredActivities.breedWildlife:False
application.desiredActivities.buyWildlife:False
application.desiredActivities.displayWildlife:False
application.desiredActivities.disposeOfWildlife:False
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:True
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:False
application.purpose.isCommercial:False
application.purpose.isEducational:False
application.purpose.isToDisplayAtCanineAssociationShow:True
application.wildlife.isDingo:True

Then expect

  • value of Regsoft.application.licences.isDingoLicenceRequired = True
Non-commercial dingo possession is allowed for educational purposes

Given these inputs

@id:uHoLv4g3z7R4dvCel4KBRP7Y
@type:Regsoft
@name:Non-commercial dingo possession is allowed for educational purposes
application.desiredActivities.aquireWildlife:True
application.desiredActivities.breedWildlife:False
application.desiredActivities.buyWildlife:True
application.desiredActivities.displayWildlife:True
application.desiredActivities.disposeOfWildlife:False
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:True
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:False
application.purpose.isCommercial:False
application.purpose.isEducational:True
application.purpose.isToDisplayAtCanineAssociationShow:False
application.wildlife.isDingo:True

Then expect

  • value of Regsoft.application.licences.isDingoLicenceRequired = True
Commercial dingo display is not permitted under this licence

Given these inputs

@id:GCyv36t9gT9qiRfWsD1tJoW3
@type:Regsoft
@name:Commercial dingo display is not permitted under this licence
application.desiredActivities.aquireWildlife:True
application.desiredActivities.breedWildlife:False
application.desiredActivities.buyWildlife:True
application.desiredActivities.displayWildlife:True
application.desiredActivities.disposeOfWildlife:False
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:True
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:False
application.purpose.isCommercial:True
application.purpose.isEducational:False
application.purpose.isToDisplayAtCanineAssociationShow:False
application.wildlife.isDingo:True

Then expect

  • value of Regsoft.application.licences.isDingoLicenceRequiredTrue

S12 Wildlife controller licence

3 scenario(s) · rules emICJPL5wHLn26U8kNe3exdL→emICJPL5wHLn26U8kNe3exdL
Destroying wildlife requires a controller licence

Given these inputs

@id:hHcKihPSHdZIkNuwadv5Wg3b
@type:Regsoft
@name:Basic controller licence application
application.desiredActivities.destroyWildlife:True
application.desiredActivities.disposeOfWildlife:False
application.purpose.isCommercial:False
application.wildlifeSource.isTakenFromTheWild:True

Then expect

  • value of Regsoft.application.licences.isControllerLicenceRequired = True
Commercial activity not permitted under controller licence

Given these inputs

@id:RMiHtjJNumdBVgrCzTENIZIQ
@type:Regsoft
@name:Commercial activity not permitted under controller licence
application.desiredActivities.destroyWildlife:True
application.desiredActivities.disposeOfWildlife:False
application.purpose.isCommercial:True
application.wildlifeSource.isTakenFromTheWild:True

Then expect

  • value of Regsoft.application.licences.isControllerLicenceRequiredTrue
Wildlife must be taken from the wild

Given these inputs

@id:ZFrLsmsHl9LhIN3Hh0emJdiO
@type:Regsoft
@name:Wildlife must be taken from the wild
application.desiredActivities.destroyWildlife:True
application.desiredActivities.disposeOfWildlife:False
application.purpose.isCommercial:False
application.wildlifeSource.isTakenFromTheWild:False

Then expect

  • value of Regsoft.application.licences.isControllerLicenceRequiredTrue

S13 Wildlife dealer licence

3 scenario(s) · rules XQmAVaCIrmRb9rVgev9It735→XQmAVaCIrmRb9rVgev9It735
Commercial display of wildlife permitted

Given these inputs

@id:JSO6PCggvlK1rbWKQySNhIha
@type:Regsoft
@name:Basic licence
application.desiredActivities.aquireWildlife:True
application.desiredActivities.breedWildlife:True
application.desiredActivities.buyWildlife:True
application.desiredActivities.displayWildlife:True
application.desiredActivities.disposeOfWildlife:False
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:True
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:False
application.purpose.isCommercial:True
application.wildlife.isListedInSchedule2:True
application.wildlife.isListedInSchedule3PartA:False
application.wildlife.isListedInSchedule4PartB:False
application.wildlife.isListedInSchedule7:True

Then expect

  • value of Regsoft.application.licences.isDealerLicenceRequired = True
Non-commercial disposal of dead wildlife is permitted

Given these inputs

@id:3XQgj236nGt0lv1LCp8skRyL
@type:Regsoft
@name:Non-commercial disposal of dead wildlife is permitted
application.desiredActivities.aquireWildlife:True
application.desiredActivities.buyWildlife:True
application.desiredActivities.displayWildlife:True
application.desiredActivities.disposeOfWildlife:True
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:True
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:False
application.purpose.isCommercial:False
application.wildlife.isListedInSchedule2:True
application.desiredActivities.breedWildlife:False
application.wildlife.isAlive:False
application.wildlife.isListedInSchedule3PartA:False
application.wildlife.isListedInSchedule4PartB:False
application.wildlife.isListedInSchedule7:False

Then expect

  • value of Regsoft.application.licences.isDealerLicenceRequired = True
Commercial selling of venemous snakes not permitted under dealer licence

Given these inputs

@id:sYOMglDgfKnzsnrreOlMF0qs
@type:Regsoft
@name:Commercial selling of venemous snakes not permitted under dealer licence
application.desiredActivities.aquireWildlife:True
application.desiredActivities.breedWildlife:False
application.desiredActivities.buyWildlife:True
application.desiredActivities.displayWildlife:False
application.desiredActivities.disposeOfWildlife:True
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:True
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:True
application.purpose.isCommercial:True
application.wildlife.isListedInSchedule2:False
application.wildlife.isListedInSchedule3PartA:False
application.wildlife.isListedInSchedule4PartB:False
application.wildlife.isListedInSchedule7:False

Then expect

Nothing asserted — this scenario has no expectations.

S14 Wildlife demonstrator licence

3 scenario(s) · rules Y7wQlPS070oT3xkslBQAQypY→Y7wQlPS070oT3xkslBQAQypY
Breeding venemous snakes to promote conservation is allowed

Given these inputs

@id:bHqLDCXmywXafslDL387YM1J
@type:Regsoft
@name:Breeding venemous snakes to promote conservation is allowed
application.desiredActivities.aquireWildlife:True
application.desiredActivities.breedWildlife:True
application.desiredActivities.buyWildlife:True
application.desiredActivities.displayWildlife:False
application.desiredActivities.disposeOfWildlife:True
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:True
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:False
application.purpose.isToDisplayInCommercialFilms:False
application.purpose.isToPromoteConservation:True
application.purpose.isToPromoteUnderstandingOfEcology:False
application.wildlife.isListedInSchedule2:False
application.wildlife.isListedInSchedule3PartA:False
application.wildlife.isListedInSchedule3PartB:True
application.wildlife.isListedInSchedule4PartA:False
application.wildlife.isListedInSchedule4PartB:False

Then expect

Nothing asserted — this scenario has no expectations.

Breeding Green Pygmy-Geese for display in commercial films is permitted

Given these inputs

@id:TlcHVmOWaEhE1m6NSsQ4gtO1
@type:Regsoft
@name:Breeding Green Pygmy-Geese for display in commercial films is permitted
application.desiredActivities.aquireWildlife:True
application.desiredActivities.breedWildlife:True
application.desiredActivities.buyWildlife:True
application.desiredActivities.displayWildlife:True
application.desiredActivities.disposeOfWildlife:False
application.desiredActivities.keepWildlife:False
application.desiredActivities.possessWildlife:False
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:True
application.purpose.isToDisplayInCommercialFilms:True
application.purpose.isToPromoteConservation:False
application.purpose.isToPromoteUnderstandingOfEcology:False
application.wildlife.isListedInSchedule2:False
application.wildlife.isListedInSchedule3PartA:False
application.wildlife.isListedInSchedule3PartB:False
application.wildlife.isListedInSchedule4PartA:True
application.wildlife.isListedInSchedule4PartB:False

Then expect

  • value of Regsoft.application.licences.isDemonstratorLicenceRequired = True
Keeping wildlife for educational purposes is permitted

Given these inputs

@id:GH6aVaf8IXreXf7tHa9tChMI
@type:Regsoft
@name:Keeping wildlife for educational purposes is permitted
application.desiredActivities.aquireWildlife:True
application.desiredActivities.breedWildlife:False
application.desiredActivities.buyWildlife:False
application.desiredActivities.displayWildlife:True
application.desiredActivities.disposeOfWildlife:False
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:True
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:False
application.listedInSubRegulation2:True
application.purpose.isToDisplayInCommercialFilms:False
application.purpose.isToPromoteConservation:True
application.purpose.isToPromoteUnderstandingOfEcology:True
application.wildlife.isListedInSchedule2:True
application.wildlife.isListedInSchedule3PartA:False
application.wildlife.isListedInSchedule3PartB:False
application.wildlife.isListedInSchedule4PartA:False
application.wildlife.isListedInSchedule4PartB:False

Then expect

  • value of Regsoft.application.licences.isDemonstratorLicenceRequired = True

S15 Wildlife displayer licence

2 scenario(s) · rules 0ilyxVfFUzOx16qUCZS1quox→0ilyxVfFUzOx16qUCZS1quox
Breeding wildlife for educational purposes is allowed under this licence

Given these inputs

@id:GTykAfT6FUn6LB8iKrAjZmQZ
@type:Regsoft
@name:Breeding wildlife for edcucational purposes is allowed under this licence
application.desiredActivities.aquireWildlife:True
application.desiredActivities.breedWildlife:True
application.desiredActivities.buyWildlife:True
application.desiredActivities.displayWildlife:True
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:True
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:False
application.purpose.isEducational:True
application.purpose.isToDisplayInCommercialFilms:False
application.purpose.isToPromoteConservation:False

Then expect

  • value of Regsoft.application.licences.isDisplayerLicenceRequired = True
Keeping wildlife for display in commercial films is permitted

Given these inputs

@id:XrHVX45HiwWUfdzjfzCykzKL
@type:Regsoft
@name:Keeping wildlife for display in commercial films is permitted
application.desiredActivities.aquireWildlife:True
application.desiredActivities.breedWildlife:False
application.desiredActivities.buyWildlife:True
application.desiredActivities.displayWildlife:False
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:True
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:False
application.purpose.isEducational:False
application.purpose.isToDisplayInCommercialFilms:True
application.purpose.isToPromoteConservation:False

Then expect

  • value of Regsoft.application.licences.isDisplayerLicenceRequired = True

S16 Game bird farmer licence

2 scenario(s) · rules cAYI8hmFy4kjO80Bf7zXxazS→cAYI8hmFy4kjO80Bf7zXxazS
Selling captive birds bred for hunting is permitted

Given these inputs

@id:dMbncHidiVhzUu1HxkLZoPZ2
@type:Regsoft
@name:Game bird licence
application.desiredActivities.aquireWildlife:True
application.desiredActivities.breedWildlife:False
application.desiredActivities.buyWildlife:True
application.desiredActivities.destroyWildlife:False
application.desiredActivities.displayWildlife:False
application.desiredActivities.disposeOfWildlife:True
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:True
application.desiredActivities.processWildlife:False
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:True
application.purpose.isForHunting:True
application.specimen.isMountedSpecimen:False
application.specimen.isPreparedSpecimen:False
application.wildlife.isAlive:True
application.wildlife.isBird:True
application.wildlife.isBredInCaptivity:True

Then expect

  • value of Regsoft.application.licences.isGameBirdFarmerLicenceRequired = True
Possessing dead birds for mounting is allowed with this licence

Given these inputs

@id:8AzDs6EZJ1nIqtmir3ycLNfB
@type:Regsoft
@name:Possessing dead wildlife for mounting is allowed with this licence
application.desiredActivities.aquireWildlife:False
application.desiredActivities.breedWildlife:False
application.desiredActivities.buyWildlife:False
application.desiredActivities.destroyWildlife:False
application.desiredActivities.displayWildlife:False
application.desiredActivities.disposeOfWildlife:False
application.desiredActivities.keepWildlife:False
application.desiredActivities.possessWildlife:True
application.desiredActivities.processWildlife:True
application.desiredActivities.receiveWildlife:False
application.desiredActivities.sellWildlife:False
application.purpose.isForHunting:False
application.specimen.isMountedSpecimen:True
application.specimen.isPreparedSpecimen:False
application.wildlife.isAlive:False
application.wildlife.isBird:True
application.wildlife.isBredInCaptivity:False

Then expect

  • value of Regsoft.application.licences.isGameBirdFarmerLicenceRequired = True

S17 Wildlife processor licence

3 scenario(s) · rules JCdSDg3FmemQmCWSiQGrJwVp→JCdSDg3FmemQmCWSiQGrJwVp
Selling dead wildlife from schedule 5a is permitted under this licence

Given these inputs

@id:YLKRJsWPew1nWHoJsBoIKvbW
@type:Regsoft
@name:Selling wildlife from schedule 5a is permitted under this licence
application.desiredActivities.aquireWildlife:False
application.desiredActivities.buyWildlife:True
application.desiredActivities.disposeOfWildlife:False
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:False
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:True
application.purpose.isToProvideProductsForSale:True
application.wildlife.isAlive:False
application.wildlife.isListedInSchedule5PartA:True
application.wildlife.isListedInSchedule7:False

Then expect

  • value of Regsoft.application.licences.isProcessorLicenceRequired = True
Processing wildlife from schedule 7 is permitted

Given these inputs

@id:YLKRJsWPew1nWHoJsBoIKvbW
@type:Regsoft
@name:Selling wildlife from schedule 5a is permitted under this licence
application.desiredActivities.aquireWildlife:False
application.desiredActivities.buyWildlife:True
application.desiredActivities.disposeOfWildlife:False
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:False
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:True
application.purpose.isToProvideProductsForSale:True
application.wildlife.isAlive:False
application.wildlife.isListedInSchedule5PartA:False
application.wildlife.isListedInSchedule7:True

Then expect

  • value of Regsoft.application.licences.isProcessorLicenceRequired = True
Test

Given these inputs

@id:KrOlW3rD6pJHSNHKXBYrihqY
@type:Regsoft
@name:Test
application.desiredActivities.aquireWildlife:True
application.desiredActivities.buyWildlife:True
application.desiredActivities.disposeOfWildlife:True
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:True
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:True
application.purpose.isToProvideProductsForSale:True
application.wildlife.isAlive:False
application.wildlife.isListedInSchedule5PartA:False
application.wildlife.isListedInSchedule7:False

Then expect

  • value of Regsoft.application.licences.isProcessorLicenceRequired = True

S18 Wildlife farmer licence

3 scenario(s) · rules QM3KVzJCikWiAoZzW9TKFZsM→QM3KVzJCikWiAoZzW9TKFZsM
Selling products from Schedule 7 allowed with Farmer's licence

Given these inputs

@id:5CMo4mEvPnNNFvCmyN67ulP4
@type:Regsoft
@name:Selling products from Schedule 5 Part A allowed with Farmer's licence
application.desiredActivities.aquireWildlife:True
application.desiredActivities.breedWildlife:True
application.desiredActivities.buyWildlife:True
application.desiredActivities.destroyWildlife:False
application.desiredActivities.displayWildlife:False
application.desiredActivities.disposeOfInfertileEggs:False
application.desiredActivities.disposeOfWildlife:True
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:True
application.desiredActivities.processWildlife:False
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:True
application.purpose.isForFarmingWildlife:True
application.wildlife.isListedInSchedule7:True

Then expect

  • value of Regsoft.application.licences.isFarmerLicenceRequired = True
Selling wildlife from schedule 7 not for farming purposes is prohibited

Given these inputs

@id:LcdeHoKRczB2LQbCE5Xz7NGt
@type:Regsoft
@name:Selling wildlife from schedule 7 not for farming purposes is prohibited
application.desiredActivities.aquireWildlife:True
application.desiredActivities.breedWildlife:True
application.desiredActivities.buyWildlife:True
application.desiredActivities.destroyWildlife:False
application.desiredActivities.displayWildlife:False
application.desiredActivities.disposeOfInfertileEggs:False
application.desiredActivities.disposeOfWildlife:True
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:True
application.desiredActivities.processWildlife:False
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:True
application.purpose.isForFarmingWildlife:False
application.wildlife.isListedInSchedule7:True

Then expect

  • value of Regsoft.application.licences.isFarmerLicenceRequiredyes
Disposing of infertile eggs from schedule 7 is permitted

Given these inputs

@id:BRbswuQRJsYCOwwhZaMwGdnf
@type:Regsoft
@name:Disposing of infertile eggs from schedule 7 is permitted
application.desiredActivities.aquireWildlife:True
application.desiredActivities.breedWildlife:True
application.desiredActivities.buyWildlife:True
application.desiredActivities.destroyWildlife:False
application.desiredActivities.displayWildlife:False
application.desiredActivities.disposeOfInfertileEggs:True
application.desiredActivities.disposeOfWildlife:False
application.desiredActivities.keepWildlife:True
application.desiredActivities.possessWildlife:True
application.desiredActivities.processWildlife:False
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:False
application.purpose.isForFarmingWildlife:False
application.wildlife.isListedInSchedule7:True

Then expect

  • value of Regsoft.application.licences.isFarmerLicenceRequired = True

s19 Wildlife taxidermist licence

2 scenario(s) · rules 3HInDREVgDcUXpI0M7gtzka3→3HInDREVgDcUXpI0M7gtzka3
Preserving wildlife requires a licence

Given these inputs

@id:4JTpxDHs503kam8pzeQiVMNH
@type:Regsoft
@name:Preserving wildlife requires a licence
application.desiredActivities.aquireWildlife:True
application.desiredActivities.buyWildlife:False
application.desiredActivities.displayWildlife:False
application.desiredActivities.disposeOfWildlife:True
application.desiredActivities.keepWildlife:False
application.desiredActivities.possessWildlife:True
application.desiredActivities.processWildlife:True
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:True
application.purpose.isToDisplayInCommercialFilms:False
application.purpose.isToPrepareAndMountWildlife:True
application.purpose.isToPreserveWildlife:True
application.purpose.isToProvideCompleteSpecimensOfWildlife:True
application.purpose.isToProvidePartsOfWildlife:True
application.purpose.isToRestoreCompleteSpecimens:True
application.purpose.isToRestorePartsOfWildlife:True
application.wildlife.isAlive:False
application.wildlife.isListedInSchedule2:True
application.wildlife.isListedInSchedule3PartA:False
application.wildlife.isListedInSchedule3PartB:False
application.wildlife.isListedInSchedule4PartA:False
application.wildlife.isListedInSchedule4PartB:False

Then expect

  • value of Regsoft.application.licences.isTaxidermistLicenceRequired = True
Providing dead wildlife for films is permitted with taxidermist licence

Given these inputs

@id:WBEt5jz84BXjF2n1Dj6HcdxS
@type:Regsoft
@name:Providing dead wildlife for films is permitted with taxidermist licence
application.desiredActivities.aquireWildlife:True
application.desiredActivities.buyWildlife:False
application.desiredActivities.displayWildlife:True
application.desiredActivities.disposeOfWildlife:True
application.desiredActivities.keepWildlife:False
application.desiredActivities.possessWildlife:True
application.desiredActivities.processWildlife:True
application.desiredActivities.receiveWildlife:True
application.desiredActivities.sellWildlife:True
application.purpose.isToDisplayInCommercialFilms:True
application.purpose.isToPrepareAndMountWildlife:True
application.purpose.isToPreserveWildlife:True
application.purpose.isToProvideCompleteSpecimensOfWildlife:True
application.purpose.isToProvidePartsOfWildlife:True
application.purpose.isToRestoreCompleteSpecimens:True
application.purpose.isToRestorePartsOfWildlife:True
application.wildlife.isAlive:False
application.wildlife.isListedInSchedule2:True
application.wildlife.isListedInSchedule3PartA:False
application.wildlife.isListedInSchedule3PartB:False
application.wildlife.isListedInSchedule4PartA:False
application.wildlife.isListedInSchedule4PartB:False

Then expect

  • value of Regsoft.application.licences.isTaxidermistLicenceRequired = True

Misc: check that the provided answers are permissable under a (any) licence

2 scenario(s) · rules fDpGp1y7zyvxk12MqjEsUK9l→fDpGp1y7zyvxk12MqjEsUK9l
Selecting basic licence selects licence type

Given these inputs

@id:YLVA5j1J1SF4lb3Id0BcT11A
@type:Regsoft
@name:Selecting basic licence selects licence type
application.licences.isAdvancedLicenceRequired:False
application.licences.isBasicLicenceRequired:True
application.licences.isControllerLicenceRequired:False
application.licences.isDealerLicenceRequired:False
application.licences.isDemonstratorLicenceRequired:False
application.licences.isDisplayerLicenceRequired:False
application.licences.isFarmerLicenceRequired:False
application.licences.isGameBirdFarmerLicenceRequired:False
application.licences.isProcessorLicenceRequired:False
application.licences.isSpecimenLicenceRequired:False
application.licences.isTaxidermistLicenceRequired:False

Then expect

  • modality of rule SoVmjXOMHwmdyQtrViyepis6 is OBLIGATED
Selecting advanced licence selects licence type

Given these inputs

@id:YLVA5j1J1SF4lb3Id0BcT11A
@type:Regsoft
@name:Selecting basic licence selects licence type
application.licences.isAdvancedLicenceRequired:False
application.licences.isBasicLicenceRequired:True
application.licences.isControllerLicenceRequired:False
application.licences.isDealerLicenceRequired:False
application.licences.isDemonstratorLicenceRequired:False
application.licences.isDisplayerLicenceRequired:False
application.licences.isFarmerLicenceRequired:False
application.licences.isGameBirdFarmerLicenceRequired:False
application.licences.isProcessorLicenceRequired:False
application.licences.isSpecimenLicenceRequired:False
application.licences.isTaxidermistLicenceRequired:False

Then expect

  • modality of rule SoVmjXOMHwmdyQtrViyepis6 is OBLIGATED

20 Application for issue of wildlife licence

2 scenario(s) · rules xAy4mMTL8J9WFsvGntyniti4→xAy4mMTL8J9WFsvGntyniti4
Individual applicant completes required fields

Given these inputs

@id:zHlpHWukIdSX4AoEoZENXMBp
@type:Regsoft
@name:Individual applicant
application.businessPremises.country:Australia
application.businessPremises.postcode:2439
application.businessPremises.state:Victoria
application.businessPremises.streetName:Test
application.businessPremises.streetNumber:12
application.businessPremises.suburb:Conrad
application.desiredActivities.keepWildlife:True
application.evidence.includesDemonstrationOfHandlingVenomousSnakes:True
application.evidence.includesGuardianConsent:False
application.evidence.includesProofOfAgeGreaterThan18:True
application.evidence.includesProofOfDingoEnclosureConstruction:False
application.isNaturalPerson:True
application.licences.isAdvancedLicenceRequired:False
application.licenceType:Wildlife basic licence
application.nonPersonApplying.personResponsibleForLicencedActivities.isUnder18YearsOfAge:True
application.nonPersonApplying.personResponsibleForLicencedActivities.name.familyName:Value
application.nonPersonApplying.personResponsibleForLicencedActivities.name.givenName:
application.purpose.isCommercial:False
application.wildlife.isListedInSchedule3PartB:True
application.evidence.includesCrueltyToAnimalsFindingsOfGuilt:True
application.includesATravellingDisplay:False
application.personApplying.name.familyName:family
application.personApplying.name.givenName:given
application.personApplying.name.title:title
application.personApplying.residentialAddress.country:Australia
application.personApplying.residentialAddress.postcode:3000
application.personApplying.residentialAddress.state:Victoria
application.personApplying.residentialAddress.streetName:Brunton Ave
application.personApplying.residentialAddress.streetNumber:3
application.personApplying.residentialAddress.suburb:Richmond
application.personApplying.telephone:(03) 9657 8888
application.travellingEnclosure.plans.includesTheConstructionMaterials:False
application.travellingEnclosure.plans.showsTheDimensionsOfTheEnclosure:False
application.travellingEnclosure.plans.showsTheLayoutOfTheEnclosure:False
application.wildlife.includesDangerousWildlife:False
application.wildlife.includesVenemousWildlife:False

Then expect

  • Regsoft.application.personApplying.name.title is not required
  • Regsoft.application.personApplying.name.givenName is required
  • Regsoft.application.personApplying.name.familyName is required
  • Regsoft.application.personApplying.dateOfBirth is required
  • Regsoft.application.personApplying.telephone is required
  • Regsoft.application.personApplying.residentialAddress.apartmentNumber is not required
  • Regsoft.application.personApplying.residentialAddress.streetNumber is required
  • Regsoft.application.personApplying.residentialAddress.streetName is required
  • Regsoft.application.personApplying.residentialAddress.suburb is required
  • Regsoft.application.personApplying.residentialAddress.state is required
  • Regsoft.application.personApplying.residentialAddress.postcode is required
  • Regsoft.application.personApplying.residentialAddress.country is required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.name.title is not required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.name.givenName is not required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.name.familyName is not required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.dateOfBirth is not required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.apartmentNumber is not required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.streetNumber is not required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.streetNumber is not required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.streetName is not required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.suburb is not required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.postcode is not required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.state is not required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.country is not required
  • Regsoft.application.evidence.includesGuardianConsent is required
  • Regsoft.application.evidence.includesDemonstrationOfHandlingVenomousSnakes is not required
  • Regsoft.application.evidence.includesProofOfDingoEnclosureConstruction is not required
Corporate application requies responsible adult supervision

Given these inputs

@id:zHlpHWukIdSX4AoEoZENXMBp
@type:Regsoft
@name:Individual applicant
application.businessPremises.country:Australia
application.businessPremises.postcode:2439
application.businessPremises.state:Victoria
application.businessPremises.streetName:Test
application.businessPremises.streetNumber:12
application.businessPremises.suburb:Conrad
application.desiredActivities.keepWildlife:True
application.evidence.includesDemonstrationOfHandlingVenomousSnakes:True
application.evidence.includesGuardianConsent:False
application.evidence.includesProofOfAgeGreaterThan18:True
application.evidence.includesProofOfDingoEnclosureConstruction:False
application.isNaturalPerson:False
application.licences.isAdvancedLicenceRequired:False
application.licenceType:Wildlife basic licence
application.nonPersonApplying.personResponsibleForLicencedActivities.isUnder18YearsOfAge:False
application.nonPersonApplying.personResponsibleForLicencedActivities.name.familyName:family
application.nonPersonApplying.personResponsibleForLicencedActivities.name.givenName:given
application.purpose.isCommercial:True
application.wildlife.isListedInSchedule3PartB:False
application.evidence.includesCrueltyToAnimalsFindingsOfGuilt:True
application.includesATravellingDisplay:False
application.personApplying.name.familyName:
application.personApplying.name.givenName:
application.personApplying.name.title:
application.personApplying.residentialAddress.country:
application.personApplying.residentialAddress.postcode:3000
application.personApplying.residentialAddress.state:Victoria
application.personApplying.residentialAddress.streetName:
application.personApplying.residentialAddress.streetNumber:3
application.personApplying.residentialAddress.suburb:
application.personApplying.telephone:
application.travellingEnclosure.plans.includesTheConstructionMaterials:True
application.travellingEnclosure.plans.showsTheDimensionsOfTheEnclosure:True
application.travellingEnclosure.plans.showsTheLayoutOfTheEnclosure:True
application.wildlife.includesDangerousWildlife:False
application.wildlife.includesVenemousWildlife:False
application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.country:Australia
application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.postcode:3000
application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.state:Victoria
application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.streetName:Street
application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.streetNumber:1
application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.suburb:Suburb
application.nonPersonApplying.personResponsibleForLicencedActivities.telephone:1234
application.personApplying.dateOfBirth:2000-01-01T00:00

Then expect

  • Regsoft.application.personApplying.name.title is not required
  • Regsoft.application.personApplying.name.givenName is not required
  • Regsoft.application.personApplying.name.familyName is not required
  • Regsoft.application.personApplying.dateOfBirth is not required
  • Regsoft.application.personApplying.dateOfBirth is not required
  • Regsoft.application.personApplying.residentialAddress.apartmentNumber is not required
  • Regsoft.application.personApplying.residentialAddress.streetNumber is not required
  • Regsoft.application.personApplying.residentialAddress.streetName is not required
  • Regsoft.application.personApplying.residentialAddress.suburb is not required
  • Regsoft.application.personApplying.residentialAddress.state is not required
  • Regsoft.application.personApplying.residentialAddress.postcode is not required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.name.title is not required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.name.givenName is required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.name.familyName is required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.dateOfBirth is required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.telephone is required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.apartmentNumber is not required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.streetNumber is required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.streetName is required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.suburb is required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.postcode is required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.state is required
  • Regsoft.application.nonPersonApplying.personResponsibleForLicencedActivities.residentialAddress.country is required

Converge on a single licence type to issue

2 scenario(s) · rules zSsRubZioBf43YtT7D6Dk9wC→zSsRubZioBf43YtT7D6Dk9wC
Basic licence leads to basic licence

Given these inputs

@id:MtsRqB512tIMX59XmUs6CUHC
@type:Regsoft
@name:Basic licence leads to basic licence
application.licences.isAdvancedLicenceRequired:False
application.licences.isBasicLicenceRequired:True
application.licences.isControllerLicenceRequired:False
application.licences.isDealerLicenceRequired:False
application.licences.isDemonstratorLicenceRequired:False
application.licences.isDisplayerLicenceRequired:False
application.licences.isFarmerLicenceRequired:False
application.licences.isGameBirdFarmerLicenceRequired:False
application.licences.isProcessorLicenceRequired:False
application.licences.isSpecimenLicenceRequired:False
application.licences.isTaxidermistLicenceRequired:False

Then expect

  • value of Regsoft.application.licenceType = Wildlife basic licence
Basic plus advanced equals advanced

Given these inputs

@id:bdSPNPN6H58jwTSk2v5iSdKr
@type:Regsoft
@name:Basic plus advanced equals advanced
application.licences.isAdvancedLicenceRequired:True
application.licences.isBasicLicenceRequired:True
application.licences.isControllerLicenceRequired:False
application.licences.isDealerLicenceRequired:False
application.licences.isDemonstratorLicenceRequired:False
application.licences.isDisplayerLicenceRequired:False
application.licences.isFarmerLicenceRequired:False
application.licences.isGameBirdFarmerLicenceRequired:False
application.licences.isProcessorLicenceRequired:False
application.licences.isSpecimenLicenceRequired:False
application.licences.isTaxidermistLicenceRequired:False

Then expect

  • value of Regsoft.application.licenceType = Wildlife advanced licence

23 Application fees for issue of wildlife licence

3 scenario(s) · rules a7CUsxUkUmlPe7rjkrbJQJmv→a7CUsxUkUmlPe7rjkrbJQJmv
10 month basic licence

Given these inputs

@id:QTCY6V0aXlkEOYrTxL3op3c1
@type:Regsoft
@name:Basic test
application.isNaturalPerson:True
application.issueMonths:10
application.licenceType:Wildlife basic licence
application.personApplying.isEligibleForConcession:False
configuration.costPerFeeUnit:180

Then expect

  • value of Regsoft.application.indicativeFee.feePerMonth = 15
  • value of Regsoft.application.indicativeFee.amount = 1005
20 month basic licence

Given these inputs

@id:23pVAKNw5mI3m8cZFuQJNO24
@type:Regsoft
@name:20 month basic licence
application.isNaturalPerson:True
application.issueMonths:20
application.licenceType:Wildlife basic licence
application.personApplying.isEligibleForConcession:False
configuration.costPerFeeUnit:180

Then expect

  • value of Regsoft.application.indicativeFee.amount = 1608
  • value of Regsoft.application.indicativeFee.feePerMonth = 12
20 month basic licence concession holder

Given these inputs

@id:23pVAKNw5mI3m8cZFuQJNO24
@type:Regsoft
@name:20 month basic licence
application.isNaturalPerson:True
application.issueMonths:20
application.licenceType:Wildlife basic licence
application.personApplying.isEligibleForConcession:True
configuration.costPerFeeUnit:180

Then expect

  • value of Regsoft.application.indicativeFee.amount = 804

Observations

Points where the encoding is worth a second look. Encouragingly, three issues noted against an earlier version have since been fixed: the specimen convergence now issues a specimen licence (not a basic one), the dingo licence now has both a convergence line and a fee, and the fee amount now multiplies by the cost per unit and prorates the term correctly. The items below are what remains.

1 · A dingo-only application is issued but not “permissible”

Step 3 now sets licenceType = Dingo licence and step 5 prices it (9.6 units). But the permissibility roll-up (licenceTypesSelected) still ORs only the eleven non-dingo flags. So an application whose only match is a dingo licence is issued and priced, yet fails the “at least one licence selected” obligation. Adding isDingoLicenceRequired to the roll-up would close the gap.

2 · Import and export permits never converge or count

Section 115 sets isImportLicenceRequired / isExportLicenceRequired, but there is no convergence line for either and neither is in the permissibility roll-up. An import/export-only application therefore produces no recommended licenceType and reads as not permissible, even though the permit flag was set and its own name/address fields were required.

3 · The dingo gate's educational-display route doesn't check “is a dingo”

The S11 gate has three routes to requiring a dingo licence. Two test is a dingo; the third — “display wildlife + educational + non-commercial” — does not. Taken literally, any non-commercial educational display of any animal would set isDingoLicenceRequired. Worth confirming the “is a dingo” condition wasn't meant to apply here too.

4 · Field-rule wiring slips in Section 20 / 115

A few required-field rules cross the person / non-person boundary or repeat themselves: the natural-person “Name” block marks a non-person field (nonPersonApplying…name.otherNames) required; the import/export “Applicant's name” block requires givenName on the non-person path while its siblings use the person path; and the corporate address block lists suburb twice. The fee section likewise has the processor fee-unit line duplicated (both 49.2, so harmless). These look like copy-paste slips rather than intended behaviour.

5 · A test contradicts the rule it checks

The convergence scenario “Basic plus advanced equals advanced” asserts the issued type is advanced, but the rule as written resolves basic + advanced to basic (the tie-break in step 3, and matched by the sibling “Basic licence leads to basic licence” test). One of the two is wrong; today nothing forces the question because the convergence suite tests only these two cases.

Glossary

Permitted / Forbidden / Obligated
The three “modalities” the rules attach to things. Permitted = allowed; Forbidden = not allowed / an offence; Obligated = must hold for the application to be compliant (e.g. the cruelty-findings declaration, or matching at least one licence).
Required (field)
A form field that must be filled in for this application. Set by the Section 20 rules according to who is applying and for what.
Licence gate
The set of conditions for one licence type — an activity and a Schedule (or trait) and a purpose. Step 2 tests every gate independently.
Convergence (last match wins)
Step 3's run of rules that reduces the several licence flags to a single recommended licence type. Because a later rule overrides an earlier one, the last matching line decides.
Schedule (2, 3A, 7, …)
Official lists of taxa under the Wildlife Regulations. Which Schedule an animal is on is the main key that opens each licence gate.
Fee unit
The costing unit for licence fees. Each licence type is a fixed number of fee units; the dollar amount is those units × the cost per unit ($16.22), prorated over the term.