MDMS — Modern Dealer Management System

Features

The platform every other module stands on

Multi-tenant isolation enforced by the database, 19 granular roles, per-tenant module entitlements, an installable offline field app and an audit trail written by the database itself.

MDMS — Platform & Security
MDMS admin team-members table listing each user with their role — admin, salesperson, service advisor, finance manager, technician, parts manager, warehouse user, rental manager, warranty clerk — alongside status and join date, with an invite action.

Overview

Most dealer systems draw their boundaries in application code. One missed check in a query and a report reads the wrong branch, a technician sees the debtors ledger, or — in the worst case — one business sees another business's records. The same softness shows up everywhere else: an admin who can quietly switch on a module nobody paid for, a change to an invoice with nobody's name against it, and a field app that stops working the moment the van drops out of signal in the back paddock.

MDMS puts those boundaries in the database instead. Tenant data sits behind row-level security policies that scope every read and every write, so isolation holds even when the application asks the wrong question. Access is described by 19 roles — dealer principal to parts interpreter, field technician to payroll officer — and each user can hold more than one. Every surface is wrapped in a role guard, and the same role check is re-run inside the server-side function that actually does the work. Module entitlements are recorded per tenant, and paid modules cannot be self-granted. Money, stock and access changes write an audit trail from database triggers rather than from hopeful application code. And the field app is a real progressive web app: technicians install it, keep working through a blackspot, and their edits and photos replay once the signal returns.

What's included

  • Row-level security — tenant isolation enforced by Postgres, not by app code
  • 19 granular roles, guarded on every surface and re-checked inside every server-side function
  • Per-tenant module entitlements — premium surfaces refuse tenants without them, and paid modules can't be self-granted
  • Installable offline field app — cached jobs, queued edits and photos that replay on reconnect
  • Audit trail written by database triggers on invoices, payments, work orders, parts, price book, roles and branches — filterable and exportable to CSV
  • Admin console — branches, users and invites, document number sequences, branding, plus CSV import for 16 datasets and export for 37

How it works

  1. Set the business up once through an eight-step wizard — company details, modules, branches, departments, users, data import, integrations and go-live — and load a set of sample records to explore with, then clear them out before you go live.
  2. Give each person their roles. Navigation, surfaces and actions shape themselves to those roles, and the database enforces the same boundaries again on every query and every RPC, so the rules hold no matter how the request arrives.
  3. Work the business: technicians run the installed field app through blackspots and sync on reconnect, every material change lands in the audit trail, and admins can export any of 37 datasets to CSV whenever they want their data.

Inside Platform & Security

Real screens from MDMS — captured from the live application, not mock-ups.

MDMS admin team-members table listing each user with their role — admin, salesperson, service advisor, finance manager, technician, parts manager, warehouse user, rental manager, warranty clerk — alongside status and join date, with an invite action.

Every person in the business against the role they hold — service advisor, parts manager, warranty clerk, warehouse user. The role decides what they can open, and the database re-checks it on every query and every server-side call.

MDMS audit log listing database-written entries with the action, the entity affected, a JSON details payload and a timestamp, filterable by action and entity and exportable to CSV.

The audit trail is written by database triggers, not by application code, so an invoice, work order or role change cannot be altered without leaving a record. Filter by action or entity, and export the lot to CSV.

Works with

Explore all modules