Skip to main content

Requirements

  • Java 17 or later
  • Maven 3.6+ or Gradle 7+
  • All artifacts are published to Maven Central
The current stable release is 4.4.0. The group ID for all phase4 artifacts is com.helger.phase4.

Core library

phase4-lib is required for all use cases. It provides the AS4 sender, receiver, crypto support, and PMode management.
<dependency>
  <groupId>com.helger.phase4</groupId>
  <artifactId>phase4-lib</artifactId>
  <version>4.4.0</version>
</dependency>

Profile-specific clients

Each e-delivery network has a dedicated client module that adds the network’s messaging profile and a high-level sender on top of phase4-lib.

Peppol

<!-- Peppol sender (includes phase4-profile-peppol transitively) -->
<dependency>
  <groupId>com.helger.phase4</groupId>
  <artifactId>phase4-peppol-client</artifactId>
  <version>4.4.0</version>
</dependency>

<!-- Peppol receiving servlet -->
<dependency>
  <groupId>com.helger.phase4</groupId>
  <artifactId>phase4-peppol-servlet</artifactId>
  <version>4.4.0</version>
</dependency>

CEF eDelivery

<dependency>
  <groupId>com.helger.phase4</groupId>
  <artifactId>phase4-cef-client</artifactId>
  <version>4.4.0</version>
</dependency>

BDEW

<dependency>
  <groupId>com.helger.phase4</groupId>
  <artifactId>phase4-bdew-client</artifactId>
  <version>4.4.0</version>
</dependency>

ENTSOG

<dependency>
  <groupId>com.helger.phase4</groupId>
  <artifactId>phase4-entsog-client</artifactId>
  <version>4.4.0</version>
</dependency>

EUDAMED

<dependency>
  <groupId>com.helger.phase4</groupId>
  <artifactId>phase4-eudamed-client</artifactId>
  <version>4.4.0</version>
</dependency>

DBNAlliance

<dependency>
  <groupId>com.helger.phase4</groupId>
  <artifactId>phase4-dbnalliance-client</artifactId>
  <version>4.4.0</version>
</dependency>

Dependency management (BOM)

To avoid managing versions for each module individually, import the phase4 parent POM as a BOM in your dependencyManagement section.
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.helger.phase4</groupId>
      <artifactId>phase4-parent-pom</artifactId>
      <version>4.4.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<!-- Dependencies no longer need explicit versions -->
<dependencies>
  <dependency>
    <groupId>com.helger.phase4</groupId>
    <artifactId>phase4-lib</artifactId>
  </dependency>
  <dependency>
    <groupId>com.helger.phase4</groupId>
    <artifactId>phase4-peppol-client</artifactId>
  </dependency>
</dependencies>

All modules

The following table lists every artifact published under com.helger.phase4.
Artifact IDDescription
phase4-libCore library: sender, receiver, crypto, PMode management
phase4-profile-peppolPeppol AS4 profile definitions and validators
phase4-profile-cefCEF eDelivery AS4 profile
phase4-profile-bdewBDEW energy sector AS4 profile
phase4-profile-entsogENTSOG gas network AS4 profile
phase4-profile-euctpEU Customs Trader Portal AS4 profile
phase4-profile-edelivery2eDelivery 2.0 AS4 profile
phase4-profile-dbnallianceDBNAlliance B2B AS4 profile
phase4-profile-hredeliveryHR eDelivery AS4 profile
phase4-peppol-clientHigh-level Peppol sender
phase4-peppol-servletPeppol AS4 receiving servlet
phase4-cef-clientHigh-level CEF eDelivery sender
phase4-bdew-clientHigh-level BDEW sender
phase4-entsog-clientHigh-level ENTSOG sender
phase4-eudamed-clientHigh-level EUDAMED sender
phase4-euctp-clientHigh-level EuCTP sender
phase4-edelivery2-clientHigh-level eDelivery 2.0 sender
phase4-dbnalliance-clientHigh-level DBNAlliance sender
phase4-dbnalliance-servletDBNAlliance AS4 receiving servlet
phase4-hredelivery-clientHigh-level HR eDelivery sender
phase4-hredelivery-servletHR eDelivery AS4 receiving servlet
phase4-dynamic-discoverySMP/BDXR dynamic endpoint discovery
phase4-server-webappGeneric AS4 server web application
phase4-peppol-server-webappExample Peppol server web application
phase4-dbnalliance-server-webappExample DBNAlliance server web application
Profile modules (phase4-profile-*) are pulled in transitively by the corresponding client and servlet modules. You generally do not need to declare them directly unless you are implementing a custom sender or receiver.

Logging

phase4 uses SLF4J for logging. Add a binding of your choice to the classpath — for example Log4j 2:
<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-slf4j2-impl</artifactId>
  <version>2.25.3</version>
  <scope>runtime</scope>
</dependency>

Build docs developers (and LLMs) love