Simple Smooth Safe
PROFESSIONAL SERVICES AUTOMATION · MICROSOFT DATAVERSE / POWER PLATFORM

Your firm already runs the platform.
Run your practice on it too.

PSA Hub is a full professional services suite — time, expense, projects, billing, WIP, resourcing, forecasting — built natively on Microsoft Dataverse. Your project and billing data lives in your tenant, secured by your Entra ID, administered by the team that already runs your Dynamics 365 environment. Not a separate SaaS with a sync job pointed at Microsoft.

// Native Dataverse tables, model-driven and Power Apps surfaces. No connector, no middleware, no second copy of your data.

Built for firms already on Microsoft

PSA Hub is deliberately not for everyone. It extends a Microsoft platform investment you have already made — that's where all of its advantages come from, so we'd rather you find out here than in a discovery call.

▶ PSA HUB IS FOR YOU IF
  • Your firm is standardised on Dynamics 365 or Power Platform — it's where your CRM, your security groups, and your admins already are
  • You have 15+ billable people whose time turns into invoices
  • You want project and billing data in your own tenant, under your own compliance and retention rules — not in a vendor's cloud
  • Your IT team would rather administer one more app on a platform they know than one more vendor relationship
▚ IT ISN'T IF
  • Your firm has no Dynamics 365 or Power Platform footprint — a self-serve PSA tool will genuinely cost you less, and we'll tell you the same on a call
  • You're comparing per-seat prices against standalone PSA tools in a spreadsheet — without the Microsoft platform underneath, PSA Hub loses that comparison, by design
  • You're planning to "maybe move to Dynamics later" — adopt the platform first, then come back
// This filter is the product working as intended: everything below assumes the Microsoft platform is already yours. How this compares to Dynamics 365 Project Operations →

What it replaces

A firm on Dynamics with a standalone PSA tool is really running three systems. PSA Hub removes all three at once.

Gone №1

The separate PSA system

The standalone tool with its own logins, its own admin console, its own renewal, and its own copy of your clients and projects.

Gone №2

The integration to Dynamics

The connector, middleware, or custom sync that ferries accounts, contacts and invoices between the PSA tool and Dataverse — and breaks on every API change at either end.

Gone №3

The reconciliation work

The month-end ritual of explaining why the PSA tool, the CRM and the ledger disagree. One system of record means there is nothing to reconcile.

Why the screens are purpose-built

Model-driven surfaces are excellent at what they're for: a table, a form, a view. A PSA suite is mostly the other thing — a week grid, a planboard, a utilisation matrix, an approval queue. In the legacy product each of those was a custom web resource bolted into the shell, and that is where the cost lived.

▚ THE LEGACY ESTATE
  • Timesheets, planboard, Gantt and approvals each a separate embedded app
  • Three separate vendored ExtJS trees behind them, none of them current
  • A full page load between the shell and every custom screen
  • Approval views scattered across three screens, each with its own filters
  • Commercial grid and scheduler components, licensed per developer
  • Client variations made by forking — a fix has to be applied N times, and usually isn't
▶ WHAT REPLACED IT
  • One application with client-side routing — no reload between screens
  • React 19 + TypeScript on the supported Power Apps code-app runtime
  • Approvals is one screen — PM, Admin and Claims, with a scope toggle
  • Open-source component stack: TanStack Table, react-router, Recharts
  • Typed Dataverse services generated per table — no hand-written fetch
  • One codebase for every client; variation is configuration, never a fork
// The ceiling was never model-driven itself — it was what a suite of non-form screens costs once each one is a bolted-on web resource. When a code app beats a form →

The screens

One screenshot per module, from the running application — the same build that ships inside the managed solution. The tenant behind them is a demo one: the firm, the people and every number are invented, so nothing here is a client's data. The software isn't invented, and on a scoping call we run these same screens against yours.

Timesheet Entry week grid: rows of project, project item and hour type against Monday to Sunday columns, with day totals and a week total.
Time · Timesheet entryThe week as a grid — project, item and hour type down the side, days across. Cells write straight through to psa_hours; approved rows lock. The same screen has a line view, copy-week, PIA days and post to time card.
Approvals screen showing PM, Admin and Claims tabs with a queue mixing hours and expense lines, inline hours and to-invoice fields, and rows marked on hold or reallocated.
Approvals · PM queueOne screen, not three. Hours and expense lines sit in the same queue with a scope toggle, bulk select and inline edit of hours, to-invoice and the internal note. Rows that can't be approved — on hold, rejected, reallocated — are shown and blocked rather than quietly dropped.
Project screen on the Budget tab: budget lines with quantity, cost, transfer and selling amounts, a margin column with two negative lines highlighted, and a total row showing margin and percentage.
Projects · Budget and marginSummary, Financial, Calculations, Items, Budget, Invoice Scheme and Revenue Recognition are tabs on one screen — not seven form loads. Budget lines carry cost, transfer and selling; margin is computed per line, negatives called out, rolled up to a project total.
Invoice detail screen: the invoice header fields above a line grid with quantity, price per unit, actual, written off, write-off note, carried forward and net invoiced columns, totalled at the foot.
Billing · Invoice detailInvoice lines with write-off reconciliation. Net invoiced is actual less write-off less carry-forward, totalled at the foot, and a write-off entered without a note is flagged rather than accepted.
Planboard: a fortnight of bookings as an employee by day board, weekend columns shaded and empty, tentative bookings drawn with a dashed outline.
Resourcing · PlanboardWho is booked on what, by day, per person and per project. Click a booking to edit or delete it, an empty cell to create one. Dashed bookings are tentative.
Utilisation sheet: employees down the side, eight week columns across, each cell a percentage of weekly capacity, amber from eighty per cent and red above one hundred.
Utilisation · Utilisation sheetBooked against contracted capacity, eight weeks out, amber from 80% and red over 100%. Capacity comes from psa_hoursperweek; the same matrix reads the other way round as availability in hours.
Forecast project totals: one row per project with estimated, forecast and actual figures grouped under selling, cost and hours, and a grand total row.
Forecasting · Project totalsEstimated, forecast and actual side by side for selling, cost and hours — per project and in total. The other tab is the editable pivot over psa_forecastitem, by period.
PSA dashboard: bar charts for projects by status, projects per account, projects per project manager and hours by hour type, above hours per day, hours by project and expenses by project.
Analysis · DashboardsThe model-driven dashboards, ported chart for chart: projects by status, per account and per manager, hours by type, and the rolling hours and expenses boards underneath.
// Real screens, demo data. Captured at 1920 px on the Power Apps code-app runtime — the screens are responsive, but a phone is for time and expense entry, not the planboard.

Modules

Working software, described by what the screens actually do — and there is a screenshot of each one above. The recorded walkthrough follows on the scoping call, against your own data rather than a demo tenant.

Core

€35 per user / month · run the practice
Time

Week grid and line views, copy-week, duplicate, PIA days, post to time card. Cells write straight through to psa_hours, and rows lock once approved. Approvals are one screen — PM, Admin and Claims with a scope toggle, bulk select, inline edit, blocked rows called out.

Expense

Line entry, claim creation, receipt upload and download, billable or not. Categories, projects and items resolve as you type rather than through a lookup dialog.

Projects

Summary, Financial, Calculations, Items, Budget, Invoice Scheme and Revenue Recognition as tabs on a single screen — not seven form loads. Calculated fields stay read-only; the plugins own them.

Billing

Draft invoices from approved time and expense — fixed-price installments or time & materials. Invoice list and detail with write-off reconciliation, AR/AP ageing, and invoice-scheme templates that validate installments to 100%.

WIP

Work in progress per project and financial period — WIP invoice and WIP proposal amounts carried in the revenue-recognition period history alongside spent and earned. You enter % complete per project item; the earned and WIP figures follow from it.

Profitability

Margin per project — selling less cost across budget lines, with a percentage and negative lines called out, rolled up to a project total.

Pro

€55 per user / month · everything in Core, plus the forward view
Resourcing

A planboard of who is booked on what, when — per person and per project, with a booking editor that creates, edits and deletes.

Utilisation

Utilisation and availability matrices comparing what's booked against psa_hoursperweek, plus a days mode over psa_piaday for the absence side of the same question.

Forecasting

Revenue forecasts as an editable pivot over psa_forecastitem with anchor dates and a project-totals tab — live projects and budgets, not a spreadsheet copy.

Analysis

Employee, Project, Admin and Invoice Control boards; a grouped performance report rolling project items up per project and to a grand total; and an hours pivot by project, employee or hour type.

// Reference data — 87 entities — sits behind one metadata-driven registry screen rather than 45 hand-built subareas. Adding a reference table is a config entry, not a sprint.

How it reaches your environment

PSA Hub ships as a managed solution — standard Dataverse ALM, nothing bespoke. Inside it are the tables, the security roles, the server-side plugins, and the app surfaces themselves, including a compiled React front end that the Power Apps platform hosts, authenticates and governs. You import one solution; your admins already know how.

psa-hub · build → solution → your environment
// what we run — the TypeScript source stays in our repo
 npm run build          Vite bundle  // React 19 + TypeScript
 power-apps push        bundle → the PSAHub solution, dev environment
 export managed         the managed .zip // this is the deliverable

// what you import — one solution, everything in it
 tables + option sets   psa_ schema, 87 registered entities
 security roles         privilege-trimmed, mirrored from the sitemap
 plugin assemblies      pricing, posting, approval rules // server-side
 the app surfaces       3 areas · 14 navigation groups

// at runtime, on the platform you already run
 Entra ID               platform sign-in  // no token plumbing of ours
 Dataverse Web API      typed services, one per table
 DLP + sharing          enforced by the platform, not by the bundle
 psa_ plugins           every rule that must not be bypassable
// Business logic deliberately stays in plugins. A front end you can read is not a place to enforce a rate table.

Pricing

Per user, per month, billed annually. This is the software line only — implementation is a separately scoped, fixed-price engagement, quoted before you commit to either.

Core
€35per user / month · €420 per user / year, billed annually
  • Time
  • Expense
  • Projects
  • Billing
  • WIP
  • Profitability
Pro
€55per user / month · €660 per user / year, billed annually
  • Everything in Core
  • Resourcing
  • Utilisation
  • Forecasting
  • Analysis
Per user / month€55
Per user / year€660
Software, per year€26,400
// Software only. Implementation is scoped separately and starts at €18,000 — see below. Minimum 15 users, which is why the slider starts there.
  • Minimum 15 users. Below that, the implementation can't earn its keep — see the fit section above.
  • Annual billing. A PSA rollout is an operating decision, not a monthly experiment, and the price is set accordingly.
  • Implementation is quoted separately, from €18,000. Scoped before contract — what drives it is below.
// Dataverse capacity and Power Platform licensing are between you and Microsoft — you already hold them; PSA Hub adds no platform fees on top.
// All prices are in euros and exclusive of VAT. EU business customers with a valid VIES-registered VAT number are reverse-charged; see Terms of Service §5.1 for the full treatment. Annual, billed yearly.

Implementation

A PSA rollout is a business-process change, not an app install. Every engagement is scoped up front and quoted as a fixed price — engagements start at €18,000, and the number is driven by four things we'll measure with you before quoting:

Headcount

Users to onboard and train, and the billable / support split — it sets configuration and training effort.

Accounting system

Which ledger you run and whether PSA Hub should feed it. Every accounting integration is custom-built and tested within the engagement — the single biggest scope driver.

Data migration volume

How many years of projects, time and rate history come across, and from what system — clean sources migrate cheap, spreadsheets don't.

Integration count

Every system beyond accounting that must send or receive PSA data — payroll, HR, BI — is scoped and priced per integration.

Why we won't publish a fixed implementation price: an underscoped PSA rollout fails at month-end, and month-end is the one deadline a professional services firm cannot move. Scoping first is how we make sure the number we quote is the number you pay.

PSA Hub, with DocGen included

Invoices, statements and engagement documents are part of running a practice — so PSA Hub carries our DocGen document engine with it. Take both together and Year 1 of DocGen is included, and the DocGen deployment fee is waived outright: the environment, Entra registration and Key Vault work it covers happens once, during the PSA Hub implementation, so we don't charge for it twice.

40 users on Pro, worked exampleStandaloneBundled
PSA Hub — 40 × €55 × 12€26,400€26,400
DocGen platform€8,500Year 1 included
DocGen deployment€6,500Waived
Year 1 total€41,400€26,400
Year 2 onward€34,900€31,900
// From Year 2, bundled DocGen bills at €5,500/year alongside your PSA Hub subscription. PSA Hub implementation is scoped separately either way. Download this as a PDF →

Questions buyers actually ask

Is this a canvas app?

No. PSA Hub is native Dataverse tables with model-driven surfaces over them, plus a compiled React front end delivered as a Power Apps code app. You get real application code where a canvas app would give you Power Fx, and purpose-built screens where a form designer would give you forms.

What happens to our existing model-driven app?

It keeps working. Everything runs over the same tables, so a pilot group can move to the new screens while everyone else stays put, and you cut over per team rather than per tenant. Nothing forces a big-bang switch.

Do we lose our customizations?

Custom columns, option sets, and plugins are all Dataverse-side — they survive, because PSA Hub reads the same schema. What doesn't carry over is form layout, which is usually the part you were customizing to work around the form designer in the first place.

Can our partner extend it?

Through sanctioned layers — configuration data, custom columns, navigation slots, and Custom API hooks — never by forking the source. That constraint is the product: it's what keeps one fix reaching every client instead of N drifted copies.

Does it work on a phone?

It's responsive and usable on a tablet, and time and expense entry are the screens designed for a small viewport. There is no offline mode — it needs a connection, same as any Power Apps surface.

Who holds the source?

We do. You receive a managed solution containing the compiled app, the tables, the roles, and the plugins — the standard Power Platform deliverable. Your data and your configuration are yours throughout, and exportable at any time.

Start the scoping conversation

Implementation is quoted, not listed, and four things drive the number — headcount, your ledger, migration volume and integration count. Send us those and we can tell you the range before you spend a call finding it out.

Send us the four numbers.

Billable headcount, which accounting system you run, how many years of history would migrate, and what else needs to exchange data with PSA Hub. If PSA Hub isn't right for your firm, we'll say so in the reply.

How we handle what you send
  • Controller. Simple Smooth Safe, Unipessoal Lda., Rua Retiro dos Pacatos 50, Ed. Startup, Sala 9, 2635-224 Rio de Mouro, Portugal. NIF/VAT PT518264742. Questions or requests: info@simplesmoothsafe.com.
  • Purpose. To answer your enquiry and follow up about PSA Hub. That is the only thing we use it for. We do not sell it, share it, or add you to a marketing list.
  • Legal basis. Your consent, given by ticking the box on the form. Nothing is pre-ticked, and submitting without consenting isn't possible.
  • Your rights. Withdraw consent, or ask us to delete what you sent, at any time by emailing us — no reason needed, and no effect on anything else.
  • Retention. Kept for up to 24 months after our last exchange, or until you withdraw consent, whichever comes first. Full detail in the Privacy Policy.
// Prefer email? info@simplesmoothsafe.com reaches the same place.

Already on Dataverse? Let's scope it.

A 30-minute call: we'll confirm fit, walk the working product, and leave you with the four numbers that drive your implementation quote. If PSA Hub isn't the right answer for your firm, we'll say so on the call.

// info@simplesmoothsafe.com