About Experience Engineering Projects Infrastructure Blog Contact
ERPNext & Frappe πŸ‡§πŸ‡© BD Case Study Β· Part 1: Methodology

ERPNext Bangladesh Case Study: Implementation Methodology

Published: Aug 30, 2026

πŸ‡§πŸ‡© What This Case Study Series Is

This is Part 1 of a 4-part Bangladesh implementation case study, built as a practical companion to the existing 9-part ERPNext Beginner to Intermediate course. That course teaches the architecture, modules, database design, permissions, and customization mechanics of ERPNext in general. This series takes those concepts and runs them through a realistic, end-to-end implementation for two fictional Bangladeshi companies β€” a hospital and a real estate/construction firm β€” so every concept is grounded in a concrete requirement instead of an abstract example.

Where the beginner course explains how ERPNext works, this series explains how to run the project of making ERPNext work for a specific business: gathering requirements, deciding what to configure versus build, structuring the environment pipeline, training users, and β€” in Parts 2 and 3 β€” walking through the actual hospital and real estate workflows in detail.

🏒 The Two Companies

Fictional companies, real methodology. Dhaka Care Medical & Hospital Ltd. and Dhaka Skyline Properties & Construction Ltd. are both invented for this teaching series. Any resemblance to a real organization is coincidental β€” the goal is a realistic Bangladesh business context to hang the ERPNext methodology on, not a documented real deployment.

Dhaka Care Medical & Hospital Ltd.

LocationDhaka, Bangladesh
TypePrivate hospital and diagnostic center
DepartmentsOPD, Emergency, IPD, ICU, CCU, OT, Pharmacy, Laboratory, Radiology, Blood Bank, Ambulance, Nursing

Dhaka Skyline Properties & Construction Ltd.

LocationDhaka, Bangladesh
TypeReal estate development and construction
Business linesLand acquisition, apartment/commercial development, construction, subcontracting, apartment sales and installment collection

🧠 The Implementation Mindset

The single biggest mistake in an ERP implementation is starting from the database β€” opening the DocType list and asking "which of these tables do we need?" A real implementation starts from the business process, walks it end to end with the people who actually do the work, and only then asks which ERPNext module, DocType, or customization maps onto each step. For Dhaka Care Medical & Hospital, the actual starting point of requirements gathering is a hospital's admission process β€” who decides a patient needs a bed, who allocates it, what has to be true before billing can start β€” not the fields on a Patient DocType. For Dhaka Skyline Properties & Construction, it's the apartment booking-to-handover process β€” how a buyer reserves a unit, pays a down payment, and enters an installment schedule β€” not the fields on a Sales Order. The DocType is where the requirement eventually lands; it is never where the requirement starts.

Business
↓
Business Process
↓
ERP Requirement
↓
ERPNext Base Module
↓
Configuration
↓
Customization
↓
Custom Module
↓
Integration
↓
Testing
↓
Deployment
↓
Training
↓
Production
↓
Maintenance

This chain is the backbone of the entire series: every workflow described in Parts 2 and 3 is walked through in exactly this order β€” business process first, ERPNext mapping last.

⚠️ Version & Environment Matrix

Read this before anything else in this series. Nothing in this article, or in Parts 2–4, should be read as asserting a specific ERPNext/Frappe version's exact behavior, schema, or command syntax. Every version cell below is deliberately filled with "confirm before use" rather than a number, because ERPNext/Frappe versions change DocType schemas, bench commands, and dependency requirements between releases β€” the same caution the beginner course establishes in its Version & Accuracy Note.
ItemValueNote
ERPNext VersionSet explicitly per projectDo not assume β€” confirm against the actual target environment before implementation; ERPNext/Frappe versions change schemas, commands, and dependencies.
Frappe VersionSet explicitly per projectDo not assume β€” confirm against the actual target environment before implementation; ERPNext/Frappe versions change schemas, commands, and dependencies.
Python VersionSet explicitly per projectDo not assume β€” confirm against the actual target environment before implementation; ERPNext/Frappe versions change schemas, commands, and dependencies.
Node.js VersionSet explicitly per projectDo not assume β€” confirm against the actual target environment before implementation; ERPNext/Frappe versions change schemas, commands, and dependencies.
DatabaseSet explicitly per projectDo not assume β€” confirm against the actual target environment before implementation; ERPNext/Frappe versions change schemas, commands, and dependencies.
Redis VersionSet explicitly per projectDo not assume β€” confirm against the actual target environment before implementation; ERPNext/Frappe versions change schemas, commands, and dependencies.
OSSet explicitly per projectDo not assume β€” confirm against the actual target environment before implementation; ERPNext/Frappe versions change schemas, commands, and dependencies.
Deployment TargetSet explicitly per projectDo not assume β€” confirm against the actual target environment before implementation; ERPNext/Frappe versions change schemas, commands, and dependencies.

Note the "Database" row deliberately does not name MariaDB or PostgreSQL as a fixed answer here β€” which database engine is actually supported, and how it behaves, is itself version-dependent and must be verified against the target ERPNext/Frappe release rather than assumed from this series.

πŸ”€ Development β†’ Staging β†’ Production Pipeline

Both companies' custom work β€” hospital DocTypes, real estate/construction DocTypes, and any integrations β€” should move through the same disciplined pipeline rather than being edited directly on a live site:

Developer
β†’
Git
β†’
Development
β†’
CI
β†’
Testing
β†’
Staging
β†’
UAT
β†’
Approval
β†’
Production
  • Developer β€” writes and tests changes locally against a development site.
  • Git β€” every change to a custom app is a tracked, reviewable commit, never an unversioned live edit.
  • Development β€” a shared dev site where changes are integrated and sanity-checked.
  • CI β€” automated checks run on every push (linting, basic test execution) before a change is considered mergeable.
  • Testing β€” scripted and manual tests validate the specific business logic changed.
  • Staging β€” a production-like environment, seeded with realistic (not real) data.
  • UAT β€” actual hospital or real estate staff verify the change against their real workflow.
  • Approval β€” a named sign-off gate before anything reaches production.
  • Production β€” the live site, changed only through this pipeline.

The hospital and real estate custom logic should each live in their own separate Frappe app (e.g. a "hospital" app and a "realestate" app) rather than inside ERPNext core, for the same reason any framework discourages editing vendor code directly: core upgrades would silently overwrite or conflict with in-place changes, custom logic wouldn't be independently versioned or deployable, and one company's customization could accidentally affect the other. Part 4, Custom Development, DevOps & Production, covers the full mechanics of building, packaging, and deploying these two apps; the general pattern it builds on is documented in the beginner course's Building a Custom Frappe App.

❓ The Six-Question Training Framework

Every major feature in Parts 2 and 3 β€” every screen a hospital receptionist or a real estate sales officer will actually touch β€” is introduced using the same six questions. Asking all six, in order, is what turns a feature walkthrough into something a non-technical user can actually learn from:

QuestionWhat it establishes
WHOWho uses it β€” the role or job function that touches this feature
WHATWhat the feature/document actually is
WHYWhy the business needs it β€” what breaks or goes untracked without it
WHENAt what point in the process it gets used
WHEREWhere it's found in ERPNext β€” module, workspace, or custom app
HOWHow it's configured or used, step by step

Applied to one concrete example from each company:

QuestionAdmission (hospital)Property Booking (real estate)
WHOReceptionist / Ward NurseSales Officer
WHATThe Admission documentThe Property Booking document
WHYFormally starts inpatient billing and bed allocationReserves a specific unit and formally starts the buyer's payment/installment obligation
WHENAfter a doctor decides IPD care is neededAfter a buyer confirms interest and pays a booking amount
WHEREHospital custom module, linked from the Patient/Appointment recordReal Estate custom module, linked from the Property/Unit record
HOWCreated against a Patient, assigns a Bed/Ward, and is later linked to Discharge and BillingCreated against a Unit and a Customer, records the booking amount, and is later linked to the Installment Schedule and Sales Invoice

This exact six-question pattern is reused for every major feature introduced in Part 2 (Hospital Management) and Part 3 (Real Estate & Construction) β€” once it's familiar here, every later walkthrough in the series follows the same shape.

πŸ“ Field-Level Training Methodology

Below the feature level, the series documents individual fields using a second consistent table shape: Field | Type | Required? | Who enters? | When? | Why? | Example | Related DocType. This is the format Parts 2 and 3 use for every hospital and real estate DocType field they walk through.

As a worked, generic example using core ERPNext's Customer DocType β€” illustrative field names and Bangladesh-context example values, not a guarantee of the exact field list on any specific installed version (Customer's fields, like any DocType's, are subject to change between releases and should be confirmed via Customize Form on the actual target site):

FieldTypeRequired?Who enters?When?Why?ExampleRelated DocType
customer_nameDataYesSales/Front-office staffAt first record creationPrimary identifier for every downstream transactionRahman TradersCustomer
customer_groupLinkYesSales staff, per company policyAt creationDrives pricing rules and reporting segmentationCorporateCustomer Group
territoryLinkYesSales staffAt creationUsed for territory-based sales reporting and targetsDhakaTerritory
customer_typeSelectYesSales staffAt creationDistinguishes Company vs Individual for compliance and reportingCompanyCustomer
tax_categoryLinkNo (as applicable)Accounts staffBefore the first taxable invoiceDetermines which tax template applies at billing timeRegistered (example placeholder)Tax Category
default_currencyLinkNoAccounts staffAt creation, if not BDTOverrides the company's base currency for this customer's transactionsBDTCurrency

Parts 2 and 3 apply this exact table shape to hospital DocTypes (Patient, Admission, Lab Order, …) and real estate DocTypes (Property, Unit, Booking, Installment Schedule, …).

🧩 Which ERPNext Base Modules Both Companies Share

Before either company needs a single line of custom code, a large share of their requirements are met by ERPNext's existing base modules β€” full detail on each module's purpose, master data, and document flow is in the beginner course's module-by-module tour. This table summarizes how much of each module each company actually uses:

ModuleUsed by HospitalUsed by Real Estate
AccountingYesYes
SellingPartial (patient billing, not classic quote-to-cash)Yes
BuyingYes (pharmacy/medical supplies procurement)Yes (construction materials procurement)
StockYes (pharmacy, lab consumables, blood bank)Partial (construction materials, not retail-style inventory)
CRMNo (usually)Yes (lead-to-booking)
ProjectsPartial (facility/equipment projects)Yes (construction project tracking)
AssetsYes (medical equipment)Yes (heavy equipment, vehicles)
HRYesYes
PayrollYesYes
QualityPartial (lab/diagnostic quality checks)Partial (construction quality inspection)
SupportPartial (patient complaints)Partial (post-handover buyer support)
ManufacturingNoNo (unless the reader's real project needs it)

🧭 Configure vs Customize vs Custom Module vs Integration

This decision tree is the single tool used throughout the rest of the series whenever a hospital or real estate requirement needs to be evaluated. Every requirement in Parts 2 and 3 is run through it before deciding how to implement it:

Does an existing ERPNext feature already do this?
Yes β†’ Configure (Setup/master data, no code)
↓ No
Can a Custom Field or Workflow solve it?
Yes β†’ Customize (Custom Field, Property Setter, Workflow)
↓ No
Does it need a genuinely new business object (its own table, list view, permissions)?
Yes β†’ Custom Module (Custom DocType in a custom app)
↓ No
Does it need to talk to a system outside ERPNext?
Yes β†’ API / Webhook Integration
↓ No
Reconsider whether this belongs in ERPNext at all β€” it may be a New Business Application

πŸ‡§πŸ‡© The Bangladesh Business Context

Currency. Both companies operate in BDT (ΰ§³) β€” every illustrative amount in this series is shown in Taka, and Currency/exchange-rate configuration should be set up per company accordingly.

Fiscal year. Bangladesh's government fiscal year commonly runs July–June. This is a general convention, not a guarantee β€” the specific fiscal year configured in ERPNext for a given company must be confirmed, since a private company's accounting fiscal year can differ from the national government fiscal year.

Addressing. Realistic Address records for both companies should follow Bangladesh's District/Division-based structure β€” e.g. Dhaka District, Dhaka Division β€” rather than a generic city/state/zip layout, since that's the address shape staff and customers actually expect to see and search by.

Local banking and mobile financial services. bKash, Nagad, and Rocket are payment channels commonly used in Bangladesh for customer and vendor payments. Any specific integration with one of these providers must be verified against that provider's current API and whatever connector, if any, is actually available or supported for the target ERPNext/Frappe version β€” this series does not claim a specific built-in ERPNext integration exists for any of them.

Customer types. Corporate, government, and individual customers are modeled through ERPNext's existing Customer Type and Customer Group configuration β€” not through new DocTypes. A government hospital contract and an individual walk-in patient's guardian are both just differently-configured Customer records.

⚠️ This series will never state a specific Bangladesh VAT/tax rate as fact. Every VAT/tax percentage shown anywhere in this 4-part series β€” including Parts 2 and 3 β€” is an explicit example/configuration placeholder, never a claim about the actual current rate. Actual VAT/tax configuration must be validated against current Bangladesh NBR (National Board of Revenue) rules and the company's own VAT registration/BIN status before any production deployment.

➑️ What's Next

With the methodology, environment discipline, and decision framework established, the next two parts apply this exact approach to each company in turn:

PartFocus
2Bangladesh Hospital Management β€” Dhaka Care Medical & Hospital Ltd.'s full ERPNext implementation, department by department
3Bangladesh Real Estate & Construction β€” Dhaka Skyline Properties & Construction Ltd.'s full ERPNext implementation, from land acquisition to installment collection
4Custom Development, DevOps & Production β€” the technical/DevOps layer underneath both companies' custom apps

For the general Frappe/ERPNext architecture, installation, and accuracy conventions this series assumes throughout, see the ERPNext Beginner to Intermediate course, particularly its architecture and installation sections. For permissions in depth, see Role Permission Manager vs User Permission Manager. For the accounting theory underneath every invoice and payment referenced in this series, see Invoice vs Payment: The Complete ERP Accounting Architecture and the Accounting to ERP curriculum.

↑