Dashboard
Prepare bCommerce import files or API payloads without database connectivity.
Load / Refresh Schema Definition
Loads the included tables/fields export and foreign-key export into Smart Import PostgreSQL.
Create Migration Project
Migration Projects
Everything belonging to a project - files, mappings, prepared rows, notes - is removed with it, and cannot be undone.
| Project | Status | Files | Prepared rows | Created |
|---|
Finalized Migrations
Every customer account, one list. Open one to work inside their account, or export and run it from here.
| Customer | Migration | Finalized | Files | Prepared Rows | Notes |
|---|
Invite Someone
They get an email, choose their own password, and sign in with the same Tenant ID as you - —. The role decides what they can do; pick one to see exactly what it allows.
Invitations
An invitation lasts seven days and can be used once. Resending issues a new link and stops the old one working.
| Role | Status | Emailed | Expires |
|---|
Add a user directly, without an invitation
For somebody who has no working email address yet. You choose the password and have to convey it to them yourself, which is the reason invitations exist - note it down before you leave this page, because it cannot be read back.
Users on This Account
| Username | Name | Role | Status | Last Sign In |
|---|
What Each Role Can Do
| Role | What it is for | Permissions |
|---|
To see the application as one of these roles, create a user with that role, sign out, and sign back in as them. The menu and the buttons change to match.
Change Your Password
Your current password is required even though you are already signed in - a machine somebody walked up to should not be enough to take the account. Every other session is signed out when you change it.
Two-Factor Authentication
A code from an authenticator app on your phone, on top of your password. Without it, anybody who learns your password is you.
—
Scan this with Google Authenticator, 1Password, Authy or similar - or type the key in by hand if the machine has no camera pointed at it.
Setup key:
Recovery codes
Keep these somewhere that is not the phone. Each one signs you in once if the authenticator is unavailable, and this is the only time they are shown.
Where You Are Signed In
Signing out here ends the session on the server, not just in this browser - a token copied from a shared machine stops working.
| Address | Browser | Signed in | Expires |
|---|
What Has Happened On This Account
Signing in, files uploaded, records prepared, exports downloaded, imports run, users added and roles changed. Rows have been written since the first version; this is the first screen that reads them.
| When | Who | Action | What | Address | Detail |
|---|
Sign-In Attempts
Including the ones that failed. A run of "no such user" from a single address is somebody trying usernames; a run of "bad password" against one name is somebody trying passwords.
| When | Address | Tried | Outcome |
|---|
SaaS Administration
Create tenants and review account plans.
| Tenant ID | Company | Plan | Status |
|---|
Autonomous AI Migration
Detect entities, propose mappings, calculate the sequence, simulate the migration, and surface only decisions that need review.
AI Decisions
| Type | Source | Target | Confidence | Reason | Status |
|---|
Start or Resume a Migration
Upload files or connect read-only to the system the customer is leaving. Connections are for periodic migration/cutover runs, not continuous synchronization.
Where is your data coming from?
Source Connection
Select What to Migrate
Migration Blueprint
Understand readiness, remaining questions, template coverage and the complete migration recipe.
Migration Questions
Technical errors are grouped into business questions. Answer once and store the answer as migration knowledge.
Migration Recipe
Saving keeps a numbered version you can come back to. Locking freezes it - the recipe stops changing, so the run you approve is the run that happens.
Migration Intelligence Library
Global connector templates are separate from tenant-specific and migration-specific knowledge.
| Connector | Template | Maturity | Current Version |
|---|
Connector Coverage Matrix
Support Escalations
| Project | Issue | Type | Status | Created |
|---|
Production Operations
Queue long-running work in background workers so users can leave and return later.
Notifications
Schema Registry
| Table | Fields | FK Out | FK In | Self-Service |
|---|
Admin Exposure
All schema tables remain known internally. Admin decides which tables users can select. Group is only the heading a table appears under on the customer's target-table list — it changes nothing about the import. The set is fixed — Orders, Financials, Purchasing, Warehouse, PIM, Admin — so one thing does not end up under two spellings. Leave it blank and the table shows under “Other”. A name marked retired was set before the set was fixed; pick a current one to replace it.
| Table | Group | Enabled | Self-Service | Admin Only | Method |
|---|
Field Values
The values a field will accept, offered to the customer as a picker on
the mapping screen. These are suggestions, not rules — a customer
who imports their own gl_account_type rows is not blocked by a list built
from your seed data. Loaded in bulk by scripts/load_seed_values.py; edit one
field here. Over 200 values it becomes a search box instead of a
dropdown.
Columns Filled In Automatically
Some tables need a column no customer will ever have in a spreadsheet
— product_assoc needs a from_date, which is part of the
record's identity in bCommerce rather than anything exported from an old system. Set a
value here and every row of that table carries it, whether or not the customer mapped
anything to it. A column the customer did map is never overwritten,
blank included. Two values are worked out when the import is prepared:
{now} for the moment it ran, and {uuid} for a fresh id per
row. Anything else is used exactly as typed. Clear the box to stop filling a column.
| Column | Type | Filled with |
|---|
Self-Service Import Wizard
Files in this project
Each file is mapped on its own. Open one to edit its mapping; they all export together.
| File | Rows | Mapped fields | Prepared rows |
|---|
Reusable Mapping Profiles
Once a source is mapped successfully, save the mapping and recognize future files automatically.
| Name | Signature | Uses |
|---|
Preflight Validation
Catch data errors before any API call. Records with errors stay blocked; clean records remain ready.
| Table | Row | Field | Severity | Error | Value | Action |
|---|
Bulk Preflight Corrections
Download the errors CSV, fill the correctedValue column, then upload it here.
Admin Validation Rules
Add business rules on top of the reference schema.
| Table | Field | Rule | Severity | Config | Action |
|---|
Sequence Rules
Foreign keys come from the offline reference structure. Disable sequence enforcement only when a relationship is system-resolved, external, lookup-only, or otherwise not required before create.
| Child | Column | Parent | Parent Column | Enforce Sequence | Resolution |
|---|
Admin API Endpoint Registry
Every reference table can have its own API configuration. This controls live import only; the reference schema remains offline.
| Table | Self-Service | Configured | Endpoint | Action |
|---|
Configured API Endpoints
| Table | Enabled | Method | Create Endpoint | Mode | Batch | Lookup | Update |
|---|
Sequential API Import
Uses the exact same canonical dependency sequence as exported files. Tables execute one after another; records/batches inside each table also execute sequentially.
Failed Uploads / Correction Queue
Successful records stay imported. Only failed or unresolved records appear here for correction and retry.
| Table | Source Row | Type | Error | Status | Retries | Action |
|---|
Bulk Failed-Record Corrections
Download the failed CSV, fill correctedPayload, and re-upload it.
Resolved bCommerce IDs
Shows business/source IDs mapped to target IDs returned by the bCommerce API. These are used automatically in downstream dependent records.
| Table | Source Field | Source Value | bCommerce Target ID | Source |
|---|
Change-Only Import Detection
Compare prepared records with the last successful snapshot and avoid re-uploading unchanged data.
| Table | Business Key | Change Type |
|---|
Reconciliation
Compare source, prepared, imported, failed, and unresolved records.
Post-Import API Verification
Verify successful API imports through configured lookup endpoints. No database connection is used.
| Table | Target ID | Status | HTTP |
|---|
Monthly Trial Balance
Step 16 — Migration Complete
This is the final step after verification and reconciliation have passed.
Before calling the migration complete
Confirm that the production import has finished, failed records have been resolved or intentionally excluded, API verification is complete, and reconciliation passes.
For an Initial or Refresh migration, save the locked Migration Recipe for the next cutover run. For a Final migration, retain the migration report and audit history.