Upgrading from Scipio ERP 3.x to 4.0: a checklist
What to check before you move a Scipio ERP 3.x project to 4.0: the JDK and the build, the libraries that were replaced and what your own code must change, the XML that still loads, the new backend theme and URLs, and the new license.

Scipio ERP 4.0 changes more under the surface than any release before it. Most of it does not touch a project that runs on 3.x, but some of it does. This list comes from the changes in the 4.0 code. Work through it on a copy of your installation, not on production.
1. The JDK and the build#
- 4.0 builds and runs on a Java 11, 17 or 21 JDK. The source level is Java 11; with a JDK 17 or newer the build uses a Java 17 toolchain.
- The build is Gradle (wrapper 8.5). The Ant build is gone.
- Components in
hot-deploy/andaddons/are found automatically.
A fresh start is two commands:
./gradlew build loadDemo
./gradlew start2. Sync the libraries once#
After you merge 4.0 into your project, run this once:
./gradlew syncLibsIt mirrors the library folder, so the jars that 4.0 no longer uses leave
framework/base/lib/gradle. Skip it, and an old jar stays on the classpath
beside its replacement.
3. The libraries that changed#
For 4.0 we replaced or removed a set of libraries: some were outdated, some were unused, and some did not fit the license policy of the release. If your own components use one of them, this is what changes:
| Before | In 4.0 | What your code must do |
|---|---|---|
Apache Tika 1.28.5 (tika-parsers) | Tika 3.3.2: tika-core, the text module and the PDF module | Use TikaCoreProperties.RESOURCE_NAME_KEY instead of Metadata.RESOURCE_NAME_KEY. Add a parser module you need yourself, for example tika-parser-microsoft-module for Office files. |
| Apache PDFBox 2.0.30 | PDFBox 3.0.8 | PDFBox 3 loads a document with Loader.loadPDF(...) instead of PDDocument.load(...). |
| iText 2.1.7 | OpenPDF 1.3.43 | Nothing. OpenPDF keeps the com.lowagie packages. |
groovy-all 3.0.19 | groovy, groovy-jsr223, groovy-dateutil 3.0.19 | If your tests use JUnit, declare it in your component. It no longer comes in through groovy-all. |
| Jakarta ORO 2.0.8 | java.util.regex | Replace imports of org.apache.oro. PatternFactory.createOrGetPerl5CompiledPattern now returns a java.util.regex.Pattern. |
javax.servlet-api, javax.servlet.jsp-api jars | The API that Tomcat provides | Nothing, unless your component ships its own servlet API jar: remove it. |
| commons-el, gmetric4j, metrics-ganglia, axis2-codegen at runtime | Removed | Add them to your own component if you really use them. |
Then test the places where a replacement can behave differently:
- Regular expressions: ORO and
java.util.regexdiffer in rare cases. - MIME type detection of
.docxand.xlsxfiles read from a stream. - PDF import, if you use content documents or surveys built from PDFs.
- JSP pages, and SOAP clients that use Axis2.
4. Your XML still loads#
In 4.0 every definition can be a Java annotation: services, entities,
controllers and the screen, form and menu widgets. Every application we
ship has been converted. Your own XML definitions still load next to them,
and ofbiz-component.xml is still read beside scipio-component.xml, so
nothing forces you to convert on the day you upgrade.
When you want to, one Gradle task converts a component, and a second one removes the XML it replaced:
./gradlew convertXmlToAnnotation -Pcomponent=mycomponent
./gradlew removeMigratedXml -Pcomponent=mycomponent -PdryRun=trueWe walk through a conversion in a separate post. The reference is in the documentation: Annotations .
5. The backend looks different#
- The default backend theme is Aurora, set with
VISUAL_THEME=AURORAinframework/common/config/general.properties. The older themes still ship inthemes/, so a project that depends on one can set it back. See Aurora . - Backend addresses leave out
/control/, for example/cms/pages. Old links with/control/keep working, so bookmarks and your own links do not break.
6. The license#
Scipio ERP 4.0 is licensed under the AGPL-3.0, with a commercial license beside it. Scipio ERP 3.x stays under the Apache License 2.0. Before you upgrade a project that you changed or that you sell, read what the AGPL-3.0 means for your shop , and decide which of the two licenses fits.
7. What you get#
The reason to do all of this: the annotations and the converter, an MCP server in every application so that the agent you already use can operate the system, a rebuilt manufacturing application, e-invoicing to the European standard, and the Aurora backend. The full list is in the release notes .
If your project is large, or you would rather not do the upgrade alone, talk to us .
More news
- Release
Scipio ERP 4.0: annotations, agent access, manufacturing, Aurora
Scipio ERP 4.0 is out. We moved every definition from XML to Java annotations, reviewed and updated every application, gave each one an MCP server for the agent you already use, rebuilt …
- Release
Scipio ERP 4.0 is AGPL-3.0: what that means for your shop
Scipio ERP 4.0 moves from the Apache License 2.0 to the AGPL-3.0, with a commercial license beside it. Five common cases, from running the shop unchanged to selling a product built on it, …
- Functions & Services
New: Maileon Integration Addon
Professional, GDPR-compliant email marketing with Scipio ERP and Maileon.