If this project saved you some time or made your day a little easier, a star would mean a lot — it helps others find it too.
phoss Peppol Access Point - when looking for the SMP, see phoss SMP
A complete open-source Peppol Access Point based on phase4.
It is a Spring Boot application that handles all the relevant Peppol specifications:
- Peppol AS4 specification - using phase4
- Peppol SMP specification - using peppol-smp-client
- Peppol Network Reporting specification - using peppol-reporting
- Peppol MLS specification - using peppol-mls
Features include:
- Inbound document reception with configurable forwarding (HTTP, S3, SFTP)
- Outbound document sending with automatic SMP lookup and SBDH creation
- Retry with exponential backoff and circuit breaker for both sending and forwarding
- Optional document validation via external verification service
- Duplicate detection on AS4 Message ID and SBDH Instance Identifier
- MLS (Message Level Status) support with SLA monitoring
- Peppol Reporting with scheduled submission
- Archival of completed transactions
- Sentry integration for error tracking
- OpenTelemetry based execution telemetry measurements
phoss AP is part of my Peppol solution stack. See https://github.com/phax/peppol for other components and libraries in that area.
Prerequisites:
- Java 21 or later
- Maven 3.x
mvn clean verify- Set up a PostgreSQL or MySQL database (see
docker-compose.ymlfor an example) - Copy
phoss-ap-webapp/src/main/resources/application.propertiesand adjust for your environment - Run the application:
java -jar phoss-ap-webapp/target/phoss-ap-webapp-*.jarOr use Docker:
docker compose up -dSee the Running phoss AP wiki page for detailed setup instructions.
By default, phoss-ap can easily connect to either a MySQL/MariaDB or a PostgreSQL database.
Experimental support for IBM DB2 LUW is also included. Because the IBM jcc driver is proprietary, it is not bundled — it is supplied at runtime via the extension mechanism (requires 0.10.4 or later). To use DB2:
- Drop the
com.ibm.db2:jccdriver and theorg.flywaydb:flyway-database-db2dialect jars into the/extextension directory (LOADER_PATH). See the Runtime Extensions wiki page. - Configure
phossap.jdbc.database-type=db2in yourapplication.properties. - Due to DB2's strictness, ensure your driver version matches your database. Boolean values are mapped to
SMALLINT(0/1), and unbounded text is mapped toCLOBorVARCHAR(32000).
The Peppol Reporting SQL backend also supports DB2 (since peppol-reporting 4.2.0), so the reporting database may run on DB2 as well — it uses the same jcc driver supplied via /ext.
See docker-compose.db2.yml for an example of how to spin up a local DB2 instance for testing.
Provided in the Wiki: https://github.com/phax/phoss-ap/wiki
If you like the project, a star on GitHub is always appreciated.
If you need commercial support or if you'd like to sponsor this project, please reach out to me by email (philip@helger.com).
My personal Coding Styleguide | It is appreciated if you star the GitHub project if you like it.