# Appointment export reconstruction worksheet All completed examples below are fictional. Download and extract [the four example packages](/learn/resources/export-example-packages.zip) alongside this worksheet. The authored CSVs and text attachments illustrate an offline check; they are not captured platform exports or a tested migration. Do not fetch the illustrative `.example` URLs. ## What is in the exercise? Five tables: staff, services, appointments, appointment events and attachment manifest. IDs are text; money is integer cents with explicit currency; all timestamps are UTC. `package-manifest.json` lists expected files, data rows (excluding headers), capture times, byte lengths and SHA-256. It excludes its own bytes and the descriptive README from that inventory. | Case | Staff | Services | Appointments | Events | Attachment rows | Total table rows | Expected attachment files | Actual attachment files | | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | | A-complete | 2 | 2 | 3 | 4 | 2 | 13 | 2 | 2 | | B-missing-staff | 1 | 2 | 3 | 4 | 2 | 12 | 2 | 2 | | C-missing-attachment | 2 | 2 | 3 | 4 | 2 | 13 | 2 | 1 | | D-mixed-snapshots | 2 | 2 | 3 | 4 | 2 | 13 | 2 | 2 | Each expected inventory has seven payload files: five CSVs and two text attachments. A, B and D contain all seven; C contains six. Each folder also has its manifest and scope README. The archive contains 36 files in total, including the root README. A complete expected inventory is not proof that a real app's export scope is complete. ## Completed reconstruction: A101 in A-complete - Scope: reconstruct the appointment and its retained attachment at fictional `2026-10-09T12:00:00Z`. - Appointment: `A101`, client `C01`, Maya Lane, starting `2026-10-10T14:00:00Z`. - Staff: `S01`, Alex Vale, consultant. `S02` is also Alex Vale but is a technician assigned to A103. Never join on these display names. - Service: `SV01`, Setup consultation. - Agreed price: `8000` USD cents = USD 80.00, retained in the appointment and its `EV01` booking event at `2026-10-07T09:00:00Z`. - Current list price: `9500` USD cents = USD 95.00, effective `2026-10-09T08:00:00Z`. This is USD 15.00 more, but it does not alter the original agreement. - State/history: revision 1, confirmed. EV01 is its only event through the cutoff. A later real-world outcome is outside the example. - Attachment: `ATT01`, local `attachments/A101-preparation.txt`. Read the actual text and compare its byte length and SHA-256 with both manifests. The URL is a locator in a fictional record, not retained content. - Result: this package reconstructs the defined A101 fields and preparation note. It does not establish data beyond these selected records, original authenticity, permission enforcement or a working restore. ## Cross-check cancellation history A102 belongs to C02, Owen Gray, and references S01/SV01. EV02 booked it at `2026-10-07T10:00:00Z`, revision 1. EV04 cancelled it at `2026-10-09T11:00:00Z`, revision 2, because the client was unavailable. The latest appointment row in A-complete agrees: cancelled, revision 2, USD 80.00 original agreement and USD 20.00 recorded cancellation charge. ATT02 retains a cancellation note. Payment, collection and refund remain unknown. At the noon cutoff, A-complete has two confirmed appointments (A101/A103) and one cancelled appointment (A102). This is a status count, not a revenue calculation. ## Completed four-case key | Question | A-complete | B-missing-staff | C-missing-attachment | D-mixed-snapshots | | --- | --- | --- | --- | --- | | Are all listed payload files present with expected bytes/hashes? | Yes: 7/7 | Yes: 7/7 | No: 6/7; A101 preparation text absent | Yes: 7/7 | | Do appointment staff IDs resolve? | All three | No: A101/A102 reference absent S01 | All three | All three | | Is A101's original agreement recoverable? | USD 80.00 | USD 80.00; staff attribution still unresolved | USD 80.00; attachment content still unresolved | USD 80.00 | | Is A101's preparation text recoverable locally? | Yes | Yes | No; URL/hash do not supply bytes | Yes | | Does A102's row agree with its latest event through noon? | Yes: cancelled/revision 2 | Yes; staff attribution unresolved | Yes | No: confirmed/revision 1 versus cancelled/revision 2 | | What is the next useful action? | Record the scoped result; test other required records separately | Obtain the missing staff source and provenance; do not substitute S02 | Obtain and verify retained attachment bytes through an authorized source | Obtain coherent capture/change information; preserve both conflicting observations | Different capture times alone do not prove a conflict. D's `appointments.csv` was captured at `10:30Z`; the other payloads at `12:00Z`. The `11:00Z` cancellation explains why A102 cannot represent the proposed noon state. A row/event match for A101 does not resolve that other record. No automatic replay or row repair is performed. ## Blank reconstruction record | Field | Your evidence or explicit unknown | | --- | --- | | Intended business question and appointment ID | | | Package/file names and where they came from | | | Intended cutoff and each relevant file's capture time, with timezone | | | Expected scope, counts and any limit/truncation warning | | | Client identity, staff ID/name and service ID/name | | | Original agreed amount and currency; its source record | | | Current list price, if relevant; keep separate from the agreement | | | Current state/revision and ordered change evidence through the cutoff | | | Cancellation reason/charge, and separately any actual payment evidence | | | Attachment IDs, local paths and files actually opened | | | Expected versus actual byte/hash comparison; reference provenance | | | Missing references, conflicts and facts left unknown | | | Next evidence needed, responsible person and follow-up date | | | Scoped result: reconstructable / incomplete / inconsistent / not checked | | | What this check does not establish | | Do not publish real client exports. Use sample records and restrict access to personal information and attachments. A successful offline exercise is not proof of an atomic snapshot, complete backup, migration, authentication setup or restoration. For your current app, follow [the export help](/help/articles/exporting-your-data) and check its actual outputs. For a new app, use [the brief builder](/learn#brief-builder) to name the records, retained history and export permissions you need. Review the generated brief, edit its input fields and choose Start build. This link imports nothing and starts no export; building still uses normal account access and credits.