Movement Services | SCOT-MOVES
SCOT-MOVES is the Movement Service for Cattle and Sheep in Scotland.
Overview
This document covers the transaction types and capabilities available through Easitrace for SCOT-MOVES.
SCOT-MOVES supports 8 transaction capabilities:
| Transaction Type | Capability | Description |
|---|---|---|
| GET-ADDTNL-HOLDINGS | Get Additional Holdings | Retrieve additional cattle holdings/properties |
| GET-ANM | Animal Query | Query animals currently on a property |
| ALLOC | Allocate Animals | Allocate animals to a specific property |
| REG | Register | Register birth of animals at a property |
| MOV-OFF | Movement Off | Record movement of animals off a property |
| MOV-ON | Movement On | Record movement of animals onto a property |
| MOV-INTERNAL | Move Internal | Record movement between holdings within same business |
| DTH | Death | Record death of animals at a property |
Sections
- Authentication
- Field Keys
- Get Additional Holdings
- Animal Query
- Allocate Animals
- Register Animals
- Movements
- Record Animal Death
Authentication
ScotMoves authentication is handled through the ScotEID system. For detailed authentication setup, see the ScotMoves Authentication Guide.
ScotMoves requires:
- Username and Password: Property-level credentials via ScotEID
- Provider Credentials: Software provider registration with ScotEID
For more details, see Services Authentication.
Field Keys: Generic vs Specific
SCOT-MOVES 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,Death.Date) - Specific Keys: Service-specific field names used by SCOT-MOVES API (e.g.,
ScotMoves.Movement.DepartureLocation,ScotMoves.Death.Date)
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": "89/677/0009"
}
}
{
"fields": {
"ScotMoves.Movement.DepartureLocation": "89/677/0009"
}
}
For more details on the field system, see Transaction Fields Documentation.
Get Additional Holdings
Retrieve additional cattle holdings/properties associated with the specified property. This transaction queries SCOT-MOVES for related holdings.
Results for this transaction can be obtained via GET /api/properties/{id}/transactions/{transactionId}/historical API.
It will return an array of transactions, each representing a single holding with details in a fields property. Each such transaction is linked
to the original via the parentTransactionId field.
Fields
No fields are required for this transaction type.
Example Transaction
{
"reference": "SCOTMOVES-HOLDING",
"transactionDate": "2019-08-13T21:30:00Z",
"type": "GET-ADDTNL-HOLDINGS",
"serviceTag": "SCOT-MOVES",
"speciesCode": "C",
"propertyIdentifier": "89/677/0009",
"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.
Animal Query
Query and retrieve animals currently on a property. This transaction allows you to get a list of animals registered at a specific holding.
Results for this transaction can be obtained via GET /api/properties/{id}/transactions/{transactionId}/historical API.
It will return an array of transactions, each representing a single animal with details in a fields property. Each such transaction is linked
to the original via the parentTransactionId field.
Fields
Optional:
- Generic Key:
GetAnimals.IncludeSubHoldings
Specific Key:ScotMoves.GetAnimals.IncludeSubHoldings
Type: Boolean
Description: Whentrue, includes animals on all sub-holdings. Whenfalseor omitted, returns only animals on the main holding.
Note: The response format changes based on this field:
- When
IncludeSubHoldingsistrue: Uses plural response format (includes all sub-holdings) - When
IncludeSubHoldingsisfalseor absent: Uses singular response format (main holding only)
Example Transaction
{
"reference": "SCOTMOVES-ANIMAL-QUERY",
"transactionDate": "2019-08-13T21:30:00Z",
"type": "GET-ANM",
"serviceTag": "SCOT-MOVES",
"speciesCode": "C",
"propertyIdentifier": "89/677/0009",
"fields": {
"ScotMoves.GetAnimals.IncludeSubHoldings": true
},
"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.
Allocate Animals
Allocate animals to a specific property/holding. This transaction assigns animals to an initial CPH (County-Parish-Holding) identifier.
Fields
Optional:
- Generic Key:
Destination.Identifier
Specific Key:ScotMoves.Movement.InitialCPH
Type: CPH (County-Parish-Holding)
Format: CC/PPP/HHHH
Description: The initial CPH to which animals should be allocated.
Animal Requirements
- At least one animal must be provided
- Each animal must have either
rfidorvisualidentifier - Untagged animals are not supported by this transaction type
Example Transaction
{
"reference": "SCOTMOVES-ALLOCATE",
"transactionDate": "2019-08-13T21:30:00Z",
"type": "ALLOC",
"serviceTag": "SCOT-MOVES",
"speciesCode": "C",
"propertyIdentifier": "89/677/0009",
"fields": {
"ScotMoves.Movement.InitialCPH": "89/677/0009"
},
"animals": [
{
"rfid": "982000123456789",
"visual": "UK100015401645"
},
{
"rfid": "982000123456790",
"visual": "UK100015501619"
}
],
"untaggedAnimals": []
}
For more information about submitting Transactions see Submitting transactions.
Register animals
Register the birth of animals at a property. This transaction records newborn calves in the SCOT-MOVES system.
Fields
Required:
-
Generic Key:
Register.BirthPropertyIdentifier
Specific Key:ScotMoves.Register.BirthLocation
Type: CPH (County-Parish-Holding)
Format: CC/PPP/HHHH
Description: The CPH where the animal was born. -
Generic Key:
Register.BirthPropertyPostalIdentifier
Specific Key:ScotMoves.Register.MainLocation
Type: CPH (County-Parish-Holding)
Format: CC/PPP/HHHH
Description: The main/postal CPH for the birth location.
Required per animal:
visual: Visual tag identifierbreedCode: Breed code (e.g., “AA”)birthDate: Date of birthsexCode: Sex code (e.g., “M”, “F”)- Animal field
UserReference: User-friendly alias/name for the animal
Optional per animal:
sireOfficialId: Sire identifier (should be provided when known)damOfficialId: Dam identifier
Example Transaction
{
"reference": "SCOTMOVES-REGISTER",
"transactionDate": "2019-08-13T21:30:00Z",
"type": "REG",
"serviceTag": "SCOT-MOVES",
"speciesCode": "C",
"propertyIdentifier": "89/677/0009",
"fields": {
"ScotMoves.Register.BirthLocation": "89/677/0009",
"ScotMoves.Register.MainLocation": "89/677/0009"
},
"animals": [
{
"visual": "543210123458",
"damOfficialId": "543210123058",
"sireOfficialId": "543210123158",
"breedCode": "AA",
"birthDate": "2020-07-22T22:27:08.712Z",
"sexCode": "M",
"fields": {
"UserReference": "Calf 1"
}
},
{
"visual": "543210123459",
"damOfficialId": "543210123058",
"sireOfficialId": "543210123158",
"breedCode": "AA",
"birthDate": "2020-07-22T22:27:08.712Z",
"sexCode": "M",
"fields": {
"UserReference": "Calf 2"
}
}
],
"untaggedAnimals": []
}
For more information about submitting Transactions see Submitting transactions.
Movements
Movements Off
Record movement of animals off a property. This transaction notifies SCOT-MOVES when animals leave a holding.
Fields
Required:
-
Generic Key:
Departure.Identifier
Specific Key:ScotMoves.Movement.DepartureLocation
Type: CPH (County-Parish-Holding)
Format: CC/PPP/HHHH
Description: The holding from which animals are departing. -
Generic Key:
Destination.Identifier
Specific Key:ScotMoves.Movement.DestinationLocation
Type: CPH (County-Parish-Holding)
Format: CC/PPP/HHHH
Description: The holding to which animals are moving.
Optional:
-
Generic Key:
Departure.InternalIdentifier
Specific Key:ScotMoves.Movement.DepartureMainCPH
Type: CPH (County-Parish-Holding)
Description: Sub-holding that animals move from (if applicable). -
Generic Key:
Destination.InternalIdentifier
Specific Key:ScotMoves.Movement.DestinationMainCPH
Type: CPH (County-Parish-Holding)
Description: Sub-holding that animals move to (if applicable).
Animal Requirements
For animals provided as part of a movement off, only the visual property is required, although it must be in the following format:
NB: Spaces are shown by ⋅, numbers by N.
UK⋅N⋅NNNNNN⋅NNNN⋅N
Example Transaction
{
"transactionDate": "2020-08-29T22:27:08.712Z",
"type": "MOV-OFF",
"speciesCode": "C",
"serviceTag": "SCOT-MOVES",
"propertyIdentifier": "89/677/0009",
"fields": {
"ScotMoves.Movement.DepartureLocation": "89/677/0009",
"ScotMoves.Movement.DestinationLocation": "84/567/0037"
},
"animals": [
{
"visual": "5432101234601"
},
{
"visual": "5432101234602"
}
],
"untaggedAnimals": []
}
For more information about submitting Transactions see Submitting transactions.
Movements On
Record movement of animals onto a property. This transaction notifies SCOT-MOVES when animals arrive at a holding.
Fields
Required:
-
Generic Key:
Departure.Identifier
Specific Key:ScotMoves.Movement.DepartureLocation
Type: CPH (County-Parish-Holding)
Format: CC/PPP/HHHH
Description: The holding from which animals departed. -
Generic Key:
Destination.Identifier
Specific Key:ScotMoves.Movement.DestinationLocation
Type: CPH (County-Parish-Holding)
Format: CC/PPP/HHHH
Description: The holding to which animals are arriving.
Optional:
-
Generic Key:
Departure.InternalIdentifier
Specific Key:ScotMoves.Movement.DepartureMainCPH
Type: CPH (County-Parish-Holding)
Description: Sub-holding that animals moved from (if applicable). -
Generic Key:
Destination.InternalIdentifier
Specific Key:ScotMoves.Movement.DestinationMainCPH
Type: CPH (County-Parish-Holding)
Description: Sub-holding that animals moved to (if applicable).
Animal Requirements
For animals provided as part of a movement on, only the visual property is required, although it must be in the following format:
NB: Spaces are shown by ⋅, numbers by N.
UK⋅N⋅NNNNNN⋅NNNN⋅N
Example Transaction
{
"transactionDate": "2020-08-29T22:27:08.712Z",
"type": "MOV-ON",
"speciesCode": "C",
"serviceTag": "SCOT-MOVES",
"propertyIdentifier": "84/567/0037",
"fields": {
"ScotMoves.Movement.DepartureLocation": "89/677/0009",
"ScotMoves.Movement.DestinationLocation": "84/567/0037"
},
"animals": [
{
"visual": "5432101234601"
},
{
"visual": "5432101234602"
}
],
"untaggedAnimals": []
}
For more information about submitting Transactions see Submitting transactions.
Move Internal
Record movement of animals between holdings within the same business. This transaction type is used when moving animals between different CPHs that belong to the same keeper.
Difference from MOV-OFF/MOV-ON: Use Move Internal when both the departure and destination holdings belong to the same business/keeper. Use MOV-OFF and MOV-ON for movements between different keepers.
Fields
Required:
-
Generic Key:
Departure.Identifier
Specific Key:ScotMoves.Movement.DepartureLocation
Type: CPH (County-Parish-Holding)
Format: CC/PPP/HHHH
Description: The holding from which animals are moving. -
Generic Key:
Destination.Identifier
Specific Key:ScotMoves.Movement.DestinationLocation
Type: CPH (County-Parish-Holding)
Format: CC/PPP/HHHH
Description: The holding to which animals are moving.
Optional:
- Generic Key:
Departure.Date
Specific Key:ScotMoves.Movement.MovementDate
Type: Date
Description: The date of movement. If not provided, defaults to the transaction date.
Animal Requirements
- At least one animal must be provided
- Each animal must have either
rfidorvisualidentifier - No duplicate RFIDs allowed
- No duplicate Visual IDs allowed
- Untagged animals are not supported
Example Transaction
{
"reference": "SCOTMOVES-MOVE-INTERNAL",
"transactionDate": "2020-08-29T22:27:08.712Z",
"type": "MOV-INTERNAL",
"serviceTag": "SCOT-MOVES",
"speciesCode": "C",
"propertyIdentifier": "89/677/0009",
"fields": {
"ScotMoves.Movement.DepartureLocation": "89/677/0009",
"ScotMoves.Movement.DestinationLocation": "89/677/0010",
"ScotMoves.Movement.MovementDate": "2020-08-29"
},
"animals": [
{
"visual": "UK100015401645"
},
{
"visual": "UK100015501619"
}
],
"untaggedAnimals": []
}
For more information about submitting Transactions see Submitting transactions.
Record animal death
Record the death of animals at a property. This transaction notifies SCOT-MOVES when animals die at a holding.
Fields
Required:
-
Generic Key:
Death.Location
Specific Key:ScotMoves.Death.MainLocation
Type: CPH (County-Parish-Holding)
Format: CC/PPP/HHHH
Description: The holding where the animal died. -
Generic Key:
Death.Date
Specific Key:ScotMoves.Death.Date
Type: Date
Format: YYYY-MM-DD
Description: The date when the animal died.
Animal Requirements
For animals provided as part of a death record, only the visual property is required, although it must be in the following format:
NB: Spaces are shown by ⋅, numbers by N.
UK⋅N⋅NNNNNN⋅NNNN⋅N
Example Transaction
{
"transactionDate": "2020-07-22T22:27:08.712Z",
"type": "DTH",
"speciesCode": "C",
"serviceTag": "SCOT-MOVES",
"propertyIdentifier": "89/677/0009",
"fields": {
"ScotMoves.Death.MainLocation": "89/677/0009",
"ScotMoves.Death.Date": "2020-08-22"
},
"animals": [
{
"visual": "UK100015401645"
},
{
"visual": "UK100015501619"
}
],
"untaggedAnimals": []
}
For more information about submitting Transactions see Submitting transactions.