One system, owned outright, instead of a stack of subscriptions
Summary
One system, owned outright, instead of a stack of subscriptions
Bitbase India ran its people operations on Zoho. It worked, but the company's data sat in someone else's database, the workflows bent to the product rather than the company, and the bill grew with headcount.
We built Bitbase Connect: a single Drupal 11 intranet covering HR, payroll, leave, attendance, expenses, time tracking, performance, recognition, inventory, logistics, ticketing and finance reporting. Twelve custom modules, 49 custom record types, one Microsoft 365 sign-in. It is live, it is the company's own code, and it runs on the company's own server.
The challenge
The tools fit the vendor, not the company
A growing services business does not run on HR alone. Bitbase needed leave approvals that understood who actually reports to whom, timesheets that fed project profitability, expense claims that went to a manager before finance saw them, and payslips that looked like the company's own documents. None of that lived in one place.
Every gap between products became a person: someone re-keying a leave balance, chasing an approval over email, or rebuilding the same report in a spreadsheet each month. The cost was never really the licence. It was the work the licence did not do.
Zoho
People data, leave and payroll ran on Zoho, with the gaps between modules filled by spreadsheets and email threads. Recurring licence cost of ₹ per year, rising with every hire.
What that exposed
Salary, identity and performance records lived in a third-party database under someone else's retention and export rules. Any process the vendor did not support could not be built — only worked around.
Our approach
Build the org chart into the software, not the permission list
The decisive design choice was how authority is modelled. Off-the-shelf tools ask you to express a company as a set of roles. Real companies run on relationships — this person reports to that one — and every approval, every visible dashboard, every "who can see my review" question follows from that single fact.
So Connect resolves permissions from the reporting line itself, not from a role a coordinator remembered to tick. A manager sees their reports' objectives, timesheets and expense claims because they are the manager, and stops seeing them the day that changes.
Everything else followed the same rule: build what the company actually does. Approval chains are the company's approval chains. Exported documents use the company's own Word template. Modules can be switched off from one dashboard, so the platform can be handed to another business with a different shape.
What we built
Twelve modules, one login
| MODULE | WHAT IT DOES | RECORDS |
| hr | Profiles, leave workflows, attendance, Teams presence | 1322 |
| payroll | Payslips, pay runs, employee loans, full & final settlements | 71 |
| timetracking | Live timer, manual entry, project and person reports | 139 |
| expenses | Reimbursements, WFH allowances, manager-then-finance approval | 33 |
| performance | OKRs, self and manager reviews, 360 feedback, project health | 83 |
| intranet | News feed, document repository, company directory | 47 |
| inventory | Stock and serialised assets with a movement audit trail | 67 |
| tickets | IT, HR, finance and facilities requests with threaded replies | 31 |
| bbgtoken | Peer recognition tokens, shoutouts and redemption | 70 |
| finance | Cash flow and per-employee profitability, read from payroll | 2 |
| logistics | Warranty tracking, return labels, ID and letter print requests | - |
| core | Module toggles, brand enforcement, Microsoft 365 integration | - |
Live record counts, September 2026. Modules with no rows yet are built and switched on.
Technology
Drupal 11.3 on PHP 8.3. Custom content entities throughout — no contributed HR module bent into shape.
Microsoft Entra ID single sign-on via OpenID Connect. Staff photos, mail and Teams presence over the Graph API.
Per-entity access handlers over 10 roles and 53 permissions, resolved against the reporting line rather than role membership alone.
Dompdf behind one shared theme service, so every PDF, Excel and CSV export carries the company's Word-template branding.
ECA for notification and state-change workflows, so rules stay editable by non-developers.
Self-hosted on a Contabo VPS in Docker. DDEV locally, Git-based deploys with configuration in version control.
Results
custom modules in production
custom record types
staff on one login
attendance records logged
leave requests processed
payslips issued in-platform
- The subscription is gone. People operations run on software the company owns, hosts and can change the same afternoon it decides to.
- The data came home. Salary, identity, attendance and performance records sit in a database Bitbase controls, exportable in full at any time.
- Approvals follow the org chart. Leave, expenses, reviews and OKRs route to the actual manager, with no role list to maintain in parallel.
- One document standard. Every export across payroll, HR, time and inventory renders from a single branded theme rather than eight different layouts.
- The platform is reusable. Modules toggle independently from one dashboard, so the suite can be fitted to another company's shape without a rewrite.