Skip to content

6.8.1 Introduction

Synchronisation & Submissions covers how we keep our copy of each farm's data up to date, and what we send to official bodies. Sync runs detect records added, changed or deleted at the source; schedules and digests drive the farm sync client; official submissions record exactly what we sent.

Keeping a record of every sync does two jobs. It shows whether each sync ran and what it changed, so failures are easy to spot. It also lets a reinstalled client carry on where the old one stopped: at setup it downloads what we already hold, so it does not send the farm's whole history again.

6.8.1.1 Diagram

Entities of this domain, their subtypes and the references between them. References to other domains are listed on each entity page.

classDiagram class SyncRun class SyncClient class SyncSchedule class SyncDigest class OfficialSubmission class SourceFeed <<external>> SourceFeed SyncRun --> SyncClient : sync_client SyncSchedule --> SyncClient : sync_client OfficialSubmission --> OfficialSubmission : supersedes SyncDigest --> SourceFeed : source_feed

Classes marked «external» belong to another domain.

6.8.1.2 Entities

  • SyncRun: One synchronisation of a feed, and what it covered.
  • SyncClient: The farm sync client, as the data side sees it: one stable identity per farm client, with the farm it works for and the feeds it reads.
  • SyncSchedule: When a farm's sync client synchronises, as a recurrence in the farm's timezone, with optional exceptions for single feeds.
  • SyncDigest: A monthly fingerprint, per feed, of what the farm's sync client believes it has sent.
  • OfficialSubmission: Records data sent to an official body, such as milk recording or a registry: the exact file, its format, what it included and the recipient's answer.