Movement Services | LIS
LIS (Livestock Information Service) is the unified movement tracking service for livestock in Great Britain, designed to replace BCMS (cattle), ARAMS (sheep, goats), and eAML2 (pigs).
Overview
This document covers the transaction types and capabilities available through Easitrace for LIS.
LIS supports 5 transaction capabilities:
| Transaction Type | Capability | Description |
|---|---|---|
| MOV-OFF | Movement Off | Record movement of animals off a property |
| MOV-ON | Movement On | Record movement of animals onto a property |
| MOV-IN | Incoming Movements | Retrieve incoming movements at a property |
| UPDATEMOV-OFF | Update Movement Off | Update details of a movement departure |
| UPDATEMOV-ON | Update Movement On | Update details of a movement arrival |
Sections
- Field Keys
- Movement Off
- Movement On
- Incoming Movements
- Update Movement Off
- Update Movement On
- Supported Species
- Property Identifier Format
- Authentication Requirements
Field Keys: Generic vs Specific
LIS transactions use a dual-key field system to support both backward compatibility and cross-service consistency.
What are Generic and Specific Keys?
- Generic Keys: Standardized field identifiers that work across multiple movement services (e.g.,
Departure.Identifier,Destination.ArrivalDate) - Specific Keys: Service-specific field names used by LIS API (e.g.,
LIS.Farm.Sheep.Departure.Location,LIS.Farm.Sheep.Movement.ArrivalDate)
Why Both Exist
This dual-key approach allows:
- Cross-Service Consistency: Application developers can use the same generic key names regardless of which movement service they’re integrating with
- Backward Compatibility: Existing integrations using specific keys continue to work
- Future-Proofing: New services can be added without breaking existing code
How It Works for API Consumers
When submitting a transaction, you can use either the generic key or the specific key in the fields object. The system automatically maps between them.
Example - Both are equivalent:
{
"fields": {
"Departure.Identifier": "01/007/0001"
}
}
{
"fields": {
"LIS.Farm.Sheep.Departure.Location": "01/007/0001"
}
}
For more details on the field system, see Transaction Fields Documentation.
Movement Off
Record movement of animals off a property. This transaction notifies LIS when animals leave a holding.
Fields
Required:
-
Generic Key:
Departure.Identifier
Specific Key:LIS.Farm.Sheep.Departure.Location
Type: CPH (Common Holding Number)
Format: ##/###/#### (e.g., 01/007/0001)
Description: The CPH of the location from which animals are departing. -
Generic Key:
Destination.Identifier
Specific Key:LIS.Farm.Sheep.Destination.Location
Type: CPH
Format: ##/###/####
Description: The CPH of the location to which animals are moving. -
Generic Key:
Movement.Date
Specific Key:LIS.Farm.Sheep.Movement.TransferDate
Type: DateTime
Format: ISO 8601
Description: The date when animals were transferred.
Optional:
-
Generic Key:
Departure.Date
Specific Key:LIS.Farm.Sheep.Movement.DepartureDate
Type: DateTime
Description: The specific date when animals departed. -
Generic Key:
Departure.LoadingDate
Specific Key:LIS.Farm.Sheep.Movement.LoadingDate
Type: DateTime
Description: The date when animals were loaded for transport. -
Generic Key:
Departure.PostCode
Specific Key:LIS.Farm.Sheep.Movement.DeparturePostCode
Type: String
Description: Post code of the departure location. -
Generic Key:
Departure.FirstName
Specific Key:LIS.Farm.Sheep.Movement.DepartureFirstName
Type: String
Description: First name of the departure keeper. -
Generic Key:
Departure.LastName
Specific Key:LIS.Farm.Sheep.Movement.DepartureLastName
Type: String
Description: Last name of the departure keeper. -
Generic Key:
Departure.Street
Specific Key:LIS.Farm.Sheep.Movement.DepartureStreetAddress
Type: String
Description: Street address of the departure location. -
Generic Key:
Departure.Country
Specific Key:LIS.Farm.Sheep.Movement.DepartureCountry
Type: String
Description: Country of the departure location. -
Generic Key:
Departure.Town
Specific Key:LIS.Farm.Sheep.Movement.DepartureTown
Type: String
Description: Town of the departure location. -
Generic Key:
Departure.PhoneNumber
Specific Key:LIS.Farm.Sheep.Movement.DeparturePhone
Type: String
Description: Phone number of the departure keeper. -
Generic Key:
Haulier.Type
Specific Key:LIS.Farm.Sheep.Hauler.Type
Type: String (Enum)
Accepted Values: “Departure Keeper”, “Receiving Keeper”, “Haulier”
Description: Type of transport provider. -
Generic Key:
Haulier.DriverName
Specific Key:LIS.Farm.Sheep.Movement.HailierName
Type: String
Description: Name of the haulier/driver. -
Generic Key:
Haulier.AuthorisationNumber
Specific Key:LIS.Farm.Sheep.Hauler.AuthNumber
Type: String
Description: Authorisation number of the haulier. -
Generic Key:
Fci.Satisfied
Specific Key:LIS.Farm.Sheep.Movement.SatisfiesFCI
Type: Boolean
Description: Whether FCI requirements are satisfied. -
Generic Key:
Fci.WithdrawalPeriodsMet
Specific Key:LIS.Farm.Sheep.Movement.WithdravalPeriodMetCode
Type: String
Description: Confirmation that withdrawal periods are met. -
Generic Key:
Movement.Id
Specific Key:LIS.Farm.Sheep.Movement.Id
Type: String
Description: Movement identifier for tracking.
Animal Requirements
- At least one animal must be provided
- Each animal must have either
rfidorvisualidentifier (or both)
Example Transaction
{
"reference": "LIS-MOV-OFF-001",
"transactionDate": "2024-03-10T10:30:00Z",
"type": "MOV-OFF",
"serviceTag": "LIS",
"speciesCode": "S",
"propertyIdentifier": "01/007/0001",
"fields": {
"LIS.Farm.Sheep.Departure.Location": "01/007/0001",
"LIS.Farm.Sheep.Destination.Location": "33/444/5555",
"LIS.Farm.Sheep.Movement.TransferDate": "2024-03-10T00:00:00Z",
"LIS.Farm.Sheep.Movement.DepartureDate": "2024-03-10T08:00:00Z",
"LIS.Farm.Sheep.Movement.LoadingDate": "2024-03-10T07:30:00Z",
"LIS.Farm.Sheep.Movement.DeparturePostCode": "SW1A 1AA",
"LIS.Farm.Sheep.Movement.DepartureFirstName": "John",
"LIS.Farm.Sheep.Movement.DepartureLastName": "Smith",
"LIS.Farm.Sheep.Hauler.Type": "Haulier",
"LIS.Farm.Sheep.Movement.HailierName": "Lucky Transport",
"LIS.Farm.Sheep.Hauler.AuthNumber": "HAL123456"
},
"animals": [
{
"rfid": "982000123456789",
"visual": "UK100015401645"
},
{
"rfid": "982000123456790",
"visual": "UK100015501619"
}
],
"untaggedAnimals": []
}
For more information about submitting Transactions see Submitting transactions.
Movement On
Record movement of animals onto a property. This transaction notifies LIS when animals arrive at a holding.
Fields
Required:
-
Generic Key:
Destination.Identifier
Specific Key:LIS.Farm.Sheep.Destination.Location
Type: CPH
Format: ##/###/####
Description: The CPH of the location to which animals are arriving. -
Generic Key:
Destination.ArrivalDate
Specific Key:LIS.Farm.Sheep.Movement.ArrivalDate
Type: DateTime
Format: ISO 8601
Description: The date when animals arrived at the destination.
Optional:
-
Generic Key:
Departure.Identifier
Specific Key:LIS.Farm.Sheep.Departure.Location
Type: CPH
Description: The CPH of the departure location. -
Generic Key:
Departure.Date
Specific Key:LIS.Farm.Sheep.Movement.DepartureDate
Type: DateTime
Description: The date of departure. -
Generic Key:
Departure.LoadingDate
Specific Key:LIS.Farm.Sheep.Movement.LoadingDate
Type: DateTime
Description: The loading date. -
Generic Key:
Destination.UnLoadingDate
Specific Key:LIS.Farm.Sheep.Movement.UnLoadingDate
Type: DateTime
Description: The unloading date at destination. -
Generic Key:
Destination.PostCode
Specific Key:LIS.Farm.Sheep.Movement.DestinationPostCode
Type: String
Description: Post code of the destination location. -
Generic Key:
Destination.FirstName
Specific Key:LIS.Farm.Sheep.Movement.DestinationFirstName
Type: String
Description: First name of the destination keeper. -
Generic Key:
Destination.LastName
Specific Key:LIS.Farm.Sheep.Movement.DestinationLastName
Type: String
Description: Last name of the destination keeper. -
Generic Key:
Destination.Street
Specific Key:LIS.Farm.Sheep.Movement.DestinationStreetAddress
Type: String
Description: Street address of the destination location. -
Generic Key:
Destination.Country
Specific Key:LIS.Farm.Sheep.Movement.DestinationCountry
Type: String
Description: Country of the destination location. -
Generic Key:
Destination.Town
Specific Key:LIS.Farm.Sheep.Movement.DestinationTown
Type: String
Description: Town of the destination location. -
Generic Key:
Destination.PhoneNumber
Specific Key:LIS.Farm.Sheep.Movement.DestinationPhone
Type: String
Description: Phone number of the destination keeper. -
Generic Key:
Haulier.Type
Specific Key:LIS.Farm.Sheep.Hauler.Type
Type: String (Enum)
Accepted Values: “Departure Keeper”, “Receiving Keeper”, “Haulier”
Description: Type of transport provider. -
Generic Key:
Haulier.DriverName
Specific Key:LIS.Farm.Sheep.Movement.HailierName
Type: String
Description: Name of the haulier/driver. -
Generic Key:
Haulier.AuthorisationNumber
Specific Key:LIS.Farm.Sheep.Hauler.AuthNumber
Type: String
Description: Authorisation number of the haulier. -
Generic Key:
Fci.Satisfied
Specific Key:LIS.Farm.Sheep.Movement.SatisfiesFCI
Type: Boolean
Description: Whether FCI requirements are satisfied. -
Generic Key:
Fci.WithdrawalPeriodsMet
Specific Key:LIS.Farm.Sheep.Movement.WithdravalPeriodMetCode
Type: String
Description: Confirmation that withdrawal periods are met. -
Generic Key:
Movement.Id
Specific Key:LIS.Farm.Sheep.Movement.Id
Type: String
Description: Movement identifier for tracking.
Animal Requirements
- At least one animal must be provided
- Each animal must have either
rfidorvisualidentifier (or both)
Example Transaction
{
"reference": "LIS-MOV-ON-001",
"transactionDate": "2024-03-10T14:30:00Z",
"type": "MOV-ON",
"serviceTag": "LIS",
"speciesCode": "S",
"propertyIdentifier": "33/444/5555",
"fields": {
"LIS.Farm.Sheep.Destination.Location": "33/444/5555",
"LIS.Farm.Sheep.Movement.ArrivalDate": "2024-03-10T00:00:00Z",
"LIS.Farm.Sheep.Departure.Location": "01/007/0001",
"LIS.Farm.Sheep.Movement.DepartureDate": "2024-03-10T08:00:00Z",
"LIS.Farm.Sheep.Movement.UnLoadingDate": "2024-03-10T14:00:00Z",
"LIS.Farm.Sheep.Movement.DestinationPostCode": "SW1A 2AA",
"LIS.Farm.Sheep.Movement.DestinationFirstName": "Jane",
"LIS.Farm.Sheep.Movement.DestinationLastName": "Doe"
},
"animals": [
{
"rfid": "982000123456789",
"visual": "UK100015401645"
},
{
"rfid": "982000123456790",
"visual": "UK100015501619"
}
],
"untaggedAnimals": []
}
For more information about submitting Transactions see Submitting transactions.
Incoming Movements
Retrieve a list of incoming movements at a property. This transaction queries LIS for movements that are expected to arrive at the specified location.
Results for this transaction can be obtained via GET /api/properties/{id}/transactions/{transactionId}/historical API.
It will return an array of movements, each with details in a fields property.
Fields
Optional:
-
Generic Key:
Departure.Identifier
Specific Key:LIS.Farm.Sheep.Departure.Location
Type: CPH
Description: Filter by departure location CPH (optional). -
Generic Key:
Departure.Date
Specific Key:LIS.Farm.Sheep.Movement.DepartureDate
Type: DateTime
Description: Filter by departure date (optional). -
Generic Key:
Destination.Identifier
Specific Key:LIS.Farm.Sheep.Destination.Location
Type: CPH
Description: Filter by destination location CPH (optional). -
Generic Key:
Haulier.CompanyName
Specific Key:LIS.Farm.Sheep.Movement.HailierName
Type: String
Description: Filter by haulier name (optional). -
Generic Key:
Haulier.RegistrationNumber
Specific Key:LIS.Farm.Sheep.Movement.RegistrationNumber
Type: String
Description: Filter by vehicle registration number (optional). -
Generic Key:
UserReference
Specific Key:LIS.Farm.Sheep.Movement.DocumentReference
Type: String
Description: Filter by movement document reference (optional).
Example Transaction
{
"reference": "LIS-INCOMING-001",
"transactionDate": "2024-03-10T10:30:00Z",
"type": "MOV-IN",
"serviceTag": "LIS",
"speciesCode": "S",
"propertyIdentifier": "33/444/5555",
"fields": {},
"animals": [],
"untaggedAnimals": []
}
Once the transaction succeeds, the results can be queried by providing the transaction id to GET /api/properties/{id}/transactions/{transactionId}/historical API.
For more information about submitting Transactions see Submitting transactions.
Update Movement Off
Update details of a previously submitted movement off transaction.
Fields
Required:
-
Generic Key:
Departure.Identifier
Specific Key:LIS.Farm.Sheep.Departure.Location
Type: CPH
Format: ##/###/####
Description: The CPH of the departure location. -
Generic Key:
Destination.Identifier
Specific Key:LIS.Farm.Sheep.Destination.Location
Type: CPH
Format: ##/###/####
Description: The CPH of the destination location. -
Generic Key:
Departure.LoadingDate
Specific Key:LIS.Farm.Sheep.Movement.TransferDate
Type: DateTime
Description: The transfer date.
Optional:
-
Generic Key:
Movement.Id
Specific Key:LIS.Farm.Sheep.Movement.Id
Type: Integer
Description: The movement ID to update. -
Generic Key:
Departure.Date
Specific Key:LIS.Farm.Sheep.Movement.DepartureDate
Type: DateTime
Description: The departure date. -
Generic Key:
Departure.PostCode
Specific Key:LIS.Farm.Sheep.Movement.DeparturePostCode
Type: String
Description: Post code of the departure location. -
Generic Key:
Movement.ExpectedDuration
Specific Key:LIS.Farm.Sheep.Movement.ExpectedDuration
Type: String
Description: Expected duration of the movement. -
Generic Key:
Fci.Satisfied
Specific Key:LIS.Farm.Sheep.Movement.SatisfiesFCI
Type: Boolean
Description: Whether FCI requirements are satisfied.
Example Transaction
{
"reference": "LIS-UPD-MOV-OFF-001",
"transactionDate": "2024-03-10T15:00:00Z",
"type": "UPDATEMOV-OFF",
"serviceTag": "LIS",
"speciesCode": "S",
"propertyIdentifier": "01/007/0001",
"fields": {
"LIS.Farm.Sheep.Departure.Location": "01/007/0001",
"LIS.Farm.Sheep.Destination.Location": "33/444/5555",
"LIS.Farm.Sheep.Movement.TransferDate": "2024-03-10T00:00:00Z",
"LIS.Farm.Sheep.Movement.DepartureDate": "2024-03-10T08:00:00Z"
},
"animals": [],
"untaggedAnimals": []
}
For more information about submitting Transactions see Submitting transactions.
Update Movement On
Update details of a previously submitted movement on transaction.
Fields
Required:
-
Generic Key:
Departure.Identifier
Specific Key:LIS.Farm.Sheep.Departure.Location
Type: CPH
Format: ##/###/####
Description: The CPH of the departure location. -
Generic Key:
Destination.Identifier
Specific Key:LIS.Farm.Sheep.Destination.Location
Type: CPH
Format: ##/###/####
Description: The CPH of the destination location. -
Generic Key:
Departure.LoadingDate
Specific Key:LIS.Farm.Sheep.Movement.TransferDate
Type: DateTime
Description: The transfer date. -
Generic Key:
Departure.Date
Specific Key:LIS.Farm.Sheep.Movement.DepartureDate
Type: DateTime
Description: The departure date.
Optional:
-
Generic Key:
Movement.Id
Specific Key:LIS.Farm.Sheep.Movement.Id
Type: Integer
Description: The movement ID to update. -
Generic Key:
Destination.ArrivalDate
Specific Key:LIS.Farm.Sheep.Movement.ArrivalDate
Type: DateTime
Description: The arrival date. -
Generic Key:
Departure.PostCode
Specific Key:LIS.Farm.Sheep.Movement.DeparturePostCode
Type: String
Description: Post code of the departure location. -
Generic Key:
Movement.ExpectedDuration
Specific Key:LIS.Farm.Sheep.Movement.ExpectedDuration
Type: String
Description: Expected duration of the movement. -
Generic Key:
Fci.Satisfied
Specific Key:LIS.Farm.Sheep.Movement.SatisfiesFCI
Type: Boolean
Description: Whether FCI requirements are satisfied.
Example Transaction
{
"reference": "LIS-UPD-MOV-ON-001",
"transactionDate": "2024-03-10T15:00:00Z",
"type": "UPDATEMOV-ON",
"serviceTag": "LIS",
"speciesCode": "S",
"propertyIdentifier": "33/444/5555",
"fields": {
"LIS.Farm.Sheep.Departure.Location": "01/007/0001",
"LIS.Farm.Sheep.Destination.Location": "33/444/5555",
"LIS.Farm.Sheep.Movement.TransferDate": "2024-03-10T00:00:00Z",
"LIS.Farm.Sheep.Movement.DepartureDate": "2024-03-10T08:00:00Z",
"LIS.Farm.Sheep.Movement.ArrivalDate": "2024-03-10T14:00:00Z"
},
"animals": [],
"untaggedAnimals": []
}
For more information about submitting Transactions see Submitting transactions.
Supported Species
LIS supports the following species:
- S - Sheep
- C - Cattle (when LIS is extended to cattle)
- G - Goats (when LIS is extended to goats)
- P - Pigs (when LIS is extended to pigs)
Currently, the implementation is primarily focused on Sheep (S).
Property Identifier Format
LIS uses CPH (Common Holding Number) as the property identifier format.
Format: ##/###/#### (8 digits with 2 forward slashes)
Example: 01/007/0001
All CPH values in LIS transactions must conform to this format:
- First 2 digits: County code
- Next 3 digits: Parish code
- Last 4 digits: Holding number
Authentication Requirements
LIS uses Azure B2C for authentication. The system requires:
OAuth2 Bearer Token Authentication
- Access Token: Obtained via OAuth2 refresh token flow
- Subscription Key: API subscription key for the LIS service
- Correlation ID: Unique identifier for request tracking
The Service Provider is responsible for:
- Initiating the OAuth2 authentication flow with Azure B2C
- Passing the authorization code to Easitrace
- Exchanging the code for a refresh token (valid for 90 days)
- Storing credentials at the property level
Token Expiration and Refresh
- Refresh tokens expire after 90 days of inactivity
- When a transaction fails due to token expiration, a new authorization code must be submitted
- Update property credentials via PUT request with new authorization code
For detailed information on LIS authentication flow, see LIS Authentication.
For general authentication concepts and other services, see Services Authentication.