Skip to main content
DBNAlliance (Digital Business Networks Alliance) is a North American standards body for B2B e-commerce. Its AS4 profile is designed for interoperable document exchange between trading partners in North America.

Maven Artifact

phase4-profile-dbnalliance

Profile ID

dbnalliance

Maven dependency

<dependency>
  <groupId>com.helger.phase4</groupId>
  <artifactId>phase4-profile-dbnalliance</artifactId>
  <version>4.4.1-SNAPSHOT</version>
</dependency>

Overview

The DBNAlliance profile uses one-way/push messaging, similar to the Peppol profile, but with several key differences:
  • Uses SOAP 1.2 explicitly (not just the AS4 default)
  • Uses AES-256-GCM encryption (stronger than the 128-bit used by other profiles)
  • Configures 5 retries spread across a 6-hour window
  • Uses its own agreement and party type URIs

PMode structure

import com.helger.phase4.profile.dbnalliance.DBNAlliancePMode;
import com.helger.phase4.model.pmode.IPModeIDProvider;

PMode pMode = DBNAlliancePMode.createDBNAlliancePMode(
    "your-access-point-id",
    "receiver-access-point-id",
    "https://receiver.example.com/as4",
    IPModeIDProvider.DEFAULT_DYNAMIC,
    true  // persist
);
ParameterValue
MEPOne-Way
MEP BindingPush
SOAP versionSOAP 1.2 (explicit)
Agreement IDhttps://dbnalliance.org/agreements/access_point.html
Party typehttp://docs.oasis-open.org/bdxr/AS4/1

Security requirements

DBNAlliance uses AES-256-GCM for encryption, not AES-128-GCM. This is enforced by DBNAllianceCompatibilityValidator.
SettingRequired value
Signature algorithmRSA_SHA_256
Signature hash functionSHA-256
Encryption algorithmAES-256-GCM (http://www.w3.org/2009/xmlenc11#aes256-gcm)
WSS version1.1.1
PModeAuthorizefalse
Receipt reply patternResponse
Non-repudiationtrue

AgreementRef and PartyInfo

  • CollaborationInfo/AgreementRef value must be https://dbnalliance.org/agreements/access_point.html
  • CollaborationInfo/AgreementRef/@type must NOT be set
  • PartyInfo/From[0]/@type must be http://docs.oasis-open.org/bdxr/AS4/1
  • PartyInfo/To[0]/@type must be http://docs.oasis-open.org/bdxr/AS4/1

Reception awareness and retries

DBNAlliance has a significantly different retry configuration compared to other profiles:
// From DBNAlliancePMode.generatePModeReceptionAwareness():
// receptionAwareness = true
// retry = true
// maxRetries = 5
// retryIntervalMS = (6 hours / 5 retries) in ms = 4_320_000 ms (72 minutes per retry)
// duplicateDetection = true
This spreads the 5 retry attempts over a 6-hour total window with equal intervals.

HTTP client settings

Phase4DBNAllianceHttpClientSettings provides suitable defaults:
SettingValue
TLS versionTLS 1.2 (minimum)
Connection request timeout1 second
Connect timeout5 seconds
Response timeout100 seconds
import com.helger.phase4.profile.dbnalliance.Phase4DBNAllianceHttpClientSettings;

Phase4DBNAllianceHttpClientSettings httpSettings = new Phase4DBNAllianceHttpClientSettings();

CRL checking

The DBNAlliance profile module includes DBNAllianceCRLDownloader for Certificate Revocation List (CRL) checking, supporting proper certificate validation for the DBNAlliance PKI.

Error handling

DBNAlliance requires all three error reporting flags:
  • ErrorHandling.Report.AsResponse = true
  • ErrorHandling.Report.ProcessErrorNotifyConsumer = true
  • ErrorHandling.Report.ProcessErrorNotifyProducer = true
  • ErrorHandling.Report.DeliveryFailuresNotifyProducer = true (mandatory, not just recommended)

Build docs developers (and LLMs) love