ERPNext lessons, straight from the field
Short, practical reads on accounts, stock, HR and payroll, implementation, security and development, drawn from real ERPNext deployments.

Kanban Boards in ERPNext: See Work Move Across Columns
Turn any ERPNext list with a Select field into a Kanban board, and know what really happens to the record when you drag a card.

bench console and execute: Inspect and Fix ERPNext Data Safely
Use bench console and bench execute to inspect ERPNext data and run one-off fixes, understand what commits and what rolls back, and work safely.

frappe.qb or frappe.db.sql? Querying Data the Frappe Way
Choose between frappe.get_list, frappe.get_all, frappe.qb and raw SQL in Frappe, with joins, aggregates and the permission rules each one follows.

Testing Your Frappe App: IntegrationTestCase and run-tests
Write tests for a Frappe app with IntegrationTestCase, run them with bench run-tests on a test site, and test the business rules that matter most.

Moving Customisations with Fixtures in Frappe and ERPNext
Ship custom fields, property setters, roles and client scripts with your Frappe app using fixtures or Export Customizations, and avoid overwrites.

Writing Patches in Frappe: Safe Data Migrations for Your App
Write Frappe patches that run once on every site during bench migrate: pre and post model sync, idempotent code, the Patch Log and safe re-runs.

Background Jobs in Frappe: Using frappe.enqueue Properly
Move slow work out of ERPNext requests with frappe.enqueue: choose the queue, avoid duplicate jobs, enqueue after commit, and find failed jobs.

ERPNext REST API: Resources, Whitelisted Methods and Tokens
Call the ERPNext REST API with token authentication, read and write documents through /api/resource, and write safe whitelisted methods for custom endpoints.

Client Scripts in ERPNext: Change Form Behaviour Safely
Write ERPNext Client Scripts that filter link fields, add buttons, react to field changes and child table edits, without confusing them with validation.

Server Scripts in ERPNext: Small Python Rules Without an App
Enable and write ERPNext Server Scripts for document events, scheduled tasks, API endpoints and permission rules, and know when to move to an app.

Frappe doc_events: Add Rules to ERPNext Without Editing It
Use doc_events in your app's hooks.py to run your own code when ERPNext documents are validated, submitted or cancelled, without touching ERPNext files.

Creating a DocType in Frappe: Fields, Naming and Controller
Create a DocType in your Frappe app: choose fields, naming and permissions, then add validation in the Python controller using the right lifecycle method.
Get notified when we publish
One email when new articles are published, never more than one a day. Unsubscribe any time.