.NET open source ERP

Open source ERP written in C# and .NET

Onfinity is an open source ERP and CRM written in C# on the .NET Framework. It runs as an ASP.NET application on IIS, on Windows Server, with PostgreSQL or Oracle underneath. The full source is on GitHub under the Eclipse Public Licence, and users work in the browser.

The source on GitHub Download the packages

What a .NET team checks first

C# on .NET, ASP.NET on IIS: the stack in one look

The four facts that decide whether an evaluation goes ahead, stated before anything else.

Language and runtimeC# on the .NET Framework 4.8, as an ASP.NET MVC application. It builds in Visual Studio 2019 or later.
ServerWindows Server with IIS: your own machine, your own cloud, or the Docker deployment with the application in a Windows container.
DatabasePostgreSQL 12 or later, or Oracle 12c or later. SQL Server is not supported.
ClientHTML5 in the browser, with nothing to install on the desktop, and a mobile app for the phone.

The source on GitHub

Three repositories and a container

The code is public in the VIENNA-Advantage-ERP-CRM organisation on GitHub, the name Onfinity carried until 2024. Built in this order.

Official-VABaseFiles
Base and core libraries: database access for PostgreSQL and Oracle, the model engine, a generated model class per table, the print engine. Build first.
Official-VAFramework
The framework: the Application Dictionary, workflows, and the HTML5 client.
Official-VAStandard-ERP-CRM
The ERP and CRM application: ViennaAdvantageWeb.sln, the web project and the areas of the modules installed in the database.
OnfinityContainer
The Docker deployment: the application in a Windows container, PostgreSQL in a Linux one, on your own infrastructure.
ViennaAdvantageWeb.sln  ·  Visual Studio  ·  Release | Any CPU
Build order
1  Official-VABaseFiles→ DLL\
2  Official-VAFramework→ DLL\
3  Module areas, per installed version→ Areas\
4  ViennaAdvantageWeb→ IIS
Web.config, appSettings
<add key="postgresqlConnectionString"
     value="Server=localhost;Port=5432;
            SearchPath=public;
            User Id=onfinity;Password=…;
            Database=onfinity" />
<add key="oracleConnectionString" value="" />

How it is put together

Windows, fields and workflows are metadata; the logic is C#

Two layers, and the split between them is what keeps a long-running installation on the current release.

The Application DictionaryTables, windows, tabs, fields, validation rules, menus and roles are records in the database. The client renders a window from its record at run time; a new tab is a row, not a view.
Logic in C#Callouts on fields, processes, posting and workflow steps are C# classes the dictionary points at. A model class is generated per table, so a column is a typed property.
So upgrades still arriveWork held in the dictionary is read by the next release rather than merged into it. The usual cost of an open source ERP is the fork you end up maintaining.

Building it

From clone to a running system on Windows Server

The released packages install a complete system. Building from source is the list below, and nothing more.

Get it

Clone it, load PostgreSQL or Oracle

  • Clone the three repositories
  • Load the database files of the matching release from SourceForge
  • PostgreSQL 12 or later, or Oracle 12c or later
  • Visual Studio 2019 or later, IIS on the machine
Build it

Open ViennaAdvantageWeb.sln

  • Build Base Files and Framework first; put the libraries in DLL
  • Copy each installed module's area into Areas
  • Versions must match what Module Management shows in the database
  • Set the connection string in Web.config
Run it

Host in IIS, log in

  • Point an IIS site at the web project
  • Log in with the System Administration role
  • Install modules from the Onfinity Market
  • Or skip the build: the packages and Docker do this for you

What is in the code

A complete ERP in C#, not a starter kit

The repositories hold the application and the platform used to extend it. Accounting, purchasing, sales and CRM, inventory, projects, assets and HR are in the code. Manufacturing, payroll and the AI assistant come as modules on the supported editions.

AccountingA general ledger with parallel accounting schemas, receivables, payables, bank, budgets, fixed assets.
Sales, purchasing and CRMLeads to invoice, requisition to payment, price lists per customer and currency, contracts.
Inventory and projectsWarehouses and bins, lots and serials, valuation methods; project phases, budgets and time.
HROne employee record, recruitment, attendance and shifts, leave, appraisals, employee self-service.

All the modules, on one page ›  ·  Manufacturing, with MRP and work orders ›  ·  Plant maintenance and field service ›

Questions a .NET team asks

PostgreSQL or Oracle, Linux, SQL Server, licence: the short answers

Is Onfinity open source?

Yes. Pluto, the community edition, is free under the Eclipse Public Licence with the full source on GitHub. Nova, the supported edition, gives source access on its open source modules only.

Which version of .NET does it use?

C# on the .NET Framework 4.8, as an ASP.NET MVC application. It builds in Visual Studio 2019 or later and runs under IIS.

Does it run on Linux?

The application runs on Windows Server with IIS. The database can sit anywhere: in the Docker deployment, PostgreSQL runs in a Linux container beside the Windows container that holds the application.

Does it support SQL Server?

No. The database is PostgreSQL 12 or later, or Oracle 12c or later. The data access layer in Official-VABaseFiles is written for those two.

Can I write my own modules in C# and keep them closed?

Yes. Under the Eclipse Public Licence, extensions, industry verticals and localisations you write are yours, and they can be sold through the Onfinity Market.

Is there an API?

A REST API reads and writes records for integrations and for the mobile app, including the records of windows added in the Application Dictionary.

Where is the documentation?

The development guide is on the public wiki. Manuals, videos, training and the ticket system are in the community portal, which is free to register for.

Clone it. Read it before you decide.

The source is public, the packages are free, and a running system fits on one Windows machine with PostgreSQL. What you build on it stays yours.

The source on GitHub Download the packages