Movement Services | NLIS
Overview
The National Livestock Identification System (NLIS) is Australia’s livestock identification and tracing system. The MPaaS implementation provides comprehensive movement and identification management capabilities for cattle and sheep enterprises. NLIS enables secure tracking of livestock movements via a web service interface using SOAP/XML protocol.
Service ID: 6a341eb4-828a-472f-afef-5566671738a1
Service Tag: NLIS
Service Name: National Livestock Identification System
Countries: Australia
Supported Species: Cattle, Sheep
Property Type: Farm
Property Identifier Format: PIC (Property Identification Code)
Authentication Method: Property Username & Password
Transaction Types
| Transaction Type | Capability | Description | Species Support | Key Fields | Status |
|---|---|---|---|---|---|
| Move Off | IMoveOffCapable |
Record livestock departure from a property | Cattle, Sheep | Departure Location (PIC), Destination Location (PIC), Departure Date, Serial Number, NVD Reference | Core |
| Move On | IMoveOnCapable |
Record livestock arrival at a property | Cattle, Sheep | Departure Location (PIC), Arrival Location (PIC), Departure Date, Arrival Date, Serial Number, NVD Reference | Core |
| Death | IDeathCapable |
Record livestock death event | Cattle, Sheep | Death Location (PIC), Death Date, Serial Number | Core |
| Replace Tag | IRetagCapable |
Replace animal RFID tag | Cattle, Sheep | Retag Date, Old RFID, New RFID | Core |
Field Keys Explanation
NLIS field keys use a fully-qualified namespace format: NLIS.<Domain>.<Field>. Each field has both a Specific Key (NLIS-prefixed) and a Generic Key (generic livestock domain). Both forms are accepted in transaction submissions.
Key Naming Convention
- Specific Keys (NLIS namespace):
NLIS.Departure.Location,NLIS.Death.Date, etc. - Generic Keys (Fields namespace):
Departure.Identifier,Death.Date, etc.
The system automatically maps between both formats during validation and processing.
Common Field Types
| Type | Format | Example | Validation |
|---|---|---|---|
| String | Text | 3SCAT039 |
No specific constraints |
| DateTime | ISO 8601 | 2019-01-30T00:00:00 |
Format: YYYY-MM-DDTHH:MM:SS |
| RFID | Space-separated numeric | 982 123477466062 |
Format: NNN NNNNNNNNNNNN (12 digits) |
Special Location Codes
- DECEASED: Special code used in Death transactions to indicate animal mortality
- PIC Format: 8-character alphanumeric code identifying Australian properties
Detailed Transaction Types
1. Move Off (Departure)
Records the departure of livestock from a property. Used for sales, transfers to other locations, or movement off a property.
Field Mapping
| Specific Key | Generic Key | Data Type | Required | Description | Validation |
|---|---|---|---|---|---|
NLIS.Departure.Location |
Departure.Identifier |
String | Yes | PIC of departure property | Regex: [0-9A-Z]{8} |
NLIS.Destination.Location |
Destination.Identifier |
String | Yes | PIC of destination property | Regex: [0-9A-Z]{8} |
NLIS.Departure.Date |
Departure.Date |
DateTime | Yes | Date of departure | Format: YYYY-MM-DD |
NLIS.Movement.SerialNo |
SerialNumber |
String | No | Serial number reference | Free text |
NLIS.Movement.NvdReference |
Movement.MovementId |
String | Conditional | NVD number (required for sheep mobs) | Free text |
NLIS.Movement.Reference |
Movement.Reference |
String | No | Reference name | Free text |
NLIS.Movement.FreeText |
Free text field | String | No | Additional comments | Free text |
NLIS.Movement.Comment |
Free text field | String | No | Comment | Free text |
NLIS.Sheep.BredOnVendor |
Departure.HomeBred |
String | No | Bred on vendor PIC (sheep) | Free text |
NLIS.Sheep.TimeSincePurchase |
Destination.TimeSincePurchase |
String | No | Time since purchase (sheep) | Free text |
Example JSON Request
{
"transactionType": "MOV-OFF",
"speciesCode": "C",
"transactionDate": "2019-01-30T09:00:00+10:00",
"fields": {
"NLIS.Departure.Location": "3SCAT039",
"NLIS.Destination.Location": "3SCAT040",
"NLIS.Departure.Date": "2019-01-30T00:00:00",
"NLIS.Movement.SerialNo": "MOV001",
"NLIS.Movement.NvdReference": "NVD12345"
},
"animals": [
{
"rfid": "982 123477466062"
},
{
"rfid": "982 123477466063"
}
]
}
Validation Rules
- Cattle: At least one tagged animal (RFID) required; untagged animals not supported (warning if provided)
- Sheep: Can use untagged animals (mob-based movements); NVD Reference conditionally required for mob movements
- Location PIC: Cannot be identical between departure and destination
- Date Format: Must be ISO 8601 format (YYYY-MM-DDTHH:MM:SS)
- RFID Uniqueness: All RFIDs must be unique within the transaction
-
2. Move On (Arrival)
Records the arrival of livestock at a property. Used to confirm receipt of animals following a departure transaction.
Field Mapping
| Specific Key | Generic Key | Data Type | Required | Description | Validation |
|---|---|---|---|---|---|
NLIS.Departure.Location |
Departure.Identifier |
String | Yes | PIC of original departure property | Regex: [0-9A-Z]{8} |
NLIS.Movement.Arrival.Location |
Destination.Identifier |
String | Yes | PIC of arrival (destination) property | Regex: [0-9A-Z]{8} |
NLIS.Departure.Date |
Departure.Date |
DateTime | Yes | Date of original departure | Format: YYYY-MM-DD |
NLIS.Movement.Arrival.Date |
Destination.ArrivalDate |
DateTime | Yes | Date of arrival at destination | Format: YYYY-MM-DD |
NLIS.Movement.SerialNo |
SerialNumber |
String | No | Serial number reference | Free text |
NLIS.Movement.NvdReference |
Movement.MovementId |
String | Conditional | NVD number (required for sheep mobs) | Free text |
NLIS.Movement.Reference |
Movement.Reference |
String | No | Reference name | Free text |
NLIS.Movement.FreeText |
Free text field | String | No | Additional comments | Free text |
NLIS.Movement.Comment |
Free text field | String | No | Comment | Free text |
NLIS.Sheep.BredOnVendor |
Departure.HomeBred |
String | No | Bred on vendor PIC (sheep) | Free text |
NLIS.Sheep.TimeSincePurchase |
Destination.TimeSincePurchase |
String | No | Time since purchase (sheep) | Free text |
Example JSON Request
{
"transactionType": "MOV-ON",
"speciesCode": "C",
"transactionDate": "2019-01-30T14:30:00+10:00",
"fields": {
"NLIS.Departure.Location": "3SCAT039",
"NLIS.Movement.Arrival.Location": "3SCAT040",
"NLIS.Departure.Date": "2019-01-30T00:00:00",
"NLIS.Movement.Arrival.Date": "2019-01-30T00:00:00",
"NLIS.Movement.NvdReference": "NVD12345"
},
"animals": [
{
"rfid": "982 123477466062"
},
{
"rfid": "982 123477466063"
}
]
}
Validation Rules
- Cattle: At least one tagged animal (RFID) required
- Sheep: Can use untagged animals; NVD Reference conditionally required
- Date Consistency: Arrival date must be equal to or after departure date
- RFID Uniqueness: All RFIDs must be unique within the transaction
3. Death
Records the death or slaughter of a livestock animal.
Field Mapping
| Specific Key | Generic Key | Data Type | Required | Description | Validation |
|---|---|---|---|---|---|
NLIS.Death.Location |
Death.Location |
String | Yes | PIC of death location property | Regex: [0-9A-Z]{8} |
NLIS.Death.Date |
Death.Date |
DateTime | Yes | Date of death | Format: YYYY-MM-DD |
NLIS.Death.SerialNo |
SerialNumber |
String | No | Serial number reference | Free text |
NLIS.Death.Reference |
Movement.Reference |
String | No | Reference name | Free text |
Example JSON Request
{
"transactionType": "DTH",
"speciesCode": "C",
"transactionDate": "2019-01-30T11:15:00+10:00",
"fields": {
"NLIS.Death.Location": "3SCAT039",
"NLIS.Death.Date": "2019-01-30T00:00:00",
"NLIS.Death.SerialNo": "DEATH001"
},
"animals": [
{
"rfid": "982 123477466062"
}
]
}
Validation Rules
- Animal Required: At least one animal (with RFID) must be provided
- RFID Format: Must follow standard RFID format (space-separated numeric)
- Date Validity: Death date must be valid and in proper format
4. Replace Tag (Retag)
Records the replacement of an animal’s RFID tag due to damage, loss, or administrative requirements.
Field Mapping
| Specific Key | Generic Key | Data Type | Required | Description | Validation |
|---|---|---|---|---|---|
NLIS.Retag.Date |
Retag.Date |
DateTime | Yes | Date of tag replacement | Format: YYYY-MM-DD |
Example JSON Request
{
"transactionType": "RET",
"speciesCode": "C",
"transactionDate": "2019-01-30T10:45:00+10:00",
"fields": {
"NLIS.Retag.Date": "2019-01-30T00:00:00"
},
"animals": [
{
"rfid": "982 123477466062",
"newRfid": "982 123477466063"
}
]
}
Validation Rules
- Both RFIDs Required: Old RFID and New RFID must both be present in the animal record
- RFID Format: Both old and new RFIDs must follow standard format
- Unique New RFID: New RFID must be unique and not already in use
Species Support
Cattle (Code: C)
Supported Transactions:
- Move Off
- Move On
- Death
- Replace Tag
Requirements:
- Tagged animals mandatory (RFID required)
- Untagged animals not supported (warning if provided)
- PIC must be valid 8-character Australian property identifier
Validation:
- At least one animal with valid RFID must be provided for movement/death transactions
- RFIDs must be unique within the transaction
Sheep (Code: S)
Supported Transactions:
- Move Off
- Move On
- Death
- Replace Tag
Requirements:
- Can use tagged animals (RFID) or untagged mob-based movements
- Untagged animals include:
- Head count (required)
- Herd number identifier (required)
- Additional fields for sheep:
NLIS.Sheep.BredOnVendor: Indicates if bred on vendor’s propertyNLIS.Sheep.TimeSincePurchase: Time since animal purchase
Validation:
- For untagged mob movements: Must include
UntaggedAnimalswithHeadCountandHerdNumber - For tagged movements: At least one animal with valid RFID
- NVD Reference conditionally required for mob movements
Property Identifier Format (PIC)
The Property Identification Code (PIC) is an 8-character alphanumeric identifier used in Australia for property identification. NLIS uses PICs to identify source and destination properties for all livestock movements.
PIC Format Rules
PIC validation follows a specific pattern based on the first character:
| First Char | Format | Example | Description |
|---|---|---|---|
| 3 | 3 + 4 letters + 3 digits | 3SCAT039 |
Standard property code |
| V | V + 3 letters + 4 digits | VXYZ1234 |
Vendor property code |
| N | N + 1 letter (A-K) + 6 digits | NA123456 |
Network property |
| Q | Q + 1 letter (A-K) + 2 letters + 3 digits | QA12AB34 |
Special property type |
| S | S + 1 letter (A-K) + 6 digits | SA123456 |
Specific classification |
| M | M + 1 letter (A-K) + 2 letters + 3 digits | MA12AB34 |
Market property |
| W | W + 1 letter (A-K) + 2 letters + 3 digits | WA12AB34 |
Waterway property |
| T | T + 1 letter (A-K) + 2 letters + 3 digits | TA12AB34 |
Transit property |
| EUAB | EUAB + 4 digits | EUAB1234 |
EU property (export) |
| EUAY | EUAY + 4 digits | EUAY1234 |
EU property (alternative) |
Emergency PICs
Emergency PICs follow the standard format with ‘Z’ as the second character for any valid first character:
- Example:
3Z123456(emergency tag-tails)
Special PICs
- DECEASED: Used in Death transactions to indicate animal mortality
- Typical destination for death records
Authentication
Credential Types
NLIS requires property-level authentication using:
| Credential | Type | Required | Description |
|---|---|---|---|
| Username | String | Yes | Property operator username for NLIS system |
| Password | String | Yes | Property operator password (encrypted in transmission) |
| Property Type | String | No | Defaults to “F” (Farm); can be customized per property |
| String | No | Optional contact email for service provider |
Authentication Validation
The system validates credentials by:
- User Credential Validation: Validates username/password against NLIS system
- Sends GetEuPics query via SOAP to verify access
- Returns true if credentials are valid
- Returns false if “Invalid username or password” response received
- Throws exception if system is in maintenance mode
- Property Validation: Validates property PIC format
- Checks PIC matches one of the valid Australian property identifier patterns
-
Returns true only if PIC format is valid
Error Handling & Validation Messages
Validation Error Messages
| Error Code | Message | Condition |
|---|---|---|
InvalidDataValue |
“At least one tagged animal has to be provided” | Cattle transaction without tagged animals |
InvalidDataValue |
“At least one tagged or untagged animal has to be provided” | Sheep transaction without any animals |
InvalidDataValue |
“RFID must be provided for each animal” | Tagged animal without RFID |
InvalidDataValue |
“At least one untagged animal has to be provided” | Sheep mob movement without untagged animals |
ConditionViolation |
“Departure and Destination locations cannot be the same” | Identical source and destination PICs |
DuplicateAnimal |
“RFID must be unique for each animal” | Duplicate RFIDs in transaction |
InvalidDataFormat |
“Not a valid PIC format” | Invalid property identifier |
Service Errors
| Error Type | Description | Action |
|---|---|---|
| ServiceSystemError | “System is down for Maintenance” | Retry later; system unavailable |
| InvalidCredentials | “Invalid username or password” | Verify credentials with NLIS provider |
| InvalidProperty | “Property not found or not accessible” | Verify PIC exists and is valid |
Service Registry & Configuration
Transaction Flow Example
Move Off Transaction Flow
1. Client submits Move Off transaction with:
- Departure PIC: 3SCAT039
- Destination PIC: 3SCAT040
- Animals with RFIDs
2. System validation:
- Checks PIC formats valid
- Verifies PICs are different
- Validates RFIDs present (cattle)
- Verifies date format
3. Packing:
- Builds P2PTransfer SOAP message
- Includes NLIS authentication headers
- Serializes to XML
4. Transmission:
- Sends via HTTPS to NLIS endpoint
- Includes timestamp (date/time)
5. Response:
- Returns success with transaction ID
- Or returns NLIS error message
6. Error Handling:
- Maps NLIS errors to standard codes
- Returns to client