Gott Energy → ERP: migration confirmation

What this document is · who sent it · when
Prepared byGrowth Consulting (migration contractor) · Contact: ________ · Email: ________
Date / version2026-11-14 · v5 (please answer this version)
What is happeningMoving 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 forOur 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 nowIn 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.
PrivacyThe 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.
CostStorage: 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 answerUnder 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 itClick "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.

Only the 12 items marked ★ need your decision. The other 30 have defaults we will follow if left blank.

1Customer master: we had the wrong table

What we measured

We first assumed the "Primus Master Customers Table" (932 rows) was your customer list. That was wrong. The real master table is called 640:

1.1 Should we create the 91 missing customers?

If unanswered → Not created — customers stay missing, nothing else blocked

1.2 Which customer group do the new ones belong to?

If unanswered → All go to Unclassified

1.3 For the 1,332 existing customers, should we update them from 640?

If unanswered → No update — the ERP stays as it is

1.4 How should we handle the 42 broken references and 3 malformed names?

If unanswered → Left blank, does not block the import

2Project status: 15 in Coda, 4 in the ERP

What we measured

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 CodaProjectsMap to ERP status
Closed543
Cancelled371
Revisit232
Estimate Follow-Up181
Ghosted92
Quote Follow-Up78
Paid54
(blank)31
Active17
Invoiced15
Quoting14
Site Visit12
Complete12
New9
Estimating9
Accepted9

2.1 Which stage means the customer accepted (won)?

If unanswered → We treat Accepted as won

2.2 Which stages mean the deal is dead?

If unanswered → We treat Cancelled + Ghosted as dead

3Which company do the 1,679 projects belong to?

What we measured

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?

If unanswered → All go to Gott Energy Ltd. (GEL) — it is the reporting entity

3.2 What should happen to the 20 projects already in the ERP (Kitselas Fish Wheel, Kluane Tiny Homes, QPly Valve, Centerra Gold…)?

If unanswered → The 20 projects stay untouched

4Archived projects and rows without a job number

What we measured

4.1 Should the 864 archived projects be imported? ★ required

If unanswered → Import all (Completed / Cancelled)

4.2 What about the 540 rows with no job number? ★ required

If unanswered → Skip the 540 rows

5Money: 730 payments, almost no invoices

This is the biggest gap

5.1 Where are the real invoices issued?

If unanswered → Assume totals only, recorded in Coda

5.2 How should the 730 payments be imported? ★ required

If unanswered → No historical payments — wait for the accountant on opening balances

5.4 Are the amounts in Coda tax-inclusive or exclusive — and which tax applies? ★ required

If unanswered → Treat as tax-exclusive, GST 5% + PST 7%

5.3 Should the 25 invoice rows be imported?

If unanswered → Import the 13 rows that have an amount

6Quotes: 91 records, 29 without a price

What we measured

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?

If unanswered → Skip the 29

6.2 Do you need line items in the ERP, or is the total enough? ★ required

If unanswered → Totals only, detail linked to the NAS file

6.3 Some quote numbers have several versions (12 groups, e.g. Q837 has 3 different prices). Which do we keep?

If unanswered → Keep every version

7Timesheets: 3 staff names do not match

What we measured

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 CodaRowsFull name in the ERP
Jeffrey134
Jordan99
Conner Dulisch15

7.1 Is "Conner Dulisch" the same person as "Connor Dulish" in the ERP?

If unanswered → Treated as the same person

7.2 68 time entries reference a job that does not exist. What should we do?

If unanswered → Import with no project

8Service jobs, permits, opportunities

What we measured

8.1 Where should the 127 service jobs go? ★ required

If unanswered → A separate Service Job list

8.2 The 281 permits?

If unanswered → Fields on the project

8.3 The 85 Critical Projects (sales pipeline)?

If unanswered → The 85 are not imported

9Which custom fields do you actually use?

What we measured

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 useTypeFilledExample
select100%Residential
select100%Prince George
person100%Gott Admin
person96%Tj Dhillon
text94%4046 Brink Drive
text94%Prince George
select94%Hybrid
text92%From facebook: hi there if I was to
select90%BC Hydro Solar Panel Rebate | BC Hyd
select89%Roof - Shingle
select87%Energy Security
select75%Yes
select74%Facebook
person70%Tj Dhillon
date50%2026-10-19T00:00:00.000-07:00
select47%200
date46%2026-11-10T00:00:00.000-08:00
checkbox45%true
text41%26x500W (80%)
select40%Natural Gas
select40%200
number39%26101
select38%200
select36%120/240V
date36%2026-11-05T00:00:00.000-08:00
currency35%7141.5
checkbox34%true
checkbox33%true
currency33%7998.48
checkbox33%true
checkbox32%true
dateTime32%2026-11-05T09:00:00.000-08:00
select31%No incentives
checkbox28%true
currency27%8915.24
date27%2026-10-21T00:00:00.000-07:00
text27%N/A
currency26%400
number26%11220
select26%Yes
date24%2026-11-04T00:00:00.000-08:00
date24%2026-10-08T00:00:00.000-07:00
date22%2026-10-23T00:00:00.000-07:00
checkbox22%true
text22%not needed
checkbox21%true
text20%EL-2138096-2026
checkbox19%true
select18%Lithium
date18%2026-10-19T00:00:00.000-07:00
select18%Everything
text18%Burwash
text17%mech room
date17%2026-10-23T00:00:00.000-07:00
select16%Not needed
checkbox15%true
date15%2026-10-21T00:00:00.000-07:00
person13%Tj Dhillon
text13%New
checkbox10%true

9.1 Any field that matters but is missing from this list?

If unanswered → Only the ticked fields are created

10To-dos, install calendar, meetings: still in use?

What we measured

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?

If unanswered → Import all

10.2 Should the 980 install calendar entries be imported?

If unanswered → Import all

10.3 Should the 37 meeting notes be imported?

If unanswered → Not imported

11Files: Coda 17.8 GB + NAS 57.8 GB — where and how

What we measured

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

If unanswered → R2 as real attachments

11.2 Where should the 19,585 NAS files (57.8 GB) go? ★ required

If unanswered → Stay on the NAS, linked

11.3 What about the 38 unmatched NAS folders?

If unanswered → Match what we can, ignore the rest

11.5 Only 13% of projects have recorded photo consent. How should the photos be handled?

If unanswered → Only consented projects; the rest stay on the NAS

11.4 All photos, or only recent ones?

If unanswered → Import all

12The remaining tables: import or not

What we measured

12.1 What should happen to the 77 password entries?

If unanswered → Encrypted export, then destroy our copy

12.2 Import the 112 Volthium consignment records?

If unanswered → Not imported

12.3 Import the 27 customer issue records?

If unanswered → Not imported

12.4 Import Grant Funding (7) and MATERIALS (32)?

If unanswered → Not imported

12.5 Import the annual budget/actuals (71 rows)?

If unanswered → Not imported

13Anything we got wrong?

Check the table below

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).

Appendix A: the 17 blockers found in the dry run

#ProblemAreaResolution
1新建客户缺个人姓名CustomerWe create them as Company
2客户分组无法判断CustomerQ1.2
3项目名重复 201 组ProjectAppend the job number
4项目归属公司ProjectQ3.1
515 种阶段映射ProjectSection 2
6540 行无编号ProjectQ4.2
74 个客户解析不了ProjectQ1.4
8无明细行QuotationQ6.2
9无有效期/付款条款QuotationQuote date + 30 days (correct in Q6)
10无明细 + 缺默认账户InvoiceQ5.3 / Q6.2; accounts we set up
11发票号对不上PaymentQ5.1 / Q5.2
12没有银行/现金账户PaymentWe create Bank - GE
133 个员工名对不上TimesheetSection 7
14127 条服务工单归属ServiceQ8.1
15281 条许可归属PermitsQ8.2
1685 条销售机会OpportunityQ8.3
1747 个自定义字段Custom fieldSection 9
TableRowsPlanReason
Master Projects Table815importProject
6401,425importCustomer
Hydro Calculator2skipcalculator
Actions Master Table15,923skipaudit log (who changed what)
View Actions for a Job7skipview
Primus Master Customers Table932skippartner's shared list
Issues and Opportunities27to confirmcustomer issue log
Grant Funding7to confirmgrant reference data
Project Quotes91importQuotation
Finances4to confirmannual summary
2023 Actuals33to confirmannual summary
2025 Budget34to confirmannual summary
Master Tasks List25to confirmtask list
HLP Mark all customers as complete1skipone-off script
Working?3skipscratch
To Do List Master939to confirmopen to-dos
Templates9skiptemplates
Installation Calendar980to confirmscheduled installs
Payments730importPayment Entry
Extras5skipscratch
Time Cards Log748importTimesheet
Master Employees Table14importEmployee
HLP Copy Quote approved date1skipone-off script
Invoices25importSales Invoice
Invoicing - Invoice Link # Table5skiphelper table
Initial Permits281to confirmpermit register
Volthium Ins and Outs38to confirmconsignment stock
Volthium Invoices23to confirmconsignment stock
Volthium Material List15to confirmconsignment stock
Volthium Invoice Contents36to confirmconsignment stock
Passwords77to confirmcredential vault
Manual Time Card Link #s1skiphelper
Master Service Work Table127to confirmservice jobs
Joel's Activity Inventory70skippersonal list
Emails9skipemail templates
Sending Emails8skipemail templates
Meetings37to confirmteam meeting notes
Admin Activities67skipinternal admin list
MATERIALS32to confirminventory list
Hagwilget Training TASKS36to confirmtraining checklist
Add Event Info1skiphelper
Google Calendar Events5skip5 rows
Archived Master Projects Table864to confirmarchived projects
Critical Projects85to confirmsales pipeline
Time Cards Archive1,153importTimesheet
45 tables25,750

13.1 Which judgement above is wrong? (table name + what it should be)

If unanswered → Treated as agreement with every call in the appendices

14Who will use it, when we cut over, and what counts as done

Why this matters

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?

If unanswered → Configure for Heidi + 3-5 office staff

14.2 When will Coda be switched off?

If unanswered → Coda stays on; run both

14.3 Who signs off that the migration is correct?

If unanswered → Heidi signs off

14.4 Who provides the opening balances at cut-over (AR, AP, bank)? ★ required

If unanswered → Use the four 30 Sep 2026 statements from the NAS

14.5 If something is wrong during acceptance, what should happen?

If unanswered → Fix records individually, no rollback
Acknowledgement and signature

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