In this guide 6 sections
Customise an ERP only when a wish is frequent, costly to leave undone and likely to survive the next vendor upgrade without rework. Sort every request into one of four bins: configure, customise, integrate or adopt the standard process, and expect most wishes to land in the first or last. Each customisation adds testing to every upgrade.
Sort every wish into four bins before anyone writes code
Collect every request on one sheet, whether from accounts, stores or sales, and write it as a sentence about work rather than a screen. A good one reads like “warehouse staff must see the supplier’s batch number at goods receipt”, while “add a field” tells nobody anything.
Then assign one of four outcomes. Configure means the standard product already does it through settings, number series, approval rules or print layouts, while customise means changing the product’s own code or database. Integrate means a separate tool does the job and exchanges records with the ERP, and adopt means your team changes the way it works instead.
Most land in configure or adopt. A request that looks like custom work is often a missing setting, such as an approval limit, a number series or a print layout nobody has opened yet.
- Configure: settings, roles, workflows, report layouts
- Customise: new logic inside the ERP’s own code
- Integrate: a separate tool linked by an interface
- Adopt: change the process, keep the standard screen
Three questions that decide the bin
Ask how often the task happens. A step done forty times a day by six people in dispatch deserves real effort, while a year-end step done by one accountant can stay a spreadsheet macro.
Next, ask what is at stake. A wrong tax code on an invoice, a missed expiry date on a stocked item or a credit limit that fails to block an order all carry real cost. A tidier delivery note does not.
Ask what the change does to upgrades. Teams forget this one. Vendors ship patches and new versions every few months, and every change to the core must be retested, merged and sometimes rewritten. Score each wish high, medium or low on all three questions, and treat two highs with a low upgrade burden as the only fair candidate for customising.
How customisations raise the cost of every later upgrade
A customisation is not a one-time purchase. It is a standing obligation to retest. Each time the vendor changes a table, an API or a screen the custom code touches, someone has to read the release notes and test the change.
Ten small changes become a project. Merge conflicts alone eat weeks. Each one needs a test script, a person who understands why it exists and a decision on whether it still applies, and the work repeats at every release. Teams that skip this work end up frozen on an old release, missing the vendor’s security patches and unable to adopt the new reporting screens.
Keep a register. Every customisation goes in it with its owner, the process it supports and the upgrade test that proves it still works, plus the date it was last used. Without an owner, it goes.
- Name of the change and the business reason
- Owner who can explain the rule
- Tables, screens and reports it touches
- Test case to repeat after each upgrade
- Date last used in real work
When a standard process is the better answer
Standard processes carry accumulated experience. The approval route, the three-way match of purchase order, goods receipt and supplier invoice, and the month-end close order have usually been tested against thousands of firms.
Your habits may outlast their reasons. Ask why the current practice exists. If the answer is “the last system did it that way”, try the standard path for one full cycle, such as a single month-end close, before building anything.
Some wishes are genuinely different, though. A job-costing rule peculiar to your trade, or a pricing matrix that drives your margin, can be the reason you win work. Protect those. Spend customisation effort on the few places where your method is your edge, and let the standard screens carry everything around them.
Run the test on your own list this week
Take the full wish list and give each line its bin, its three scores and a named person who owns the call. One page per module. No more.
Ask the vendor or implementer to confirm which wishes settings already cover, since many teams find a third of their list disappears at that step. Settings cover more than expected.
Bring the shortlist of true customisations to a single review with finance, operations and the warehouse supervisor in the room, and record the decision beside each line. Anything that still lacks a named owner after that meeting goes back to the adopt bin, whatever its sponsor thinks of the idea. No exceptions.
ERP wish-sorting worksheet
One line per request. Columns hold the plain language need and the person who asked, then daily frequency, money or compliance risk and upgrade burden, each scored high, medium or low. The chosen bin follows, and a final column names the owner and the test that proves a customisation still works after each upgrade.
Open a blank worksheet to printQuestions owners ask
How do I know if a request is configuration or customisation?
Try it in a standard demo system. If it works through settings, roles, workflows or print layouts, it is configuration, but if it needs new code or a changed table, it is customisation.
Is it ever right to customise a finance module?
Rarely. Posting rules, tax handling and period close affect audit trails, so changes there deserve extra caution, and settings or an integration should come first. Ask your accountant first.
What if staff refuse the standard process?
Run it for one full cycle and record where it truly slows people down, such as extra clicks, duplicate entry or a missing report. Real friction with evidence justifies a change. Plain dislike of an unfamiliar screen usually fades within a few weeks of daily use, so it is no reason to write code.
Can a customisation be removed later?
Yes, if it is documented. Check who still uses it, confirm the standard route works, retire it at the next upgrade, and note the date and the reason in the register. Without a register, removal is guesswork.
