Skip to content

2026

Modular add-on framework for SAP Business One

Shared core for SAP Business One rollouts: more than 40 functional modules enabled per client instead of being copied and left to diverge.

  • C#
  • .NET Framework
  • SAP B1 SDK
  • DI API
  • UI API
  • SQL Server
  • SAP HANA

Problem

Custom ERP rollouts share most of their functionality and differ in a small part of it. If every new client starts by copying the previous client's code, that shared part ends up split into as many versions as there are clients, each with its own half-finished fixes.

Solution

This is the shared core every rollout starts from. More than 40 functional modules live in the same codebase: stock reservations, quotations, price lists, construction jobs, shipping, loading orders, weighted average cost, banking and traceability, among others.

Each module is switched on or off per client. A module manager with its own interfaces decides what gets loaded, which menu entries show up and which event handlers are registered, so a client's add-on never drags along screens for functionality it does not use.

The database side is governed too. Stored procedures are created through a controlled path and triggers are validated before being accepted: in an ERP, a badly deployed database object does not show up on screen, it shows up in the month-end figures.

The same code runs on SQL Server and on SAP HANA, which are interchangeable neither in dialect nor in behaviour.

Architecture

Add-on del cliente (configuracion de modulos activos) Gestor de modulos Reservas Ofertas Expedicion ... 40+ Capa de acceso a datos DI API / UI API SQL Server / SAP HANA

Why it is built this way

Each module is switched on by configuration. There is no branch per client, so when I fix something I fix it once.

Modules load through an interface, and the manager does not need to know what is inside any of them.

I did not let stored procedures and triggers be created by hand. A badly deployed database object throws no exception: it turns up in the month-end figures weeks later, by which point nobody remembers what was changed.

SQL Server and HANA support lives in the data access layer. If every module had to handle the dialect differences, that would be forty places to get it wrong.

Data goes through the DI API and screens through the UI API. Changing a form should not mean touching business logic.

Result

343 classes and 71 forms in the shared core, with 153 commits of my own and around 122,000 lines contributed since 2025. Every new rollout starts here.

Contact

Let's work together on your next project

If you have a SAP Business One project, a pending integration or simply a question, send me a message. I reply to everything.

Location
Palma, Mallorca