Data Synchronization, Backup, Recovery and Retention User Guide
This guide covers everything about getting data into and out of Agilebars, Timebars and Costbars, and about keeping it safe while it moves: where your data lives, how to export it, how to bulk-edit it in a spreadsheet, how to bring it back, what protects you when the two get out of step, and how to recover when something goes wrong.
One thing to read before anything else. A spreadsheet import is not a merge. It clears each store and replaces it. Anything you changed in the app since your last export is gone. The application now watches for exactly this and stops the import rather than letting it happen — see The import gate. It is the most important section in this guide.
Contents
- Where your data lives
- The data stores
- Which copy is the source of truth
- Moving data out
- Moving data in
- The import gate and the sync alert
- The spreadsheet workflow
- Other data actions
- Undo Bar Move
- Backup, recovery and retention
- Cloud publishing
- Validation and integrity
- Troubleshooting
- Best practices
1. Where your data lives
The products follow a client-first architecture:
- Your data lives in your browser, in IndexedDB
- No internet is required — the application works completely offline
- Nothing moves unless you move it — every export, import and publish is something you initiate
- Cloud publishing is optional
Three storage layers
| Layer | Where | What it is for |
|---|---|---|
| IndexedDB | your browser | live work; every edit lands here immediately |
| Files | your computer | bulk editing, backups, offline work |
| Timebars Cloud | Timebars servers | team sharing and cross-device access, opt-in |
Your browser (IndexedDB)
↓ ↑ you control every movement
Spreadsheet / JSON / CSV files ←→ Timebars Cloud
About IndexedDB
| Database name | TB |
| Version | 1 |
| Typical size | ~5–20 MB for 100–500 bars; up to ~100 MB for large portfolios |
| Browsers | Chrome, Firefox, Edge, Safari |
What this means in practice:
- Data survives closing the browser and restarting the machine.
- Data is isolated per browser — your Chrome data is not your Firefox data.
- Data is per domain — the Timebars site and the Costbars site hold separate databases.
- Clearing browser data deletes it. Take a Full Backup before you ever clear site data, change machines, or let IT reimage your laptop.
The hierarchy itself — the five levels, what may parent what, and how rollups work — is covered in the Data Model and Scheduling Engine Guide, which owns that subject. This guide is about moving the data, not modelling it.
2. The data stores
Fifteen stores. Ten round-trip through the workbook; the rest are calculated.
Stores you control
| Store | Holds | Edited through |
|---|---|---|
| tbTimebars | every bar on the canvas — portfolios, projects, tasks, milestones, allocations | canvas, Bar Creator, flyout forms, tabular grids |
| tbMetaData | 100+ extended fields per bar — status, health, priority, business case | Core Form, FOCD forms, tabular grids |
| tbResources | the resource pool — people and generic resources | Shared Resource Pool report, or the workbook |
| tbAdminPanel | settings — report date, timescale, zoom, product, view state | Canvas Settings and the toolbars |
| tbTags | every picklist value | Picklist Values report, or the workbook |
| tbSchema | the master field list — one row per field in the system | Schema Values report, or the workbook |
| tbFields | which fields sit on which FOCD form | Fields Values report, or the workbook |
| tbCoreReport | the Core Form layout — field, section, level | CoreReport Values report, or the workbook |
| tbBaseline | baseline snapshots of tbTimebars | Set Baseline on the CS form |
| tbCharts | saved chart configurations | saving an Agilebars burndown |
tbSchema is the newest of these and the most important to know about. It is the master field list every other configuration table joins to, and it replaced the old
BulkOperationsconfiguration table in the workbook. If your workbook predates it, see The workbook sheets.
Stores the application calculates
These are rebuilt from the stores above. Do not edit them, and do not carry them back into the workbook.
| Store | Holds | Rebuilt when |
|---|---|---|
| tbMdJoined | tbTimebars joined to tbMetaData, for reporting | canvas load, Recalculate All |
| tbResCalcs | time-phased hours and costs for burndown charts | burndown calculation |
| tbResCalcs2 | weekly resource demand by role, skill, location, department | canvas load, Recalculate All |
| tbResCalcsUsage | weekly resource availability | resource data changes |
| tbDocuments | deprecated — retained for compatibility, nothing writes to it | — |
3. Which copy is the source of truth
This is the most important idea in the guide, and the one that explains every alert, block and bulk-update tool that follows.
Your data can exist in four places at once — the browser, a workbook, a backup file, and a published pubset. Only one of them is current at any moment, and the product's job is to stop you overwriting the current one with a stale one.
The chain, in order
1. Editing in the app makes the browser the source of truth — immediately.
Change a picklist value on Picklist Values, a field label on Schema Values, a placement on CoreReport Values, or any bar or metadata field in a grid, and it is written to IndexedDB on the spot. There is no save step. From that instant, the browser holds the only current copy.
2. The workbook is now behind.
It still holds the configuration as it stood at your last export. Nothing about it looks wrong — it simply describes an earlier version of your product.
3. The application blocks the import rather than let you lose the change.
This is what the sync alert is. Rather than allow a stale workbook to overwrite a newer browser, the product stops the import and tells you which stores are affected. Export the changed stores, take them into the workbook, and the workbook becomes the source of truth again — at which point importing it is safe.
The full mechanism is in section 6. What matters here is why it exists: an import replaces stores wholesale, so without the gate the newer copy always loses.
4. Anything already published or backed up is behind too — and nothing warns you.
The gate protects the browser. It cannot protect copies that already left.
A pubset published last month, or a Full Backup taken last month, carries last month's Tags, CoreReport and Fields. Re-hydrate from it and your configuration silently reverts — renamed picklist values come back with their old names, fields you moved go back where they were.
This is not a defect; it is what a snapshot is. But it means a configuration change makes every existing pubset and backup progressively more out of date, and the more configuration you tune, the faster that happens.
5. Bulk Update is how published data catches up.
Rather than republish every pubset by hand after a configuration change, the Publishing and Syncing Timebars page has a Bulk Update tab that pushes one store into many existing pubsets at once.
| Bulk Update mode | Use it for |
|---|---|
| Complete Replacement (JSON file) | replacing a whole store — the usual choice after a picklist or layout change |
| Filter & Set (no file) | changing one field's value wherever it currently equals something else, across the selected pubsets |
| Row-Level Patch (CSV file) | updating named rows only. First column is the store key, the rest are the fields to change |
Select the target store, optionally filter the pubset list by publish date, tick the pubsets to update, preview, and apply. The stores it can push are tbTimebars, tbMetaData, tbResources, tbTags, tbFields, tbCoreReport and tbSchema.
tbSchema is available in Complete Replacement and Row-Level Patch only. Filter & Set builds its field list from the picklist table, which does not describe Schema's own columns, so Schema is greyed out in that mode.
What to do after a configuration change
- Export the changed stores — the sync alert panel offers exactly those
- Import them into the workbook, so it is the source of truth again
- Bulk Update your live pubsets with the changed configuration store
- Take a fresh Full Backup, so your newest restore point matches your newest configuration
Steps 3 and 4 are the ones people skip, and they are the ones that hurt months later.
4. Moving data out
Three exports, for three different jobs. All of them write to your browser's download folder.
| Menu item | Produces | Use it for |
|---|---|---|
| Full Backup | one file, tbFullBackup_YYYY-MM-DD_HH-MM-SS.js |
restore points — this is your safety net |
| Export to CSV (SpreadSheet sync.) | 15 CSV files, one per store | the spreadsheet round trip |
| Export to JSON | 15 JSON files, one per store | integrations, AI agents, external tools |
All three are on the Hamburger Icon menu.
Full Backup is the one that matters. It contains every store, so restoring it returns the application to exactly the state it was in. The other two are working exports.
A fourth route exists and is often the best one: the sync alert panel exports only the stores you have actually changed — see section 6.
Automatic backups
The application takes a Full Backup for you, without being asked, before:
- importing a spreadsheet, CSV or JSON file
- loading Demo Data
- Clear Timebars & Metadata
They land in your downloads folder with the same tbFullBackup_… naming. This is
a safety net, not a backup strategy — the files accumulate unsorted among your
downloads.
5. Moving data in
The drop panel
Hamburger Icon → Import SpreadSheet, CSV or JSON opens the Drop To Import Data panel. Drop a file onto it, or use the browse button.
Earlier documentation said to drag files onto the canvas. Use the import panel.
Accepted: .xlsx, .xlsm, .ods, .csv, .js, .json.
The filename rule
The application decides what a file is from the start of its name. A file whose name does not begin with one of these is rejected before anything is read:
| Name starts with | The file is treated as |
|---|---|
tbClient… |
the workbook — all its sheets |
tbFullBackup… |
a full restore |
transferBars… |
bars transferred from another product |
a store name — tbTags…, tbMetaData…, tbTimebars… |
that single store |
The last row is why the per-store exports round-trip cleanly: a file exported as
tbTags.json can be dropped straight back in. It is also why renaming a file
breaks the import. Keep the name the application gave it.
What an import actually does
This is the single most misunderstood behaviour in the product:
An import clears the store and replaces it. It does not merge.
Every row in the store is removed and the file's rows are written in their place. A row you added in the app and did not export is not preserved, not conflicted, not reported — it is simply gone.
The application does two things to protect you:
- It takes a Full Backup first, automatically.
- It refuses to import at all when it knows you have unexported local changes. That is section 6.
6. The import gate and the sync alert
Why this exists
You export to the workbook on Monday. On Tuesday you edit a few bars in the app, add a picklist value, set a baseline. On Wednesday you import the workbook you edited. Tuesday's work is destroyed, silently, with nothing on screen to suggest it was ever at risk.
The application now tracks this.
The alert icon
When any workbook-backed store holds edits that are not yet in the spreadsheet, a warning icon appears on the top menu.
| Action | What happens |
|---|---|
| Single click | a message: "Local changes pending — double-click for instructions." |
| Double click | the sync alert panel opens |
Double-click rather than single, so a stray click cannot throw a panel over whatever you were doing.
While the icon is showing, imports stop
Attempting an import gives you:
Import stopped. You have local changes that are not yet in the spreadsheet. Double-click the alert icon on the top menu for instructions.
The panel opens automatically, listing the stores concerned.
The check happens after the filename is validated and before the pre-import backup runs — so a blocked import has touched nothing at all. No backup file, no partial write, nothing to clean up.
The two ways out
The panel gives you two buttons, and they are not equivalent:
| Button | What it does |
|---|---|
| Export to Remove Block | writes one JSON file per changed store to your downloads folder, ready to import into the workbook, then clears the block |
| Remove Block | clears the block and keeps your local changes — the next import will overwrite them |
Export to Remove Block is the safe path. Remove Block is there because without an escape hatch a stale flag would leave the application unable to import at all — use it when you genuinely do not want the local changes.
Exporting a store through the normal Export to CSV or Export to JSON also clears that store's own mark automatically.
What gets watched
Nine stores can be changed from inside the app, and each is watched for the work that changes it:
| Store | Marked dirty by |
|---|---|
| Timebars | moving, resizing or rescheduling a bar; changing the Report Date; any field edit on a form or grid — Owner included |
| MetaData | field edits on a FOCD form, the Core Form or a tabular grid |
| Resources | edits in the Shared Resource Pool view or on the Resource form |
| Tags | editing, adding or deleting a value in Picklist Values |
| Baseline | setting or clearing a baseline from the CS form, at any level |
| Charts | saving a burndown chart in Agilebars |
| Fields | edits in Fields Values |
| Schema | edits in Schema Values |
| CoreReport | edits in CoreReport Values |
Five stores are deliberately not watched. Four of them — ResCalcs, ResCalcs2, ResCalcsUsage and MdJoined — are calculated, rebuilt by Recalculate All, and never worth carrying back. The fifth, AdminPanel, holds your settings and view state and is written on almost every click; watching it would leave the warning showing permanently and telling you nothing.
Two routes into the workbook
They are alternatives, not steps:
- Export to CSV on the main menu gives you everything, every time, and you decide which sheets to import.
- The sync alert panel gives you only the changed stores — less to import, and less chance of overwriting a sheet you did not mean to touch.
Setting it up
The tracking needs one column, apDirtyStores, on the AdminPanel
worksheet. It needs no database change — if your workbook does not have it yet,
add it. Without the column the app still works; it simply cannot remember the
warning across a reload.
7. The spreadsheet workflow
The template
| Excel | Hamburger Icon → Download Excel SS — tbClientMaster….xlsm |
| LibreOffice Calc | Hamburger Icon → Download Libre Office Calc SS — tbClientMaster….ods |
Both sync with all three products. The filename must still begin with
tbClient — that prefix is how the application recognises it.
The cycle
1. Export to CSV from the app (15 files)
2. Import All on the workbook's Setup tab
3. Edit in Excel or Calc
4. Save the workbook
5. Import the workbook back through the drop panel
Step 1 — export
Hamburger Icon → Export to CSV (SpreadSheet sync.). Wait for all files to finish downloading before moving on.
Step 2 — tell the workbook where they are
On the Setup tab, set the Location column to your browser's download folder. The Import Yes/No column controls which stores are pulled in by Import All, so you can leave the calculated stores out.
Step 3 — import into the workbook
Import All on the Setup tab pulls every sheet marked Yes. Individual sheets have their own Import button if you only want one.
Step 4 — edit
This is the point of the exercise: copy-paste, fill-down, formulas, filters, sorting, conditional formatting, bulk status changes, adding and deleting rows.
Sheet structure:
| Row | Contents |
|---|---|
| Row 1 | database field names — tbID, tbName, tbStart. Never change these. |
| Row 3 | friendly labels, for your reference |
| Row 4+ | your data |
Changing Row 1 breaks the import. It is how each column is matched to a field.
Step 5 — save, and step 6 — import back
Save the workbook (macros enabled writes the updated CSVs out), then drop it on the import panel. The app takes its automatic backup, replaces each store from its sheet, and redraws.
The workbook sheets
Fifteen sheets map to the fifteen stores:
| Sheet | Store | Edit it? |
|---|---|---|
| Timebars | tbTimebars | yes |
| MetaData | tbMetaData | yes |
| Resources | tbResources | yes |
| AdminPanel | tbAdminPanel | yes — settings and holiday exceptions |
| Tags | tbTags | yes — picklist values |
| Schema | tbSchema | yes — the master field list |
| Fields | tbFields | yes — FOCD form layout |
| CoreReport | tbCoreReport | yes — Core Form layout |
| Charts | tbCharts | yes |
| Baseline | tbBaseline | no — snapshot |
| MdJoined | tbMdJoined | no — calculated |
| ResCalcs | tbResCalcs | no — calculated |
| ResCalcs2 | tbResCalcs2 | no — calculated |
| ResCalcsUsage | tbResCalcsUsage | no — calculated |
| Documents | tbDocuments | no — deprecated |
How a sheet is laid out
Every data sheet in the workbook follows the same three-row anchor, and the macros, the exporter and the importer all depend on it:
| Row | Holds |
|---|---|
| Row 1 | the exact internal field names — tbID, tbName, tbStart — as column headers |
| Row 3 | friendly column titles, for reading. Nothing reads these |
| Row 4 | the first data row |
Do not insert or delete rows above row 4, and do not edit row 1. A field name typed into row 1 that does not exist in the Schema sheet is not imported and is not reported — the column is silently ignored. Change a name in Schema first, then in row 1.
The two sheets that carry your plan are Timebars (which maps to tbTimebars) and
MetaData (which maps to tbMetaData), joined by tbMDID = tbID. Where a MetaData
column mirrors a Timebars one — tbMDName, tbMDTypes, tbMDSubtype, tbMDCustomerID —
take the value from the matching Timebars row rather than typing it again.
Validation, and where it comes from
The workbook's macros check data quality as you edit — mandatory columns, data types, valid picklist values — and highlight problems in red.
The validation rules now come from the
Schemasheet. They used to come from a table on theBulkOperationssheet. If you are maintaining the macros,FormatAndValidateV1.basreadsCFG_SHEET = "Schema". TheBulkOperationssheet still exists for its import and export control ranges, but its field-configuration table is gone — one row per field now lives inSchema, so no field can be configured twice with two different answers.
Two Excel-side tools worth knowing about:
- The Column Managers — show and hide groups of columns on the Timebars and MetaData sheets, so you can work on one section at a time instead of scrolling across hundreds of columns.
- PickListsV1 — one picklist engine driving the dropdowns for both Tags and Resources values.
Before you import: the six checks
The workbook's validators catch most of this as you type, but these are the six that break an import or produce a broken hierarchy, and they are worth a deliberate pass:
- Every Timebars row has a unique
tbID, and every MetaData row has atbMDIDthat matches one - Every non-root row has a
tbSelfKey2pointing at a parent ID that exists tbTypeholds only the reserved values — Portfolio, Project, Sub-Project, Task, Milestone, Gate, Allocation- All dates are
DD-MMM-YYYY canvasNois1on every row- Headers are in row 1 and data starts at row 4
Numeric columns must hold numbers — 0, never blank, never na. The full field rules are
in the Data Model and Scheduling Engine Guide.
After every import: run Config Integrity
An import can leave the four configuration tables pointing at each other incorrectly — a field renamed on one sheet and not another, a row deleted while others still reference it, a picklist emptied. None of it throws an error.
Report Menu → Other → Config Integrity measures it. Make it the last step of every import. See the Forms, Reports and Graphs Guide for what it checks.
The rule about editing in two places
Do not edit in the application while the same data is out in a spreadsheet. The import gate now catches the dangerous half of this automatically, but the discipline is still worth keeping:
- Export
- Edit in the workbook
- Import
- Resume working in the app
8. Other data actions
All on the Hamburger Icon menu.
Bulk Manage Bars
Duplicate bars and children — enter the Bar ID (bottom-left of the bar on the
canvas) and click Duplicate. Copies appear near the original, names prefixed
duplicate, IDs suffixed -d. Good for template projects and what-if scenarios.
Transfer bars between products — enter the Bar ID and an optional ID prefix
to avoid collisions, click Transfer, and a transferBars…json file lands in your
downloads. Open the target product and drop that file on the import panel. Use it
when a waterfall project becomes agile, or an agile work package becomes a
portfolio item.
Migrate Rich Text
Converts legacy rich text from the old Quill format to the current editor's format. Safe to run at any time — already-converted and plain-text fields are left alone.
Run it once after upgrading, and again after importing an old backup file. If descriptions or business-case sections look like raw markup, this is the fix.
Clear Timebars & Metadata
Gives you a clean canvas without losing your configuration. A Full Backup is written automatically first, and the action asks for confirmation.
| Cleared | Kept |
|---|---|
| Timebars, MetaData, Baseline, Charts, and all four calculated stores | AdminPanel, Schema, Tags, Resources, Fields, CoreReport |
Note that baselines and saved charts go too — they describe bars that will no longer exist. The undo history is cleared for the same reason. Everything that makes the application yours — your picklists, your form layouts, your resource pool, your settings — survives.
Load Demo Data
Replaces current data with a demo dataset for the product you are running. A Full Backup is written automatically first.
Delete Database
Destroys everything, permanently. Refresh the browser afterwards and a fresh database is built with demo data. Back up first — this one does not do it for you.
9. Undo Bar Move
You moved a few bars, and the plan now looks wrong. Undo Bar Move puts them back.
Where it is: right-click anywhere on the canvas to open the Shortcut Menu. Undo Bar Move is the first item.
Undo remembers your last 5 moves, most recent first. Each click steps back one move.
Undo is not a backup. It covers bar moves only, only since your last data load, and only in this browser. For anything larger — a spreadsheet sync, a bulk import, a version upgrade — take a Full Backup first.
What Undo puts back
A drag or resize does not change one bar. It changes everything the scheduling engine recalculates as a result, and Undo reverses all of it:
- Bar positions — where each bar sat on the timescale, and its row
- Dates — Start, Finish, Actual Start, Actual Finish
- Durations — Duration and Remaining Duration
- Work — Work, A Work, Work Remaining
- Cost — Cost, A Cost, Cost Remaining
- Progress — % Complete
- Allocation values — Calendar hours, % Allocated, Pay Rate, Override flag
- Baseline bars — the matching baseline bar returns to its row
Because a move cascades, Undo restores more than the bar you touched. Move a Project and you moved its sub-projects, tasks, allocations, any linked successor tasks, its baseline bar, and the rolled-up totals on the Portfolio above it. Undo puts that whole branch back — which is what makes it trustworthy, but does mean undoing a Portfolio drag is a big operation.
What Undo never touches
Metadata is completely outside Undo. One rule with two halves, and both are worth learning:
| Undo restores it? | Does editing it cost an undo step? | |
|---|---|---|
| Schedule fields (dates, durations, work, cost, % complete, allocation values, bar position) | Yes | Yes — see below |
| Everything else (Name, Owner, tags, descriptions, Status, Priority, all Metadata, Budget Cost, Budget Hours, WBS Description) | No | No |
So you can rename bars, change owners, tap picklists, write status updates and edit descriptions whenever you like — before, between or after moves. Undo will not put any of it back, and none of it uses up your undo steps.
This works field by field, not bar by bar. Drag a bar, rename that same bar, then press Undo: the bar's dates go back and its new name stays.
Your typed schedule values are protected
Some values you type by hand are the same values Undo restores — hours to go, % Allocated, and the manual Cost / Work / % Complete cells on the status form. Without a safeguard, undoing an older move would quietly wipe out what you typed.
It cannot. Typing one of those values clears every restore point older than it.
- You move two bars → 2 moves available to undo
- You type a new Hours to go on an allocation → undo list clears, the button greys out
- You move two more bars → 2 moves available again
- You undo both → the bars go back, and your typed value is still there
You can undo moves made after your edit, but never back past it. Hover the menu item and it tells you exactly what happened, and when.
Which edits clear the list:
- Hours to go, % Allocated or Available hours per day on the Allocation Hours Calculator
- Remove Override on the Allocation form
- Manual Cost, A Cost, Cost Remaining, Work, A Work, Work Remaining or % Complete on the CS status form
Editing a bar's Name, Owner, tags, description, Status, Priority, Budget Cost or Budget Hours does not clear the list — Undo would never have touched those anyway.
Reading the menu item
| What you see | What it means |
|---|---|
| Undo Bar Move | one restore point available |
| Undo Bar Move (3) | three moves can be undone, most recent first |
| greyed out | nothing to undo — hover it and the text says why |
When Undo clears itself
Undo survives a page refresh. It is cleared whenever the underlying data is replaced:
- Loading Demo Data
- Clear Timebars & Metadata
- Restoring a Full Backup
- Importing a spreadsheet, CSV or JSON that replaces bars
- Typing a schedule value by hand (above)
This is deliberate. A restore point describes the bars that existed when it was taken; applying it to freshly loaded data would put back bars that no longer belong.
Undo is per browser, per machine
Restore points live in your browser's local database alongside your project data. They are not published to the cloud, not shared with colleagues, and do not travel to another computer or browser profile. Two people working on the same plan each have their own Undo.
Undo history is not included in a Full Backup — backup files are unchanged in size and content by this feature, and restoring one correctly clears the undo list.
Undo troubleshooting
| Symptom | Cause and fix |
|---|---|
| Undo is greyed out | No restore point. Hover it — either nothing has moved since the last data load, or a typed schedule value cleared the list |
| My undo list disappeared | You typed a schedule value. That protects your edit. Moves from now on are undoable again |
| Undo put back more than my last drag | Two things do this, both intended: a move cascades to children, siblings and linked tasks; and several drags within half a second are grouped into one restore point |
| Undo put back a bar I did not move | Same cause — it was part of the cascade |
| Undo did not restore my Name / tag / description change | Correct. Metadata is outside Undo entirely |
| Undo is slow on a large plan | It re-runs the full recalculation and redraw, the same cost as Recalculate |
| My colleague cannot undo my move | By design — undo history is local to one browser |
10. Backup, recovery and retention
What each kind of file contains
| File | Contains | Restores to |
|---|---|---|
Full Backup — tbFullBackup_… |
every store | exactly the state the application was in when it was taken |
Per-store JSON / CSV — tbTags.json, tbTimebars.csv … |
one store | that store only, replacing what is there |
The workbook — tbClient… |
the ten editable stores | those ten stores |
| A pubset in the cloud | fifteen stores | the application, on any device you log in from |
Only the Full Backup is a restore point. The others are working files: each replaces part of your data and leaves the rest as it is, which is exactly what you want for a bulk edit and exactly what you do not want after a mistake.
Automatic backups
The application takes a Full Backup for you, unasked, immediately before it does anything destructive:
- importing a spreadsheet, CSV or JSON file
- loading Demo Data
- Clear Timebars & Metadata
They land in your downloads folder with the same tbFullBackup_… name. This is a safety
net, not a backup strategy. The files accumulate unsorted among everything else you have
downloaded, and after a fortnight you will not be able to tell which one is the good one.
How to restore
Drop the file onto Hamburger Icon → Import SpreadSheet, CSV or JSON.
A Full Backup restore replaces every store. Anything done since that backup was taken is gone — including configuration changes, which is the case people forget. Take a fresh backup of the current state first if there is any chance you will want to come back to it.
Recovery scenarios
| What happened | What to do |
|---|---|
| Browser data was cleared — you open the app and your work is gone | Restore your most recent Full Backup. Then stop the browser clearing site data on exit, or this repeats |
| A different browser or profile — the data looks missing but nothing was lost | IndexedDB is per browser, per profile, per machine. Go back to the browser you were working in, or restore a backup into this one |
| You imported the wrong file | Restore the automatic Full Backup the application took immediately before that import. It is the newest tbFullBackup_… in your downloads folder |
| An import overwrote work you had done in the app | Same — the automatic pre-import backup holds it. This is what the import gate exists to prevent; see section 6 |
| Moving to a new machine | Take a Full Backup on the old machine and import it on the new one. Publishing to the cloud and re-hydrating also works and carries thirteen of the stores |
| The numbers look wrong rather than missing | Not a restore problem. Run Recalculate All, then Config Integrity. See section 12 |
| A picklist opens empty, or a field lost its list | A configuration reference broke, usually from a partial import. Run Config Integrity — it names what no longer resolves |
What a backup does not contain
- Undo history. Undo lives outside the backup, is cleared whenever data is loaded or imported, and is per browser. It is not a recovery tool — see section 9.
- Your browser's view state beyond what the AdminPanel store holds.
Retention
A backup you cannot find is not a backup.
| Practice | Why |
|---|---|
| Keep a dedicated backups folder — not Downloads | the automatic pre-import backups land in Downloads and bury the ones you meant to keep |
| Keep three to five recent Full Backups | enough to step back past a bad day; few enough to tell apart |
| Keep one monthly backup for as long as the plan matters | the daily set will have rolled over long before anyone asks what the plan looked like at approval |
| Keep the filename the application gave it | the timestamp is in the name, and the import decides what a file is from the start of its name. Rename it and it will not import |
| Take one before, not after | any spreadsheet import, bulk operation, demo-data load, configuration change, or browser change |
| Take a fresh one after a configuration change | so your newest restore point matches your newest configuration — see section 3 |
How often? Daily while you are actively working a critical plan; weekly for stable work. The honest test is how much re-typing you are willing to do, because that is exactly what a restore costs you.
11. Cloud publishing
Optional, user-initiated, and covered fully in the Cloud Publishing Guide. In outline:
Publish — Main Menu → Publish, log in, then Re-Publish! on the PubSet. Your data uploads and the Cloud Dashboard updates.
Re-Hydrate — on another device, Main Menu → Publish, log in, Re-Hydrate!. Data downloads to that device.
| Control | user-initiated only, never automatic |
| PubSets | up to 10 separate datasets, subscription dependent |
| Dashboard PubSet | the one with the blue background |
| Security | HTTPS in transit, token authentication, data isolated per account |
Re-Hydrate replaces all local data. Same warning as an import: back up first, and check the PubSet's Last Published date. If your local data is newer, publish before you re-hydrate.
12. Validation and integrity
Four layers, at different moments:
As you type — required fields enforced, date pickers, picklists, numeric fields reject text.
In the workbook — macro validators check mandatory columns, data types,
references and duplicate IDs, and highlight problems in red before you import.
Driven by the Schema sheet.
During import — field names checked against the schema, types checked, unique constraints enforced. Multi-store operations are all-or-nothing: an error rolls the whole thing back.
After import — Config Integrity for the configuration tables (section 7), and Recalculate All to rebuild every calculated store.
Referential behaviour worth knowing: deleting a parent bar deletes its children.
13. Troubleshooting
My data disappeared after restarting the browser
Browser data was cleared, or you are in a different browser or profile. Restore your most recent Full Backup through the import panel. Then check your browser is not set to clear site data on exit.
The import is blocked and I do not know why
You have local changes that are not yet in the spreadsheet. That is the gate working. Double-click the warning icon on the top menu, then use Export to Remove Block to keep those changes, or Remove Block to discard them. See section 6.
A pubset or backup brought back old picklists or an old form layout
It was published or taken before you changed the configuration, and a snapshot carries the configuration of its moment. Re-apply the change, then use Bulk Update on the Publishing and Syncing page to push the current store into your existing pubsets, and take a fresh Full Backup. See section 3.
The file will not import at all
The filename does not start with a recognised prefix. It must begin with
tbClient, tbFullBackup, transferBars, or a store name. Do not rename
exported files, and do not drop folders.
The import ran, but my changes are not there
Two likely causes. Either the sheet you edited was not marked Yes in the Setup tab's Import column, or you edited the sheet but did not save the workbook before dropping it. Re-export, re-import, and check the Setup tab.
An import overwrote work I had done in the app
An import replaces stores; it does not merge. The gate exists to prevent exactly
this — if it did not fire, the changes were made before the tracking was set up,
or apDirtyStores is missing from your AdminPanel sheet. Restore the automatic
backup taken immediately before the import; it is in your downloads folder.
A picklist opens empty, or a field lost its list
A configuration reference has broken — usually a value or picklist renamed on one sheet and not another. Run Config Integrity.
Rich text fields show raw markup
Run Migrate Rich Text from the Hamburger menu. Safe to run repeatedly.
Storage quota exceeded
Rare. Export your data, delete the database, and import back only what you need. Consider splitting very large portfolios.
The data looks inconsistent — totals do not add up
Run Recalculate All (right-click the canvas). It rebuilds every calculated store. If it persists, restore a backup.
Macros are not working in the workbook
Excel blocks macros in files downloaded from the internet. Right-click the file → Properties → Unblock, or enable macros when prompted. Without them the Import and Export buttons do nothing.
14. Best practices
Backups
Covered in full in section 10. The short version: keep them in a dedicated folder, keep three to five recent ones plus a monthly, take one before anything destructive, and take a fresh one after a configuration change.
Backups vs. Undo. Undo handles the small everyday mistake — a bar dragged to the wrong place. It does not replace a backup: bar moves only, five of them, and cleared whenever data is loaded or imported.
The sync loop
- Export — everything, or just the changed stores from the alert panel
- Edit in the workbook; do not edit the same data in the app meanwhile
- Save with the
tbClientname intact - Import through the drop panel
- Run Config Integrity
- Run Recalculate All
- Keep the workbook as a record of what changed
Test a major restructuring against demo data before running it on real data.
Multiple devices
- Nominate one device as primary
- Publish from it after changes
- Re-hydrate on secondary devices before working, never after
- Do not edit on two devices at once
- Agree a team convention: last person to edit publishes
Data hygiene
- Delete test and demo bars before production use
- Archive completed projects
- Keep naming conventions consistent
- Review unused resources and picklist values periodically
- Run Config Integrity after every import, not just when something looks wrong
Related documents
| For | See |
|---|---|
| Picklists, forms, and the configuration reports | Forms, Reports and Graphs Guide |
| The hierarchy, rollups and the scheduling engine | Data Model and Scheduling Engine Guide |
| Field-by-field detail | Schema Values report |
| Publishing and the Cloud Dashboard | Cloud Publishing Guide |
| Moving from a legacy system | Getting Started — its data-migration chapter |
Supersedes: Spreadsheet Sync User Guide, Data Management User Guide, and Data Structure User Guide.