| Prepared by | Growth Consulting (migration contractor) · Contact: ________ · Email: ________ |
|---|---|
| Date / version | 2026-11-14 · v5 (please answer this version) |
| What is happening | Moving your business data out of Coda (customers, projects, quotes, payments, timesheets, files) into a self-hosted ERP. Coda stops being your main system afterwards. |
| What the ERP is for | Our understanding: it becomes your single system of record for jobs, payments and files, while tax and bookkeeping stay with your accountant. If that is wrong, correct it in 14.4 or section 13 — it changes many answers below. |
| Where the data is now | In an export file on one controlled workstation (Windows, encrypted disk). Never uploaded to a third-party site, never emailed, never pasted into chat. Your data does not pass through any relay server. |
| Privacy | The data contains 1,423 customers' names, addresses, phones and emails, plus 5,371 site photos. Canadian PIPEDA applies: used only for the migration, then retained or destroyed per your instruction with written confirmation. |
| Cost | Storage: about $1.50/month if the 76 GB goes to Cloudflare R2 (R2 list price, confirmed before we switch it on). Server and backups are already covered by the existing VPS — no extra charge. |
| If you don't answer | Under every question is a grey line "If unanswered →" stating our default. The rule is no answer = no action (nothing deleted, overwritten or imported). If a default is wrong, correct it in that question's box. |
| What we have already verified | (1) all 45 tables / 25,750 rows exported and cell-by-cell compared against Coda's own CSV export — no content lost; (2) all 5,371 files downloaded and checked for size and file type; (3) we created one customer, project, quotation, invoice and payment in your ERP and deleted them again — the write path works and your data was untouched |
| How to return it | Click "Download answers (JSON)" and send the file to ________. Printing it and returning a signed scan is equally fine. |
We extracted everything from Coda: 45 tables, 25,750 rows, 36 pages, 5,371 files (17.8 GB). We then ran a full dry run — assembling every record against the ERP schema without writing anything — and it surfaced 17 places where the import would stop. Thirteen need a business answer from you; four we handle ourselves (see Appendix A).
Every question below shows the measured data first, and every question has its own correction box. If we got something wrong, write it right there — you do not have to save it all for the end.
Nothing has been written to the ERP yet. Nothing in Coda has been changed.
We first assumed the "Primus Master Customers Table" (932 rows) was your customer list. That was wrong.
The real master table is called 640:
640: 1,425 rows / 1,423 unique customers — covers 1,291 of the 1,297 customers referenced by projects (99.5%)640 is 1,332640: 19 (=1,351−1,332; likely typos or test records)#r1816), plus 3 malformed names:
Brennan O'Bee O'Bee, Amelia Merrick, Dwaine Laxdal | Dwaine Laxdal1.1 Should we create the 91 missing customers?
1.2 Which customer group do the new ones belong to?
1.3 For the 1,332 existing customers, should we update them from 640?
1.4 How should we handle the 42 broken references and 3 malformed names?
The ERP's Project status has four values: Open / On hold / Completed / Cancelled. Your projects use 15 named stages plus 31 blank rows. Counts are across 815 active + 864 archived. The ERP also has a Workflow engine with any number of states (this site already runs 2 workflows with 13 states), so keeping all 15 is technically fine — we just need to know how each one should count in reports.
★ required
| Stage in Coda | Projects | Map to ERP status |
|---|---|---|
| Closed | 543 | |
| Cancelled | 371 | |
| Revisit | 232 | |
| Estimate Follow-Up | 181 | |
| Ghosted | 92 | |
| Quote Follow-Up | 78 | |
| Paid | 54 | |
| (blank) | 31 | |
| Active | 17 | |
| Invoiced | 15 | |
| Quoting | 14 | |
| Site Visit | 12 | |
| Complete | 12 | |
| New | 9 | |
| Estimating | 9 | |
| Accepted | 9 |
2.1 Which stage means the customer accepted (won)?
2.2 Which stages mean the deal is dead?
The ERP has three companies: Gott Energy (GE), Gott Energy Ltd. (GEL), Test.
The 20 existing projects are split between GE and GEL. Your 30 Sep 2026 balance sheet is headed «GOTT Energy Ltd.» — so GEL is the operating entity. Coda has no company column — only a Branch
(Prince George 1,557 / Nanaimo 114 / Yukon 8). We cannot derive it from the data.
3.1 Which company should the imported projects belong to?
3.2 What should happen to the 20 projects already in the ERP (Kitselas Fish Wheel, Kluane Tiny Homes, QPly Valve, Centerra Gold…)?
4.1 Should the 864 archived projects be imported? ★ required
4.2 What about the 540 rows with no job number? ★ required
G260100-D = deposit, -F = final); only 3 exist in the invoice tableBob holds the 30 Sep 2026 balance sheet, AR aged, AP aged and P&L (prepared by Jodi O'Neill). AR $298,843.12 (23 customers), AP $99,314.59 (18 vendors), and the aged detail ties exactly to the statements. This means historical payments do not have to be replayed — see 5.2Date 2024-06-03 is not in any active Fiscal Year; an invoice on the same date submits fine. This ERP's fiscal year starts on 2025-11-01 — so the 377 payments (375 dated before 2025-11-01 plus 2 with no date, $3,539,636.57, 52%) can only be loaded after 2024–2025 fiscal years are created. Invoices are not affected5.1 Where are the real invoices issued?
5.2 How should the 730 payments be imported? ★ required
5.4 Are the amounts in Coda tax-inclusive or exclusive — and which tax applies? ★ required
5.3 Should the 25 invoice rows be imported?
About line items: the NAS holds 736 invoice PDFs, 555 of which yield an invoice number (357 distinct numbers, with subtotal / GST / PST lines). Of the 424 valid invoice codes referenced by payments, 179 (42%) match a PDF; the other 245 have an amount but no document. Quotes likewise carry itemised detail (panel count, inverter model, labour) in their PDFs.
77 unique quote numbers across 91 rows; 29 rows have no amount. Dates and customers all parse correctly. We plan to set valid until = quote date + 30 days (the field is required and Coda has nothing for it) — correct us if that is wrong. Like invoices, quotes have no line items — only a total. The PDFs/Excel on the NAS do contain the detail.
6.1 Should the 29 quotes without an amount be imported?
6.2 Do you need line items in the ERP, or is the total enough? ★ required
6.3 Some quote numbers have several versions (12 groups, e.g. Q837 has 3 different prices). Which do we keep?
1,901 time entries (748 current + 1,153 archived) contain only 7 distinct names: 4 match (Ryan Baerg, Devon Wiebe, Caleb Milton, Calvin Sherman), 3 do not. The ERP has 12 employees in total; the other 5 have no time entries. Please fill in their full name as it should appear in the ERP:
★ required
| Name in Coda | Rows | Full name in the ERP |
|---|---|---|
| Jeffrey | 134 | |
| Jordan | 99 | |
| Conner Dulisch | 15 |
7.1 Is "Conner Dulisch" the same person as "Connor Dulish" in the ERP?
7.2 68 time entries reference a job that does not exist. What should we do?
8.1 Where should the 127 service jobs go? ★ required
8.2 The 281 permits?
8.3 The 85 Critical Projects (sales pipeline)?
The Coda project table has 164 data columns. Removing section headers, buttons and calculated columns leaves 60 real fields. 13 of them already exist in the ERP (Branch, Project Manager, Site Address, Array Type, Battery Type, Roof Pitch, Hydro Service…), so 47 would be new. "% filled" is measured across 815 active projects. (Also note: the ERP already has 306 custom fields, 79 of them on Project — left over from the earlier setup.)
Fields marked exists do not need to be built — just confirm we read them correctly. Unticked = the field is not created, but the data stays in the exported file and can be added later.
★ required
| Tick the ones you use | Type | Filled | Example |
|---|---|---|---|
| select | 100% | Residential | |
| select | 100% | Prince George | |
| person | 100% | Gott Admin | |
| person | 96% | Tj Dhillon | |
| text | 94% | 4046 Brink Drive | |
| text | 94% | Prince George | |
| select | 94% | Hybrid | |
| text | 92% | From facebook: hi there if I was to | |
| select | 90% | BC Hydro Solar Panel Rebate | BC Hyd | |
| select | 89% | Roof - Shingle | |
| select | 87% | Energy Security | |
| select | 75% | Yes | |
| select | 74% | ||
| person | 70% | Tj Dhillon | |
| date | 50% | 2026-10-19T00:00:00.000-07:00 | |
| select | 47% | 200 | |
| date | 46% | 2026-11-10T00:00:00.000-08:00 | |
| checkbox | 45% | true | |
| text | 41% | 26x500W (80%) | |
| select | 40% | Natural Gas | |
| select | 40% | 200 | |
| number | 39% | 26101 | |
| select | 38% | 200 | |
| select | 36% | 120/240V | |
| date | 36% | 2026-11-05T00:00:00.000-08:00 | |
| currency | 35% | 7141.5 | |
| checkbox | 34% | true | |
| checkbox | 33% | true | |
| currency | 33% | 7998.48 | |
| checkbox | 33% | true | |
| checkbox | 32% | true | |
| dateTime | 32% | 2026-11-05T09:00:00.000-08:00 | |
| select | 31% | No incentives | |
| checkbox | 28% | true | |
| currency | 27% | 8915.24 | |
| date | 27% | 2026-10-21T00:00:00.000-07:00 | |
| text | 27% | N/A | |
| currency | 26% | 400 | |
| number | 26% | 11220 | |
| select | 26% | Yes | |
| date | 24% | 2026-11-04T00:00:00.000-08:00 | |
| date | 24% | 2026-10-08T00:00:00.000-07:00 | |
| date | 22% | 2026-10-23T00:00:00.000-07:00 | |
| checkbox | 22% | true | |
| text | 22% | not needed | |
| checkbox | 21% | true | |
| text | 20% | EL-2138096-2026 | |
| checkbox | 19% | true | |
| select | 18% | Lithium | |
| date | 18% | 2026-10-19T00:00:00.000-07:00 | |
| select | 18% | Everything | |
| text | 18% | Burwash | |
| text | 17% | mech room | |
| date | 17% | 2026-10-23T00:00:00.000-07:00 | |
| select | 16% | Not needed | |
| checkbox | 15% | true | |
| date | 15% | 2026-10-21T00:00:00.000-07:00 | |
| person | 13% | Tj Dhillon | |
| text | 13% | New | |
| checkbox | 10% | true |
9.1 Any field that matters but is missing from this list?
This is not project data, but it may be what people use every day. Your call.
10.1 Should the 939 to-dos be imported?
10.2 Should the 980 install calendar entries be imported?
10.3 Should the 37 meeting notes be imported?
2025, KAS 982, Angela's Airstream)Files can live in three places: on the VPS (space after cleanup, fastest, but a single disk), Cloudflare R2 (off-site, about $1.50/month), or stay on the NAS (free, but needs VPN off-site). Whichever you choose, a second copy must exist somewhere else.
11.1 Where should the 5,371 Coda photos (17.8 GB) go? ★ required
11.2 Where should the 19,585 NAS files (57.8 GB) go? ★ required
11.3 What about the 38 unmatched NAS folders?
11.5 Only 13% of projects have recorded photo consent. How should the photos be handled?
11.4 All photos, or only recent ones?
12.1 What should happen to the 77 password entries?
12.2 Import the 112 Volthium consignment records?
12.3 Import the 27 customer issue records?
12.4 Import Grant Funding (7) and MATERIALS (32)?
12.5 Import the annual budget/actuals (71 rows)?
This is our plan for all 45 tables — 25,750 rows — in Coda. Each row shows import / skip / to-be-confirmed, with the reason. If any judgement is wrong, say so in question 13.1 (just name the table).
| # | Problem | Area | Resolution |
|---|---|---|---|
| 1 | 新建客户缺个人姓名 | Customer | We create them as Company |
| 2 | 客户分组无法判断 | Customer | Q1.2 |
| 3 | 项目名重复 201 组 | Project | Append the job number |
| 4 | 项目归属公司 | Project | Q3.1 |
| 5 | 15 种阶段映射 | Project | Section 2 |
| 6 | 540 行无编号 | Project | Q4.2 |
| 7 | 4 个客户解析不了 | Project | Q1.4 |
| 8 | 无明细行 | Quotation | Q6.2 |
| 9 | 无有效期/付款条款 | Quotation | Quote date + 30 days (correct in Q6) |
| 10 | 无明细 + 缺默认账户 | Invoice | Q5.3 / Q6.2; accounts we set up |
| 11 | 发票号对不上 | Payment | Q5.1 / Q5.2 |
| 12 | 没有银行/现金账户 | Payment | We create Bank - GE |
| 13 | 3 个员工名对不上 | Timesheet | Section 7 |
| 14 | 127 条服务工单归属 | Service | Q8.1 |
| 15 | 281 条许可归属 | Permits | Q8.2 |
| 16 | 85 条销售机会 | Opportunity | Q8.3 |
| 17 | 47 个自定义字段 | Custom field | Section 9 |
| Table | Rows | Plan | Reason |
|---|---|---|---|
| Master Projects Table | 815 | import | Project |
| 640 | 1,425 | import | Customer |
| Hydro Calculator | 2 | skip | calculator |
| Actions Master Table | 15,923 | skip | audit log (who changed what) |
| View Actions for a Job | 7 | skip | view |
| Primus Master Customers Table | 932 | skip | partner's shared list |
| Issues and Opportunities | 27 | to confirm | customer issue log |
| Grant Funding | 7 | to confirm | grant reference data |
| Project Quotes | 91 | import | Quotation |
| Finances | 4 | to confirm | annual summary |
| 2023 Actuals | 33 | to confirm | annual summary |
| 2025 Budget | 34 | to confirm | annual summary |
| Master Tasks List | 25 | to confirm | task list |
| HLP Mark all customers as complete | 1 | skip | one-off script |
| Working? | 3 | skip | scratch |
| To Do List Master | 939 | to confirm | open to-dos |
| Templates | 9 | skip | templates |
| Installation Calendar | 980 | to confirm | scheduled installs |
| Payments | 730 | import | Payment Entry |
| Extras | 5 | skip | scratch |
| Time Cards Log | 748 | import | Timesheet |
| Master Employees Table | 14 | import | Employee |
| HLP Copy Quote approved date | 1 | skip | one-off script |
| Invoices | 25 | import | Sales Invoice |
| Invoicing - Invoice Link # Table | 5 | skip | helper table |
| Initial Permits | 281 | to confirm | permit register |
| Volthium Ins and Outs | 38 | to confirm | consignment stock |
| Volthium Invoices | 23 | to confirm | consignment stock |
| Volthium Material List | 15 | to confirm | consignment stock |
| Volthium Invoice Contents | 36 | to confirm | consignment stock |
| Passwords | 77 | to confirm | credential vault |
| Manual Time Card Link #s | 1 | skip | helper |
| Master Service Work Table | 127 | to confirm | service jobs |
| Joel's Activity Inventory | 70 | skip | personal list |
| Emails | 9 | skip | email templates |
| Sending Emails | 8 | skip | email templates |
| Meetings | 37 | to confirm | team meeting notes |
| Admin Activities | 67 | skip | internal admin list |
| MATERIALS | 32 | to confirm | inventory list |
| Hagwilget Training TASKS | 36 | to confirm | training checklist |
| Add Event Info | 1 | skip | helper |
| Google Calendar Events | 5 | skip | 5 rows |
| Archived Master Projects Table | 864 | to confirm | archived projects |
| Critical Projects | 85 | to confirm | sales pipeline |
| Time Cards Archive | 1,153 | import | Timesheet |
| 45 tables | 25,750 |
13.1 Which judgement above is wrong? (table name + what it should be)
Loading the data is not the same as a successful migration. If nobody logs in, or Coda keeps being written to during cut-over, or there is no way back, the migration has failed. These five questions decide when we can call it done.
14.1 After the migration, who will actually log in?
14.2 When will Coda be switched off?
14.3 Who signs off that the migration is correct?
14.4 Who provides the opening balances at cut-over (AR, AP, bank)? ★ required
14.5 If something is wrong during acceptance, what should happen?
Tick the box below and fill in your name and date — the exported file carries them as the record of this reply.
| Name | |
|---|---|
| Role | |
| Date |