First things first...
What is Frappe?
ERPs are software used by enterprise (both small and large) to digitally manage resources. They're often at the core of the business's technology, and then usually other software are built on top or in conjunction with the ERP.
Let's start with the core of this blog: ERPNext. ERPNext is an open-source ERP framework, giving developers the core tools to easily build modules for their ERP project.
On top of that, the team behind ERPNext has created "Frappe", which gives out-of-the-box modules which are easily customizable according to your use case.

As per their website:
Frappe is a full stack, batteries-included, web framework written in Python and Javascript.
It is the framework which powers ERPNext. It is pretty generic and can be used to build database driven apps.
Frappe is a full-stack web framework, primarily config-based i.e. you write configurations to modify modules, written in Python and JavaScript.
Version 15 vs 16
So v15 was quite a stable and groundbreaking release of ERPNext, and is still constantly supported to this day.
The first public release of v15 was on 20th October, 2023 (See the release announcement here). As of the time of writing this blog, it is at its 118th minor release (v15.118.0).

That is truly awesome.
So my company, Grayhat, has been running v15. My job was to explore if v16 was a viable migration, given that it's on its 31st release (v16.31.0).
As per their official release, here's what v16 offers. The list is huge, but the biggest change is in Desk UI. Minor changes include performance improvements, changes to PDF generation and some security features like showing sensitive data to specific users. More details here

I'm also assuming core architectural changes, since it's a major version.
Frappe HR is one of the modules provided by Frappe. Here's a list of major changes in it:
- Overtime management
- Arrears and loss-of-pay corrections
- Multi-currency expense claims
- Employee benefits
- Leave adjustments
- Earned leave schedules
- Holiday list improvements
- Attendance/check-in improvements
Issues I faced while upgrading
There was a discrepancy between the provided official v16 Docker image and the actual application versions inside it. The Docker image was reporting v16 but the applications in the Bench were still on v15.

The second thing was the migration itself.
You can’t directly restore v15 backup inside v16. Because a lot of patches don't execute in this process, this breaks the v16 itself. So a better approach is to incrementally upgrade it to v16 from v15 or older versions because the migration process matters (you'll lose data otherwise).
To summarize, if you're on an older release, don't assume:
v13 → v16
is automatically equivalent to:
v13 → v14 → v15 → v16
Then There’s Overtime
In old ERPNext versions, timesheets were commonly used for overtime. In v16, Frappe HR has a dedicated overtime module, which is great.
But it’s a bit confusing to set up.
I assigned a shift to an employee and created check in and check out records. But the attendance wasn’t reflecting.
After some digging, I learned that Frappe HR doesn’t process attendance real time, a scheduler runs after every hour on the basis of which it updates the attendance. This was something that wasn’t clearly mentioned in the documentation (I learned it through the Frappe Forum).
Click here for more details about the Overtime feature.
A Note to Business Owners
if you are a business owner, you probably need an ERP to streamline your business processes. That’s why I think Frappe is interesting
It’s scalable, customizable, cost effective and can adapt to your business needs. Custom workflows, reports, modules, business logic etc... there are a lot of possibilities with Frappe, customization is relatively straightforward.
But there's something Grayhat believes in, which goes even further than the above... Frappe is self-hostable and open-source. You own your data. It's private. You own the API, you don't need to pay anyone for any metering. That allows you to host your own LLM and connect it directly to your ERP, giving it unlimited access to your company's knowledge and making a safe, private assistant for you.
There are other ERP systems like SAP, Odoo, they have their own strengths. But when you want control over your data, low software costs and flexibility to adapt your ERP as per your business needs, Frappe is an option worth considering.
A Few Questions for the Frappe Team
After going through this, there are a few things I'd love to see improved.
- Could we get a proper HRMS v15 → v16 migration guide?
We found ourselves piecing information together from different places. A single guide for HR/payroll-heavy installations would make life considerably easier. - Could the overtime calculation be more transparent?
When a calculation affects someone's salary, I'd like to see exactly how the number was produced. - Could we make overtime calculations more customizable?
Different businesses have different overtime rules. It would be great to have a way to define custom formulas instead of being limited to the standard calculation methods. - And could related documentation link to each other more aggressively?
The Auto Attendance scheduler detail is a perfect example. If I'm reading about overtime and wondering why my Attendance isn't updating, that's the exact moment I need that information. - Could there be a native, first-party backup/restore mechanism for open-source deployments beyond bench backup?
It feels like something a lot of teams end up building and maintaining independently. Having a well-supported, first-party option would save teams from having to solve and test the same problem over and over again.
So... Should You Upgrade?
Yes … You should, but consider the things that can go wrong. I'd advise you to set it up in a test environment first, test each feature against your existing installation, and if it works well, then shift it to prod.
For first-time users, I think it's fine to land in v16 directly especially if you plan to use older features/modules of ERPNext. You might struggle a bit with documentation, so I would recommend keeping the Frappe Forum close.
Compare Notes
If you've already moved to v16, I'd genuinely like to hear how it went.
- Did you hit the same migration issues?
- Did overtime behave the way you expected?
- Did you find something in the documentation that we completely missed?
- Or did your upgrade go perfectly while we somehow managed to find every pothole on the road?
A few useful places to compare notes:
- Frappe Forum
- Frappe v16 Migration Guide
- ERPNext v16 Migration Guide
- Frappe Framework v16 Releases
- Frappe HR Releases
If you've already made the jump, share what you found.

