The failure modes most ERPNext teams eventually face
ERPNext is powerful. Most production pain comes from operating it without visibility, control, safe upgrades, and proven recovery. This page describes the problems plainly - and how we turn them into predictable operations.
If downtime is acceptable, logs are “good enough,” or upgrades are rare and rushed - this probably isn’t for you.
What goes wrong in real production
Each section includes symptoms, root causes, typical (weak) responses, and what operational control looks like.
Background jobs fail silently
- Emails stop sending, reports stop generating, and automations quietly stall.
- Integrations get stuck mid-flow: partial sync, duplicates, or missing updates.
- Failures are discovered hours later-when users complain.
- RQ/Redis queues with limited native observability.
- Failures live in logs; the UI doesn’t surface evidence or trends.
- Retries are ad-hoc; operators lack safe actions (retry/requeue/cancel) with guardrails.
- Restart workers/Redis and hope the issue disappears.
- Manually re-run jobs without understanding idempotency risks.
- Search logs reactively, after business impact has already happened.
- Expose queue depth, worker health, stuck jobs, and failure hotspots.
- Group failures by method and recurrence; preserve evidence.
- Provide safe actions: retry, requeue, cancel-plus audit trails and alerts.
Upgrade fear (teams delay upgrades for years)
- Sites stay on old versions because upgrades feel like gambling.
- Upgrades happen under pressure and break customizations.
- Every upgrade becomes a fire drill instead of a planned operation.
- Customization rot: scripts and reports reference fields/APIs that change over time.
- Third-party apps pin versions or use private/internal APIs.
- Lack of preflight checks: environment gaps (DB, Redis, Node/Python), patches, or disk headroom.
- Skip upgrades until forced by security or major failures.
- Upgrade directly in production or with weak staging parity.
- Fix breakages after the fact with emergency patches.
- Quantify risk before upgrade: evidence + severity + fix list.
- Run preflight checks and generate an upgrade runbook with verification steps and rollback planning.
- Turn upgrades into repeatable operations, not heroic interventions.
Turn firefighting into proven, repeatable recovery.
Restarting workers and hoping is not an operating model. We replace guesswork with evidence, safe actions, and runbooks so incidents become predictable operations instead of emergencies.
Data integrity drift (stock & accounting stop agreeing)
- Stock levels don’t match reality; negative stock surprises appear.
- Ledgers don’t reconcile cleanly; audits become painful.
- Numbers look “almost right,” until they aren’t.
- Partial transactions from failed background jobs or interrupted flows.
- Integration drift: mismatched item mappings, duplicate documents, or missing postings.
- Manual SQL “fixes” that bypass business logic and create hidden inconsistencies.
- Patch symptoms: adjust stock manually, reverse entries, run ad-hoc scripts.
- Blame users for “wrong processes,” while issues are systemic.
- Avoid changing anything out of fear of making drift worse.
- Detect drift patterns early using ERPNext-aware signals and evidence trails.
- Instrument workflows so every critical operation has traceability.
- Build reconciliation workflows for integrations to prevent repeated drift.
Performance bottlenecks are invisible
- Users complain ERPNext is slow-sporadically and unpredictably.
- CPU graphs look fine, but timeouts happen.
- Queue backlogs grow, but nobody correlates causes.
- Worker starvation and queue saturation aren’t visible in generic monitoring.
- Lock contention and slow queries are disconnected from user symptoms.
- No correlation between requests, background jobs, and infrastructure limits.
- Increase server size without understanding bottlenecks.
- Disable features or reduce usage as a workaround.
- Treat performance as a mystery instead of an engineering problem.
- Surface ERPNext-aware metrics: queues, workers, locks, scheduler health, and latency patterns.
- Add practical dashboards for operators: what to fix first, what to watch, and when to scale.
- Use evidence to reduce guesswork and stop over-provisioning.
Make performance an engineering problem, not a mystery.
Generic monitoring hides ERPNext-specific bottlenecks. We surface queues, workers, locks, and scheduler health so you know what to fix first - and stop over-provisioning to mask the symptoms.
Backups exist… but restores are untested
- Teams believe they are safe because backups run.
- During a real incident, restore takes hours-or fails.
- Recovery becomes guesswork under pressure.
- Cron-based backups without restore verification.
- No audit trail, no retention discipline, no operator UI.
- No clear RPO/RTO expectations or tested runbooks.
- Keep backups on the same server (single point of failure).
- Test restore “someday.”
- Scramble during outages and learn the hard way.
- Automate backups and verify restores routinely.
- Provide a simple interface to browse, download, restore, and prove recovery readiness.
- Tie recovery to runbooks so incidents are repeatable, not improvised.
Integrations are brittle (especially under failure)
- Duplicate records, missed updates, and inconsistent states across systems.
- Stock drift between ERPNext and commerce channels.
- Webhooks arrive out of order, repeat, or partially fail.
- Lack of idempotency and deterministic conflict handling.
- No replay/retry strategy with evidence and auditability.
- No reconciliation workflows to correct drift safely.
- Rely on manual fixes and ad-hoc scripts.
- Disable syncing when it breaks and accept “data lag.”
- Treat integration failures as unavoidable.
- Build enterprise-grade sync: idempotency, conflict handling, replay, retries, and audit trails.
- Instrument every integration event so you can explain what happened.
- Provide operational controls to recover from failure without corruption.
Keep integrations consistent when things go wrong.
Brittle syncs create duplicates and drift the moment a webhook repeats or arrives out of order. We build idempotent, auditable integrations that recover from failure without corrupting your data.
Operational knowledge disappears when people leave
- Only one person knows how things work.
- Onboarding is slow; incident response is chaotic.
- Documentation exists but is outdated, scattered, and untrusted.
- Docs live outside systems and don’t evolve with production changes.
- No ownership model or review cadence for SOPs/runbooks.
- No search-first operational knowledge base tied to real workflows.
- Store docs in random folders or chats.
- Rely on ‘ask John’ as the operating model.
- Write docs once, then never update them.
- Treat operational knowledge as infrastructure: owned, searchable, current, and linked to operations.
- Create runbooks for upgrades, recovery, queues, and integrations.
- Turn incident response into repeatable procedures.
If ERPNext is mission-critical, operate it like infrastructure.
We’ll review your environment (queues, upgrades, backups, performance, and integrations) and produce a clear plan to improve reliability and operational control.
Note: This page intentionally prioritizes operational truth over marketing language.
