Cloud, database and module setup
In this chapter - Two kinds of cloud account: root administrator vs tenant - Deleting a workspace (always a manual staff action, with an offline backup before anything is removed) - Preparing a source-CRM database for TechieCRM's native modules - Local MongoDB mirror (TechieCRM's own database: see also A1. Installation) - Configuration values - Feature gating and add-ons
Root administrator vs tenant
The cloud Parent (techiecrm.com) has a stand-alone root/parent database that manages client registrations, users and licenses; the site root administrator's account lives there and is not a tenant. Each client company is a tenant with its own cloud database; a desktop is linked to a tenant by activating that tenant's license key. Test with a dedicated test tenant, never the root administrator account.
Requesting a workspace (www.techiecrm.com → Get Started)
A prospect fills in Request an invite: company name and the CRM(s) they use now or have tried (tick
all that apply, chosen from a list of common CRMs, plus an "Other" box); their
name and phone, then Country (Canada preselected), street/suite/city, Province / State (the list
only shows the chosen country's regions) and Postal / ZIP code (Canadian A1A 1A1 and US
12345[-6789] formats are enforced and auto-formatted; the form also sanity-checks that the postal/ZIP
code matches the province/state and city and shows a friendly warning with a "My address is correct, submit
anyway" tick if it doesn't); email; deployment, data option and plan; and
they must accept the Terms & Privacy Policy. The About → Contact us form asks for first name, last name, company (optional), email, subject and message (no
phone/hours are published). Each submission (1) is recorded as a lead in the TechieCRM internal workspace
a Company record (matched by name, source "Website contact form", category "Lead") with a Contact under it
(matched by email), or a single Individual record when no company is given, and a Note "Contact request:
Two administration menus (cloud CRM)
- Workspace Admin: what a customer's own administrators (and TechieCRM staff while inside a workspace) manage for THEIR workspace/child database: Users, Security Groups, Teams, Preferences, UDF
- UDF Setup (Workspace Admin → UDF Setup) shows nine entity tabs (Company, Individual, Contact, Sales, Service, Marketing, Users, Projects, Inventory) with field types Text, Number, Date, Dropdown, Yes/No, Multi-line Text, Formula and Folder. Preview: this page is not yet connected to the live field definitions your records use; fields defined here don't appear on records yet. Manage user-defined fields on the desktop (Set Up UDF) for now. Setup, Email Identity, Email Templates, SMS Number, Plan & Billing, Your Licenses, Messenger Admin, Audit Log. Everything here is scoped to that workspace; one customer never sees another's. Messenger Admin lists your workspace's active users with their message counts; switch Messenger on or off for one person or for everyone, and open a person's message log. Audit Log lists the administrative actions taken by your workspace's users (search by user, target or details; filter by action). CSV beside Clear downloads every entry the current search and filter match, not only the page on screen, as a spreadsheet file you can review offline; the download itself is recorded in the log as Exported to CSV. Actions taken by a TechieCRM engineer working inside your workspace are not listed there, and a Messenger message between your workspace and another is not shown in either workspace's log. Users are never deleted, only disabled, so a disabled user's actions stay listed; disabling and enabling a user appear as User Disabled and User Enabled (see A3, Disabling a user on the web portal). Plan & Billing (workspace administrators only) shows your plan, your users against your seats and your billing status, and is where you choose a plan. Plans are priced per user per month on an annual plan and billed for the full year in advance: each plan card shows both figures, for example $40 per user per month, billed annually and $480 per user per year. Once you subscribe, the page shows your seats and the price per seat per year, the date you are paid through (the end of the period you have paid for) and the date the subscription renews automatically. Your workspace administrators get an email 30 days and 7 days before each renewal. If a renewal payment does not go through, the page says so; update your card from Open billing portal, which is also where you download invoices or cancel. Cancelling stops the next renewal, and you keep full access until the end of the period you paid for. Discounts are available when you pay for 2 or 3 years up front; contact TechieCRM. Your Licenses is a read-only list of your workspace's licenses. It shows your plan, your subscription status and renewal date, and how many active users you have against the seats you pay for. For each license it shows:
- the license key, with a Copy button that copies the whole key. Paste it into your local portal's Licence page, or the desktop app's License Activation window;
- where the license comes from: Workspace license (the one issued with your workspace),
Issued to
(a license issued to one of your users), or Used by a device in this workspace; - the tier (Trial, Alpha, Beta or Full) and the status (Active, Expired, Inactive or Revoked);
- seats used out of seats allowed. The page labels how "used" is counted: by seat records when seats have been assigned to named people, otherwise by active users;
- the expiry date. A license bought through Plan & Billing runs to the end of the period you have paid for and moves forward by itself each time a renewal is paid; a renewal that has not been paid never extends it. If a renewal payment fails, the license keeps working for 7 days past the paid-through date while the payment is retried. Perpetual means the license has no end date;
- the registered devices counted by type (computers, phones, tablets); there is no device limit. Each device row shows its type and, for a phone, whether it is registered to a person.
Click a license to see its details and its devices: name, type, who is signed in, version, when it
was last seen, and whether it is online, revoked or waiting for a remote wipe. Only your own
workspace's licenses and devices are listed. To change seats or your plan, use Plan & Billing.
Preferences is tabbed, one tab per area, and each module's ⚙ Settings
button opens its own tab directly (Service opens Service; To-Do opens Calendar;
Marketing opens the email-marketing connectors). Modules with no settings of
their own open the Preferences page itself. The ⚙ appears only for workspace
administrators, because that is who the page admits.
- TechieCRM Admin: the operator console for TechieCRM site administrators only (never shown to
customers): Registrations, Tenants, All Users, Cloud Licenses, App Releases, SMS Numbers, Abuse
Protection, Billing (invoices, cost breakdown, terms), Messenger Admin, Database, Audit Log. Here Messenger
Admin and Audit Log cover every workspace. Each Cloud Licenses row has a Copy button that
copies the full key (the list shows it shortened), so support can send a client their key. On
Abuse Protection, the Active blocks & locks, Recent events and Recently released panels each have
a CSV button; the events file holds every stored event, not only the last 100 on screen.
Every CSV download is recorded in the Audit Log.
- Registrations (October 2026) has a Source filter: Website for the sign-up form,
Installer for a prospect who registered from the TechieCRM installer. An installer
registration shows an Installer badge with the platform and install type it came from, and
a waiting count: that person's installer has stopped and they are waiting for the approval
email. Provision & Invite works the same for both; the invitation sent for an installer
registration adds the sentence to run the installer again with "I have a registered email".
- Connected Clients (root administrators) gains Computers registered to a workspace: every
computer the installer bound to a workspace, with how it was proved (a licence key, shown by its
last characters, or an email), its install type and versions, when it was bound and last seen,
and Release from workspace for a computer that cannot run the uninstall with Reset settings
(a dead disk, a changed machine fingerprint, an offline uninstall). Releasing is recorded in the
Audit Log; the computer keeps its data and nobody is signed out.
- On a customer's own server (local portal) the TechieCRM Admin console is not installed. Workspace
Admin is, including Messenger Admin and Audit Log.
- Your Licenses shows the server's site license, read-only: key (with a Copy button), licensee, status, expiry,
licensed products, and the active users of your workspace against the users allowed.
- The TechieCRM desktop app and the local portal on one computer share one license: the portal
runs under the account that installed it and reads the same licence file as the desktop (see
A1. Running the local portal on the same computer).
The page shows the site-licence record as the portal sees it; the desktop app's license
details show the same licence from its side.
- The editable site-license page (/admin-portal/license/) is available to TechieCRM staff sign-ins
only.
- The platform database page is not available on local.
Deleting a workspace (TechieCRM Admin → Tenants)
A workspace is only ever deleted by a person, in five steps (3a and 3b being the backup and the removal of its cloud database). Nothing is deleted automatically, and no CRM data is removed until a backup of it is confirmed on the office's offline backup drive. Open Actions ▸ Delete workspace… on the workspace's row. The page shows the workspace's short name (the line under its name in the list), its status, how many people use it, how much CRM data it holds, its cloud licence and what else would be removed. Each step says what happened, or why it is not open yet.
- Suspend. Its people can no longer sign in. Reactivate on the Tenants list undoes it, and also takes the workspace off the deletion review list.
- Mark for deletion review. Any TechieCRM administrator can do this, and must say why. The workspace then appears in the Deletion review box at the top of the Tenants page with who marked it and when. Show only these in the table filters the list. Take off the review list cancels it.
- Back up (3a) (root administrators). Takes a full copy of the workspace's cloud database, the desktop cloud backups made with its licence, and its account details (users, subscription, invoices, devices and settings; passwords, tokens and keys are left out). Nothing is removed by this step. The copy is encrypted and checked in the background: the page shows Queued, Building, then Verified, waiting for the offline copy with its size and record counts, or Failed with the reason, and you are emailed either way. Discard backup throws away a backup that has not reached the backup drive yet. When it shows Verified, run the pull job on the office Mac (see "The pull job" below). It copies the backup to the backup drive, checks it there and reports back. The page then shows Offline copy confirmed with where it is on the backup drive, and the cloud deletes its own temporary copy, so nothing of the backup stays online.
- Drop database (3b) (root administrators). Opens only once the backup's offline copy is confirmed. Type the workspace's short name to confirm. This removes the workspace's whole cloud database and its desktop cloud backups; the copy on the backup drive is then the only one. It refuses, and removes nothing, if anything changed after the backup (click Take a new backup and run the pull job again), if signup prospect copies are present (these are handled on the command line), or if the database is shared with another workspace or is TechieCRM's own. The audit log records who did it before anything is removed.
- Delete workspace (4) (root administrators). Only open when the workspace holds no CRM data (after 3b). Type the short name to confirm. This removes the workspace with its subscription, invoices and registered devices, and revokes its cloud licence (Cloud Licenses ▸ Reactivate undoes that). Its users are kept, without a workspace; reassign or disable them on All Users.
Only the cloud copy is affected. Nothing on a client's own computers or local server is touched.
Workspace Archives (TechieCRM Admin ▸ Workspace Archives). Every backup, its state, and where its offline copy is on the backup drive. Root administrators also manage pull keys here. The pull job on the office Mac uses a pull key to download backups and confirm them; it cannot open a page or remove anything. Create pull key shows the key once only: save it on the Mac straight away. Revoke stops a lost key, and a key also stops working if its owner is no longer a root administrator.
The pull job (office Mac). Once: create a pull key, then in Terminal run
mkdir -p ~/.techiecrm && chmod 700 ~/.techiecrm, copy the key, and run
pbpaste > ~/.techiecrm/archive_pull_key && chmod 600 ~/.techiecrm/archive_pull_key. The backups go
to the volume TechieCRM Archives on the office's external backup drive (a volume of its own beside
the Time Machine backups, and left out of Time Machine), in the folder TechieCRM_Workspace_Archives;
keep the drive plugged in when you run the job. (To use a network share instead, mount it in Finder with
Go ▸ Connect to Server, then add --dest followed by the folder on that share.) Each time a
backup shows Verified, run the pull job in Terminal (from the TechieCRM_live folder:
git fetch -q && git show origin/master:bin/pull_workspace_archives.py | python3 -). It lists each backup it
copies and ends each line with "confirmed". It stops with a message if the drive is not plugged in or the
key file can be read by other users. Running it again is always safe: it never overwrites a
different file and never deletes anything on the backup drive.
If you type the wrong short name, the message shows what you typed and the name it expected.
Workspace history (TechieCRM Admin ▸ Workspace History). Every workspace has a timeline that is kept after the workspace is deleted. It records each step on this page (suspend, reactivate, marked for and taken off the deletion review list, each backup step (queued, built, verified or failed, offline copy confirmed, online copy removed), the database drop and the desktop cloud backups it removed, the delete and the licence it revoked), every billing email about the workspace (payment failed, past-due reminders, subscription ended) with who it went to and whether it was sent or why not, and notes added by staff. Each entry names the person who did it, or "system" for automatic emails. Search by any email address ever used in the workspace, its short name or company name, or the start of its licence key. Use Add a note to record a phone call or anything else the next person should know; notes cannot be changed or removed. The timeline is for TechieCRM staff only and never appears on a customer's Audit Log. The Workspace history link at the top of a workspace's Delete workspace page opens its timeline. If a former client gets in touch, look them up here first.
Abuse protection (TechieCRM Admin → Abuse Protection)
Public surfaces are rate-limited: registration max 2 per IP per 24 h (a 3rd is refused and the IP is
held for review (a second company from one network usually means the client is stuck, or abuse));
sign-in 5 failed attempts per account in 15 min locks the account for review (20 per IP blocks the IP);
Contact us max 5 per email per 24 h (the 6th gets a dialog: "we have your messages, we'll call you");
more than 10 registration+contact submissions from one IP in an hour blocks that IP; more than 30 across ALL
IPs in 10 minutes pauses registration and the contact form (fields greyed out, banner) as a possible DoS.
Every incident raises a technical case in the internal workspace's Service module (client "TechieCRM
Website", origin "Abuse protection"). The Abuse Protection page shows the kill switches (Pause/Resume per
surface), active blocks/locks with Release, a manual "Block an IP", the last 100 events and the thresholds
(env ABUSE_*).
Billing terms: discounts for 2 and 3 years (TechieCRM Admin → Billing: Terms)
Root administrators only. Every plan is priced per user per month and billed one year up front. Customers may also pay for 2 or 3 years up front at a discount, set on this page (default: 5% off 2 years, 10% off 3 years).
- Discounts. Enter the percent off for 2 and 3 years (0 to 50, up to 2 decimals) and a note saying why, then Save discounts. Changing a discount switches that term off for customers until its prices are published again, so nobody is shown one price and charged another.
- Publish prices. Creates the 2 and 3 year prices for every plan sold online from the discounts above. A plan's price for a term is its yearly price times the years, less the discount; each price carries the same number in CAD and USD. Pressing it again creates nothing new. After a discount change it creates new prices, and customers who already bought a term keep the price they paid until their renewal.
- Terms offered to customers. Each term shows whether it is offered and whether its prices match. Offer to customers works only when every plan sold online has a matching price; otherwise the page lists what is missing. Switch off always works and does not affect anyone who already bought the term.
- Prices. One row per plan and term: the discount, the price per user for the whole term, the per-month equivalent, the price on file and whether it matches. A 1-year price without a USD amount is flagged as a note.
Every publish and every change is recorded in the Audit Log. This page is not part of the local portal.
Cloud Mail add-on (TechieCRM Admin → Billing: Cloud Mail)
Cloud Mail is a paid add-on, priced per person per month, that lets people check for new mail and send email from the TechieCRM cloud. Sending from the cloud is still being built: today the add-on can be switched on and billed, and computers and phones are told who holds a seat, but the cloud does not check or send mail yet.
What is billed and what is free:
- Billed: checking for new mail and sending, from the cloud.
- Free, for everyone: reading mail that is already in the cloud.
- A shared mailbox counts once, against its owner's seat. Someone working in another person's shared mailbox needs no seat of their own.
- Never free. Demo and dogfood workspaces pay like any other, so this page has no free or exempt switch. A billing-exempt workspace with Cloud Mail on still gets a Cloud Mail invoice.
- Cloud mail counts toward the plan's database size, like the rest of the workspace's data (Plans and read-only modules, below).
The price. There is no built-in price. Until TechieCRM sets CLOUD_MAIL_PRICE_PER_SEAT (the
monthly price per person) the add-on cannot be switched on, nothing is invoiced, the pricing page
shows "Price to be announced", and this page says so at the top. A workspace billed online also
needs STRIPE_PRICE_CLOUD_MAIL, the online price on the same yearly cycle as the plans.
Using the page (TechieCRM administrators only; a customer's own administrator cannot open it):
- Find the workspace, choose On (paid) and enter the seats bought, then Save. For a workspace billed online, Cloud Mail is added to its subscription first, with quantity = seats; if that fails, nothing changes and the page shows why. Off removes it from the subscription.
- Press People to list the workspace's people. Give a seat hands one of the seats to a person (never more people than seats); Take seat back frees it. Seats cannot be lowered below the number of people holding one.
Every change is recorded in the Audit Log. Invoices: a workspace invoiced by TechieCRM gets a line "Cloud Mail, 3 user(s) (Oct 2026)" with quantity = seats; a workspace whose plan is not invoiced (billing-exempt, free programme, trial, quoted) gets a Cloud Mail invoice on its own. This page is not part of the local portal.
What people see without it (the sentences come from the cloud on every check-in, so every app shows the same words):
| Situation | What is shown |
|---|---|
| The workspace has no Cloud Mail | "Sending from the cloud needs the Cloud Mail add-on. Your computers still check and send as usual." |
| Switched on, but no price is set yet | "Cloud Mail is not available to buy yet. Your computers still check and send as usual." |
| The workspace has it, this person has no seat | "Cloud Mail is not switched on for you. Ask your administrator. Your computers still check and send as usual." |
| The person has a seat, the mail account is not turned on for the cloud | "Turn on cloud sending for this account from Email settings on one of your computers." |
| The account is paused | "Cloud sending is paused for this account. Open Email settings on one of your computers to see why and turn it back on." |
| The workspace is read-only (no active licence) | Sending is refused with the read-only message; checking for new mail is still allowed |
Preparing a source-CRM database (native modules)
TechieCRM's own modules keep their data in TCRM_ tables inside the client's source SQL database
during alpha/beta (they move to MongoDB at go-live).
You do not run these by hand. The first time you sign in to a database, TechieCRM checks which
of its support tables are missing and creates them for you, then tells you what it set up. If your
Login ID cannot create tables it says so and asks you to sign in with the source CRM's MASTER ID
(or an ID granted SQL admin / db_owner on that database); that is the only action needed, and only
once per database. The scripts are idempotent, so nothing happens on later sign-ins.
Presence (October 2026). The list of what was set up may include Presence: two TechieCRM tables that will record which computers have someone signed in, active or idle, so an office without a cloud connection can see who is in (the in / out board). They never hold the manual In / Out you set in the source CRM's own peg board; TechieCRM reads that from the source CRM's own fields and does not copy it. Nothing shows this information yet.
Every sign-in also finishes what a newer TechieCRM version adds (October 2026). When a new
version adds a column or an index to one of TechieCRM's own tables that already exist, it is added
the next time someone signs in with the MASTER ID or an ID with db_owner, with no message: there
is nothing for you to do. With an ID that cannot change tables, it is left for the next such
sign-in and noted in TechieCRM's log; nothing is shown and nothing stops you working.
The web users get access to TechieCRM's tables at sign-in too. If the database has the source
CRM's web-user role (CRMGroup), every sign-in gives that role permission to read, add and change
rows in each TechieCRM table where it is missing, so web features that save to these tables work.
It never touches the source CRM's own tables. It leaves a table alone, and notes it in the log, when
someone has deliberately denied the role a permission on it. It does nothing, quietly, when the
signed-in ID is not allowed to see or give permissions. You no longer need to run the
grant_tcrm_to_crmgroup script by hand. Tools ▸ Database ▸ Database repairs ▸ Set up missing
TechieCRM tables does the same on demand and shows what it found.
A database TechieCRM was removed from is left alone. If an administrator removed TechieCRM from a database (Tools ▸ Database ▸ Repair Database ▸ Remove TechieCRM from this database…, see A12 Database tools), the sign-in setup creates none of its tables there until someone chooses Restore TechieCRM to this database… in the same window (A12 lists the few parts that still create their own table in this release).
The local portal does the same by itself. A local portal connected to the office database prepares it in exactly this way every time it starts, so you can connect either the portal or the desktop first. See A13 Local portal.
Installed automatically (docs/db/…) |
Creates |
|---|---|
column_setup/01_schema.sql |
Saved column layouts per user |
search/01_schema.sql |
TCRM_SavedSearch: TechieCRM Search Catalog (saved Search All Fields criteria) |
ap_ar/01_schema.sql, then ap_ar/02_financials_module.sql |
Bills / invoices / payments / allocations, then invoice and bill line items |
entrepreneur_dashboard/01_schema.sql |
Entrepreneur Dashboard company financials (bank / credit line / cash target / burn rate) |
inventory/01_schema.sql |
Inventory types / fields / items / movements / batches |
projects/01_schema.sql, then projects/02_drop_old_projects_view.sql |
Projects, phases, milestones, resources and the projects list view TCRM_Projects_View; then removes Projects_View, the list view's old name from earlier TechieCRM versions, if it is still there. Only a view of that name that reads TechieCRM's own project tables is removed; nothing else is touched. TechieCRM also checks for the old view at every start and removes it when you sign in with the MASTER ID or another ID with SQL admin rights |
work_orders/01_schema.sql |
Work orders, lines, assignment ledger |
partners/01_schema.sql |
Partner flag/attributes |
maintenance_plans/01_schema.sql, then maintenance_plans/02_agreements.sql |
Plans, schedules, periods, generated log, activity log, then agreement templates (15 industry templates), agreement type, term and the renewal chain |
compliance_sla/01_schema.sql |
Compliance requirements/records, SLA policies/trackers/events |
hr_payroll/01_schema.sql |
HR: departments/positions/teams/employees, shifts/roster/time days/punches/rules, leave types/balances/requests, pay cycles/assignments/holidays/pay periods |
identity/01_schema.sql |
TCRM_Workspace (this database's permanent workspace ID, see below) and TCRM_IdentityLink, which records which TechieCRM cloud account is which source-CRM user |
activity/01_schema.sql |
TCRM_Activity_Log: the activity log (who did what, when, from which computer), together with the safeguard that stops anyone changing or removing an entry (see below) |
Where a module lists two scripts, the second one extends the first and always runs after it. No source-CRM tables are created, altered or written to by any of the above.
The activity log table
TechieCRM keeps a record of user activity in TCRM_Activity_Log, in the same database, so every
computer in the office writes to and reads from one shared log. Entries can only be added: the
table is created together with a safeguard (a database trigger) that refuses any attempt to change
or remove an entry, and TechieCRM itself has no way to edit or delete one. Entries are kept
indefinitely.
- Creating it. Like the other support tables, it is created automatically the first time
someone signs in with the MASTER ID (or an ID with SQL admin /
db_ownerrights on that database). If the safeguard is ever removed from the database, TechieCRM puts it back the next time someone with those rights works in that database. - When the database cannot be reached. Ordinary work carries on. The entry is held on that computer, in the user's own TechieCRM data folder, and written to the log as soon as the database can be reached again; the log shows it was written late. Changes to users, rights, passwords and licences are different: they are not made until they can be recorded, and the person is told so.
- Honest limit. Someone with full administrative rights on SQL Server itself can always switch a database safeguard off. The log records a fingerprint of every entry so that a later version of TechieCRM can show whether any entry was altered.
Which actions are recorded, and where administrators and users can read the log, is described as each part is switched on.
The workspace ID: how TechieCRM recognises a database again
The first time you sign in to a source-CRM database, TechieCRM writes one row into
TCRM_Workspace: a permanent identifier for that set of records. It is written once and never
changed, and because it lives inside the database it travels with it: rename the database, restore
it under a different name, or move it to another SQL Server and TechieCRM still recognises it as the
same workspace. Anything TechieCRM remembers per database is tied to that ID, so a rename or a
restore does not make it forget.
That matters because the server and database names are not reliable for this. They change on a rename, a restore or a server move, and each change would otherwise look like a brand-new database. TechieCRM keeps the names too, but only as the label you see on screen, for example IslandCRM2017 on PHUKET\SQLSERVER.
Two things worth knowing:
- A restored copy carries the same workspace ID as the original. That is intended: a restored database holds the same records. But it also means that if you restore a copy under a different name to work on separately, TechieCRM regards it as the same workspace as the original, not as a new one.
- If your Login ID cannot create tables, TechieCRM carries on. It does not attempt the write,
and does not fill your SQL error log with refusals. It falls back to identifying the database by
its server and database name, which works but does not survive a rename or restore; after one
of those, anything tied to the workspace is asked again. To avoid that, make the first connection
to each database with the source CRM's MASTER ID (or an ID with
db_owner), exactly as for the tables above. It only has to happen once.
In MongoDB-only mode there is no SQL database to write to, so no workspace ID is created and no SQL is attempted at all; the local database name is used instead.
The office-wide settings table
TCRM_Session_Settings (made with the Sessions tables when a database is prepared) holds
settings that are the same for every computer in the office, one row each. Two use it today: the
one-place sign-in switch (Chapter 30) and, since October 2026, Let TechieCRM IDs sign in to SQL
Server with a linked CRM login (On when the row is absent; changed by an administrator on the
Configuration window's Linked CRM logins page, A14, or on the local
portal's Config database). Every CRM login reads it when someone signs in with a TechieCRM ID, so
the setup grants the source CRM's CRMGroup role SELECT, INSERT and UPDATE on it, as for
TechieCRM's other tables. Nothing else in the database is changed by the setting.
One optional step that is NOT automatic: Entrepreneur Dashboard calibration fields
The Entrepreneur Dashboard's per-user calibration settings (income target, stretch goal, planned-work minimum and redline, dashboard period) are stored as user-defined fields inside the source CRM's own field definitions. Because that means writing into the source CRM's configuration (not just adding TechieCRM's own tables), TechieCRM never does it silently. An administrator runs it once, from the folder TechieCRM is installed in:
python -m src.entrepreneur_dashboard_setup --verify # show what is already there, change nothing
python -m src.entrepreneur_dashboard_setup --prep # create the fields (safe to re-run)
Sign in for this with the source CRM's MASTER ID or an ID with SQL admin rights. The fields are
created in the reserved range 61000–61019 and appear in a folder named Entrepreneur Dashboard on
each user's record, where you type each person's targets. Connection details come from the
DB_SERVER / DB_NAME / DB_USER / DB_PASSWORD values below, or from
--server / --database / --user / --password on the command line. There is also
--teardown --confirm, which removes those fields again; it is meant for test databases.
Until this step is run, the dashboard's income and planned-work gauges simply show their "needs setup" state; nothing else in TechieCRM is affected.
Local MongoDB mirror
Sync, backups and Conversations keep a copy of your data in a local MongoDB database named
techiecrm (change the name with TCRM_LOCAL_DB). Which MongoDB server that is depends on how
TechieCRM was installed:
| Installed from | Local database server |
|---|---|
| The 0.8.0.4 (or later) installer, Windows for all users, macOS or Linux | TechieCRM's own, installed with it: 127.0.0.1:27617 (27627, 27637 or 27647 if that port was taken), password-protected, data in the folder you chose. Installing, the data folder, the admin password, moving the folder and the port are all in A1. Installation |
| Windows "just for me", or TechieCRM run from source | a MongoDB you run yourself, at mongodb://localhost:27017 |
Any, with the MONGO_URL environment setting |
the server MONGO_URL names (this always wins) |
If you already kept TechieCRM's data in your own MongoDB before 0.8.0.4, TechieCRM keeps using it and shows a one-time notice; nothing is copied or moved. Setup ▸ Settings ▸ Local Database shows which server is in use, its state, its data folder and its admin (see A1).
Without a running local database the app still works: sync, backups and Conversations simply report that the local database isn't running.
The local portal on the same computer uses this database too (a Windows all-users install of the desktop), and takes over the cloud sync: A1. Running the local portal on the same computer. Settings ▸ Local Database ▸ Sync says which program is syncing.
Configuration values (.env or environment)
| Key | Purpose |
|---|---|
CLOUD_API_URL |
API root, default https://api.techiecrm.com/api (the dedicated API host; the /api path is part of it). A developer setting: it is honoured only when TechieCRM runs from source, never in an installed copy, and while it is set the addresses below are not followed |
CLOUD_USER_EMAIL |
default portal sign-in email for notifications (also settable in the dialog) |
EMAIL_ENC_KEY |
shared key that encrypts users' email-account passwords (same on desktop and cloud) |
MONGO_URL, TCRM_LOCAL_DB |
local mirror. MONGO_URL overrides TechieCRM's own database: when it is set, TechieCRM uses the server it names instead (an operator or developer setting; leave it unset for a normal install). It is also what the Configuration window's Database page connects to when it lists MongoDB databases with Address empty (A14). Without it, an installed TechieCRM finds its own database through techiecrm-local-db.json (see A1). TCRM_LOCAL_DB changes the database name (default techiecrm) |
DB_SERVER, DB_NAME, DB_USER, DB_PASSWORD |
SQL connection used by the command-line setup tool above (python -m src.entrepreneur_dashboard_setup). These do not change how you sign in to TechieCRM itself; the application always asks for the server, database, Login ID and password in the Login window |
Where TechieCRM finds each cloud service
Each check-in tells TechieCRM where the cloud's services live: the API, sync, the AI assistant's link and Connect (remote support). TechieCRM follows those addresses, so when a service moves to a new address no new TechieCRM version is needed. It remembers the last addresses it was given, so the first sync after a restart already goes to the right place.
- Only secure (
https://) addresses on TechieCRM's own domain (techiecrm.comand its sub-addresses, not the baretechiecrm.com) are followed. Any other address is ignored, noted in the log, and the previous good address (or the built-in one) is used, so a wrong address can never lock TechieCRM out. - If the cloud stops naming an address, TechieCRM goes back to its built-in address for that service.
- Signing in, the check-in itself, licence activation, "Forgot password?" and the update check always use the built-in address: the check-in is how TechieCRM learns the others.
- Tools ▸ Cloud ▸ Cloud Connection shows the API address in use.
Feature gating and add-ons
The cloud's check-in returns the plan's features; the desktop dims icon-bar modules whose feature is
off and gates Text (SMS add-on), cloud sync and cloud backup. Plan scope and add-ons are set in the
Admin Portal (Cloud Licenses, SMS Numbers, Billing: Cloud Mail, tenant subscription). The check-in
also carries cloud_mail_addon, cloud_mail_enabled, cloud_mail_code and cloud_mail_message
(see Cloud Mail add-on, above). Development builds
(dev_mode=True in main.py) bypass gating.
Plans and read-only modules
Two plans include a core set of modules rather than all of them, and the two core sets are different:
| Plan | Modules included in full |
|---|---|
| Entrepreneur (1 user) | Clients (with Related and Interactions), Calendar, To-Do, Email |
| Team (up to 5 users) | Clients (with Related and Interactions), Sales, Dashboard, Email |
Business and Corporate include every module.
On the desktop and mobile apps, an Entrepreneur licence keeps read and delete access to the remaining modules: you can open those modules, read every record and delete records (useful when winding a business down or pruning history), but creating and editing there is available on higher plans. TechieCRM simply doesn't show the create/edit buttons in those modules on such a plan, and anything that would write explains itself with a short "Read-only on your plan" note instead.
⚠ On the web portal the same modules currently show an "Upgrade required"
page instead of read-only records: the page names your plan, lists the
modules it does include, and names the upgrade that unlocks the rest. Whether
the web portal should match the apps' read-and-delete behaviour is an open
decision (see .coding-team/followup_for_shannon.md #57); until it is made, the
apps are the surface for reading history on an Entrepreneur plan.
Where the button disappears, and where you get a note instead
The rule the desktop follows is: an affordance that only writes is hidden; an affordance that is also the only way to READ something stays, and refuses at the point of saving. Reading is never taken away, and neither is deleting.
Hidden on a read-and-delete module (the button is simply not there):
- New / Add buttons everywhere they exist (New Work Order, New employee, New leave request, Add Item, Add Partner, New Project, Add Document, Add Article, New Agreement, New message, New text…), and the equivalent items in the right-click menus.
- Duplicate (Marketing), Run payroll (HR), Evaluate SLAs + compliance now (Compliance & SLA), Schedule Project Plan (Sales, Service), Mark Complete (To-Do), Transform and Set Up Types (Inventory).
- Save, Save As, Add Indicator and the Dashboard Wizard (Dashboards), and the message box and Send button in Messages.
Kept, with a short "Read-only on your plan" note if you try to save:
- SLA Policies… and Compliance Requirements…, HR Setup… and Dashboard ▸ Properties; each of these dialogs is also the only place the list can be READ, and Properties is also where a dashboard is deleted.
- Live Mailbox: it is how you read the mail account, not only how you write.
- Booking an appointment by double-clicking an empty slot in the Calendar: there is no button to hide, so the note appears when you click the slot, before you fill anything in.
Column Setup, filters, sorting, search, Export and Print are never affected: they change what you see, not what is stored.
Upgrading your plan in the web portal lifts the limit immediately, at the next check-in for the apps, and on the next page load in the portal.