Coder Social home page Coder Social logo

phax / peppol-commons Goto Github PK

View Code? Open in Web Editor NEW
28.0 10.0 8.0 47.7 MB

Java library with shared Peppol components - identifier handling, codelists, SBDH handler, SMP Client, SML Client

License: Apache License 2.0

CSS 5.06% Java 94.94%
peppol openpeppol sbdh smp sml service-metadata-publisher service-metadata-locator ubl smp-client sml-client

peppol-commons's Introduction

Introduction

javadoc Maven Central

This project contains different libraries that are commonly used in the Peppol area:

These project are used implicitly by e.g. the following projects:

  • phoss-smp - the phoss SMP server with a management GUI
  • phase4 - an AS4 implementation that also supports Peppol
  • phoss-directory - the phoss Directory for Peppol and TOOP

This project is licensed under the Apache 2.0 license.

peppol-id-datatypes

Java library with the JAXB generated elements for Peppol ID and Peppol Code List handling. First created in v8.4.0.

Make sure to run mvn process-sources before using it in the IDE. The additional code is created in target/generated-sources/xjc.

peppol-id

Java library with shared IDs and predefined IDs. First created in v7.0.0.

peppol-commons

Java library with shared Peppol components. It contains the basic algorithms. Since v7 this depends on the peppol-id submodule.

This project also contains the predefined Peppol Truststores. See https://github.com/phax/peppol-commons/tree/master/peppol-commons/src/main/resources/truststore for all details.

peppol-sbdh

Simple SBDH handler for the use with Peppol. It offers the possibility to extract all meta data from an SBDH document as well as set all meta data to an SBDH document.

Make sure to run mvn generate-sources before using it in the IDE. The additional code is created in target/generated-sources/xjc.

This projects implements the "Envelope specification" as listed on http://www.peppol.eu/ressource-library/technical-specifications/transport-infrastructure/infrastructure-resources. The detail document this project refers to can be found at https://docs.peppol.eu/edelivery/envelope/PEPPOL-EDN-Business-Message-Envelope-1.2.1-2020-03-11.pdf

peppol-testfiles

A Java library with a lot of UBL and SBDH test files suitable for different scenarios.

SimpleInvoicing test files are used from https://github.com/SimplerInvoicing/testset

peppol-sml-client

This project contains the SML client library used by the SMP's to interact with the SML. This library is usually only used within SMP servers, to communicate the changes to the central SML.

Make sure to run mvn generate-sources before using it in the IDE. The additional code is created in target/generated-sources/xjc.

This project contains 2 main classes for talking to the Peppol SML:

  • ManageServiceMetadataServiceCaller which is used to change SMP assignments in the SML. This must be called for a new SMP to register it once at the SML.
  • ManageParticipantIdentifierServiceCaller which is used to manage the assignment of participants to SMPs. This must be invoked from the SMP server every time a new participant is registered (or an existing one is modified or deleted).

Both classes offer the possibility to set an optional custom SSLSocketFactory as well as a custom optional HostnameVerifier. The implementation of this is in the base class AbstractSMLClientCaller.

This project is used by peppol-smp-server the SMP server with a management GUI and flexible backends.

peppol-smp-datatypes

Java library with the JAXB generated elements for Peppol SMP handling. First created in v8.4.0.

Make sure to run mvn process-sources before using it in the IDE. The additional code is created in target/generated-sources/xjc.

peppol-smp-client

This project holds the SMP client library used by the Access Points to retrieve service metadata. This project supports the Peppol SMP specification, the OASIS BDXR SMP v1 and OASIS BDXR SMP v2 specification. This project uses Apache HTTP client to perform the REST lookups on foreign SMPs.

The Peppol SMP specification 1.2.0, mandatory per 1.5.2022, is supported since v8.7.3. The Peppol SMP specification 1.3.0 to be used per 1.12.2023 does not require any changes and is supported out of the box.

I also provide an OSS phoss SMP server with a nice management GUI.

If you are looking for a standalone query tool, https://github.com/phax/smp-query-webapp is what you may have a look at.

peppol-directory-businesscard

This was introduced in v9.1.0

This project holds the different versions of the Peppol Directory Business Card data model, as well as one generic model.

peppol-mlr

This was introduced in v9.1.2

This project holds utility classes to read and write a Peppol Message Level Response (MLR) as defined in https://docs.peppol.eu/poacc/upgrade-3/profiles/36-mlr/

  • Class PeppolMLRBuilder can be used to build a Peppol MLR document - with or without line details. For each LineResponse the specialized builder class PeppolMLRLineResponseBuilder is available.
  • Class PeppolMLRMarshaller can be used to serialize MLR messages from and to XML. It is based on the ph-ubl marshaller.

See https://github.com/phax/peppol-commons/blob/master/peppol-mlr/src/test/java/com/helger/peppol/mlr/PeppolMLRBuilderTest.java for an example how to use the classes.

dbnalliance-xhe

This was introduced in v9.5.0

This project holds support for reading and writing DBNAlliance XHE header. This is the DBNAlliance version of peppol-sbdh based on the ph-xhe library.

Configuration

Configuration resolution (since v8.2.0)

The SMP client (both Peppol and OASIS BDXR) uses the file application.properties for configuration. The file smp-client.properties is also evaluated for backwards-compatibility reasons but with lower priority.

See https://github.com/phax/ph-commons#ph-config for the new resolution logic.

Configuration resolution (pre v8.2.0)

The SMP client (both Peppol and OASIS BDXR) uses the file smp-client.properties for configuration. The default file resides in the folder src/main/resources of this project. You can change the path of the properties file by setting the environment variable SMP_CLIENT_CONFIG (since v7.0.7), the system property peppol.smp.client.properties.path (since v4.3.5), the system property smp.client.properties.path (available as of v4.2.0) to the absolute path of the configuration file (e.g. by specifying -Dsmp.client.properties.path=/var/www/smpclient.properties on Java startup). The name of the file does not matter, but if you specify a different properties file please make sure that you also specify an absolute path to e.g. the trust store!

Configuration properties

It supports the following properties:

  • smpclient.truststore.type: the type of key store to be used. Possible values are JKS, PKCS12 and BCFKS. Defaults to JKS.

  • smpclient.truststore.path: the location of the Peppol trust store (of the specified type) to be used. If this property is not defined, the value defaults to truststore/complete-truststore.jks. By default the SMP client supports the following built-in trust stores (in library peppol-commons):

    • truststore/complete-truststore.jks - contains the trust certificates for Peppol production and pilot (root, AP, SMP, Directory, SML)
    • truststore/2018/smp-prod-truststore.jks - contains the trust certificates for Peppol production only (root, SMP, Directory, SML)
    • truststore/2018/smp-pilot-truststore.jks - contains the trust certificates for Peppol pilot only (root, SMP, Directory, SML)
  • smpclient.truststore.password: the password to access the trust store. By default the password peppol is used. This password is valid for all built-in trust stores mentioned above.

  • http.proxy.host (before v8.7.2: http.proxyHost): the host name or IP address to be used as a HTTP proxy for all hosts. If you need proxy exemptions use the http.proxy.nonProxyHosts configuration.

  • http.proxy.port (before v8.7.2: http.proxyPort): the port of the HTTP proxy. The port must be specified and has no default value. If you need proxy exemptions use the http.proxy.nonProxyHosts configuration.

  • http.proxy.username (before v8.7.2: http.proxyUsername): the username for the HTTP proxy. This property takes only effect if proxy host and proxy port are defined.

  • http.proxy.password (before v8.7.2: http.proxyPassword): the password for the HTTP proxy. This property takes only effect if proxy host, proxy port and proxy username are defined.

  • http.proxy.nonProxyHosts (before v8.7.2: http.nonProxyHosts) (since v6.2.4): A pipe separated list of non-proxy hosts. E.g. localhost|127.0.0.1.

  • [deprecated since v8.7.2] http.useSystemProperties (since v5.2.4): if true the system properties (=JVM properties) for HTTP configuration are used for setting up the connection. This implies that the properties http.proxyHost, http.proxyPort, http.proxyUsername and http.proxyPassword are ineffective! The default value is false. Deprecated since v8.7.2

  • http.connect.timeout.ms (since v7.0.4): set the connect timeout in milliseconds. The default value is 5000 meaning 5 seconds.

  • http.response.timeout.ms (since v8.8.0; before http.request.timeout.ms): set the response timeout in milliseconds. The default value is 10000 meaning 10 seconds.

Specifying a proxy server

A proxy server can be specified in two ways:

  • A single proxy server for all hosts - no exemptions. This can be specified in the configuration file for all SMPClient instances or per SMPClient instance (same for BDXR client - for all clients based on AbstractGenericSMPClient).
  • A more complex setup based on the JVM system properties (based on https://docs.oracle.com/javase/8/docs/api/java/net/doc-files/net-properties.html). This can also be specified in the configuration file to enable the usage for all SMPClient instances or on a per-instance basis.

Specify a global proxy server The SMP client supports a proxy server. By default the proxy specified in the configuration file (see above) is used (since v4.3.0).

Alternatively call the method setProxy (org.apache.http.HttpHost) on an SMPClient or SMPClientReadOnly. This means you can specify the proxy on a per-call basis. Proxy authentication is available since v5.2.5 by invoking setProxyCredentials (org.apache.http.auth.Credentials) on the SMP or BDXR client.

Example usage

Get the endpoint URL for a participant using a special document type and process:

    // The Peppol participant identifier
    final PeppolParticipantIdentifier aPI_AT_Test = PeppolParticipantIdentifier.createWithDefaultScheme ("9915:test");

    // Create the main SMP client using the production SML
    final SMPClientReadOnly aSMPClient = new SMPClientReadOnly (PeppolURLProvider.INSTANCE,
                                                                aPI_AT_Test,
                                                                ESML.DIGIT_TEST);
    final String sEndpointAddress = aSMPClient.getEndpointAddress (aPI_AT_Test,
                                                                   EPredefinedDocumentTypeIdentifier.INVOICE_EN16931_PEPPOL_V30,
                                                                   EPredefinedProcessIdentifier.BIS3_BILLING,
                                                                   ESMPTransportProfile.TRANSPORT_PROFILE_PEPPOL_AS4_V2);
    // Endpoint address should be "https://test.erechnung.gv.at/as4"
    System.out.println ("The Austrian government test AS4 AP that handles invoices in Peppol BIS 3 is located at: " +
                        sEndpointAddress);

If you don't need the DNS lookup you can use the URL of the SMP directly (equivalent to the previous example):

    // The Peppol participant identifier
    final PeppolParticipantIdentifier aPI_AT_Test = PeppolParticipantIdentifier.createWithDefaultScheme ("9915:test");

    // Create the main SMP client using the production SML
    final SMPClientReadOnly aSMPClient = new SMPClientReadOnly (URLHelper.getAsURI ("http://B-85008b8279e07ab0392da75fa55856a2.iso6523-actorid-upis.acc.edelivery.tech.ec.europa.eu"));
    final String sEndpointAddress = aSMPClient.getEndpointAddress (aPI_AT_Test,
                                                                   EPredefinedDocumentTypeIdentifier.INVOICE_EN16931_PEPPOL_V30,
                                                                   EPredefinedProcessIdentifier.BIS3_BILLING,
                                                                   ESMPTransportProfile.TRANSPORT_PROFILE_PEPPOL_AS4_V2);

    // Endpoint address should be "https://test.erechnung.gv.at/as4"
    System.out.println ("The Austrian government test AS4 AP that handles invoices in Peppol BIS 3 is located at: " +
                        sEndpointAddress);

Building from source

This project is meant to be build by Maven 3.x. It requires at least Java 1.8 to be build. To build simply call mvn clean install in the root folder.

When integrating this in your IDE, ensure to run mvn process-sources first, so that the automatically generated files are present. For the subprojects peppol-id, peppol-commons, peppol-sbdh and peppol-sml-client add target/generated-sources/xjc to your buildpath afterwards.

Maven usage

Add the following to your pom.xml to use this artifact, replacing x.y.z with the latest version number (see below):

<dependency>
  <groupId>com.helger.peppol</groupId>
  <artifactId>peppol-id</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.peppol</groupId>
  <artifactId>peppol-commons</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.peppol</groupId>
  <artifactId>peppol-testfiles</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.peppol</groupId>
  <artifactId>peppol-sbdh</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.peppol</groupId>
  <artifactId>peppol-sml-client</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.peppol</groupId>
  <artifactId>peppol-smp-client</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.peppol</groupId>
  <artifactId>peppol-directory-businesscard</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.peppol</groupId>
  <artifactId>peppol-mlr</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.peppol</groupId>
  <artifactId>dbnalliance-xhe</artifactId>
  <version>x.y.z</version>
</dependency>

Alternatively use the following code in your dependencyManagement section to use it as a BOM:

<dependency>
  <groupId>com.helger.peppol</groupId>
  <artifactId>peppol-commons-parent-pom</artifactId>
  <version>x.y.z</version>
  <type>pom</type>
  <scope>import</scope>
</dependency>

Note: prior to v8.1.0 the Maven groupId was com.helger.

The binary version of this library can be found on https://repo1.maven.org/maven2/com/helger/peppol/ They depend on several other libraries so I suggest you are going for the Maven source integration.

References

News and noteworthy

  • v9.5.0 - work in progress
    • Added new submodule dbnalliance-xhe. See #53 - thx @robinsongarciax
    • Marked certain ESMPTransportProfile entries as "deleted"
    • Added new SMP client exception SMPClientParticipantNotFoundException to indicate non-existing Service Groups
    • Updated to OpenPeppol eDEC Code Lists v8.9
  • v9.4.0 - 2024-05-24
    • Renamed IParticipantIdentifierScheme to IPeppolParticipantIdentifierScheme
    • Tried to make the usage of IIdentifierFactory more customizable
    • Made AbstractRevocationCheckBuilder and PeppolRevocationCache top-level classes
    • Extracted class TrustedCACertificates to hold a list of certificates
    • Deprecated a lot of methods in PeppolCertificateChecker in favour of new APIs. Main idea is to simplify multi-certificate handling.
  • v9.3.6 - 2024-04-24
    • Added new class PeppolLaxIdentifierFactory
    • Added new enum entry ESMPIdentifierType.PEPPOL_LAX for SMP handling. See smp#275.
  • v9.3.5 - 2024-04-23
    • Updated to OpenPeppol eDEC Code Lists v8.8
  • v9.3.4 - 2024-04-04
    • Added new classes to support the DBNA network as well (DBNAURLProviderSMP, EDBNASML)
    • Allowing empty identifier schemes as being present (for DBNA). See IIdentifier.hasScheme ()
  • v9.3.3 - 2024-03-29
    • Ensured Java 21 compatibility
  • v9.3.2 - 2024-03-29
    • Added the DBNA AS4 v1 profile to ESMPTransportProfile. See #52
  • v9.3.1 - 2024-03-04
    • Updated to ph-ubl 9.0.0 (affects only peppol-mlr)
    • Changed the default checking mode in CertificateRevocationChecker from CRL_BEFORE_OCSP to CRL to avoid any fallback to OCSP
    • Improved logging of certificate revocation checks
  • v9.3.0 - 2024-01-22
    • PredefinedProcessIdentifierManager now internally works with the full URI encoded process ID and not just the value
    • Improved the CRL caching API and unified it with the Peppol certificate revocation checker cache
    • Via CRLCache constructor a custom CRLDownloader can be configured. The default solution uses the Java runtime HttpURLConnection.
  • v9.2.3 - 2024-01-10
    • Changed the default checking mode in CertificateRevocationChecker from OCSP to CRL_BEFORE_OCSP due to phax/phase4#124 (comment)
  • v9.2.2 - 2024-01-08
    • Extended PeppolSBDHDocumentReader API to allow to disable check for mandatory C1 Country Code via .setCheckForCountryC1(boolean)
  • v9.2.1 - 2024-01-07
    • Updated to ph-web 10.1.7
    • Added interface method ISMPServiceMetadataProvider.getWildcardServiceMetadataOrNull
  • v9.2.0 - 2024-01-02
    • Made COUNTRY_C1 in SBDH mandatory
    • Updated the Peppol default trust stores to remove the old, soon expiring GlobalSign certificates. It was for a previous SML/SMK setup only.
    • Moved the logic of PeppolSBDHDocument to PeppolSBDHData. The old class became deprecated.
    • Extracted the Peppol SBDH validation into a separate method PeppolSBDHDocumentReader.validateData
    • Extracted class PeppolWildcardSelector in preparation to support wildcard matching with different algorithms
  • v9.1.3 - 2023-12-10
    • Fixed the "state" in ESMPTransportProfile predefined values
  • v9.1.2 - 2023-12-06
    • Added new submodule peppol-mlr. It contains data structures to read and write Peppol Message Level Response messages.
  • v9.1.1 - 2023-11-22
    • Added the "peppol-directory-businesscard" to the known submodules in the BOM part of pom.xml
    • Updated to OpenPeppol eDEC Code Lists v8.7
    • Improved the Peppol Document Type Identifier value syntax checks - for busdox-docid-qns and for peppol-doctype-wildcard
    • Improved the Peppol Process Identifier value syntax checks
    • Identifier value checks can now be different per identifier scheme
  • v9.1.0 - 2023-11-09
    • Added new submodule peppol-directory-businesscard. It is meant to replace the phoss-directory-businesscard one.
  • v9.0.8 - 2023-08-22
    • Updated to OpenPeppol eDEC Code Lists v8.6
    • Added CRLHelper.setCRLOfURL to manually add an externally downloaded CRL
    • Added CRLHelper.getCRLFromURL now considers a maximum caching duration (defaults to 1 day)
    • Methods PredefinedDocumentTypeIdentifierManager.getDocumentTypeIdentifierOfID and PredefinedDocumentTypeIdentifierManager.containsDocumentTypeIdentifierWithID now require the full identifier, incl. the scheme, to work around potentially new ambiguities
    • Extended CertificateRevocationChecker builder with crlCachingDuration(Duration)
    • Added new enum EPeppolCertificateCheckResult.NOT_CHECKED for phase4/#159
  • v9.0.7 - 2023-08-01
    • Updated to ph-commons 11.1
  • v9.0.6 - 2023-05-25
    • Improved support for the SBDH field COUNTRY_C1
  • v9.0.5 - 2023-05-17
    • Added possibility to customize secure validation in SMPHttpResponseHandlerSigned (for the Java 17 SHA-1 issue)
    • Added possibility to customize SMP Client to enabled or disable the secure validation via setSecureValidation (for the Java 17 SHA-1 issue)
    • Added support for the SBDH field COUNTRY_C1 to fulfill the requirements of the Peppol Business Message Envelope 2.0 specification
    • Fixed the splitting of Peppol Document Type Identifier values, so that :: can occur in Customization IDs
  • v9.0.4 - 2023-04-30
    • Deprecated classes PeppolSBDHPayload(Reader|Writer|Validator) and EPeppolSBDHPayloadType
    • Added new classes PeppolSBDHPayloadBinaryMarshaller and PeppolSBDHPayloadTextMarshaller instead
    • Extended the API of class PeppolCertificateChecker to be able to register custom trusted Peppol certificates, e.g. for the French PoC
  • v9.0.3 - 2023-04-07
    • Updated to OpenPeppol eDEC Code Lists v8.5.1
  • v9.0.2 - 2023-04-05
    • Updated to OpenPeppol eDEC Code Lists v8.5
    • Moved internal resources to different folders for overall unifications
  • v9.0.1 - 2023-03-27
    • Updated to OpenPeppol eDEC Code Lists v8.4 with XSD 2.1
  • v9.0.0 - 2023-02-19
    • Using Java 11 as the baseline
    • Updated to ph-commons 11
    • Updated to JAXB 4.0 and JAX-WS 4.0
    • Removed deprecated classes and methods
  • v8.8.6 - 2023-05-25 [backport]
    • Improved support for the SBDH field COUNTRY_C1
  • v8.8.5 - 2023-05-16 [backport]
    • Added support for the SBDH field COUNTRY_C1 to fulfill the requirements of the Peppol Business Message Envelope 2.0 specification
  • v8.8.4 - 2023-01-23
    • Updated to OpenPeppol eDEC Code Lists v8.3.1
  • v8.8.3 - 2023-01-20
    • Added the new enum ESMPTransportProfileState
    • Deprecated ISMPTransportProfile.isDeprecated() and added ISMPTransportProfile.getState() instead
    • Updated to OpenPeppol eDEC Code Lists v8.3
  • v8.8.2 - 2022-11-24
    • Improved error handling when loading an ill-configured SMP client truststore
  • v8.8.1 - 2022-11-01
    • Updated to ph-web 9.7.1
    • Extended SMPJsonResponse with the versions for BDXR2
    • Deprecated SMP transport profiles busdox-transport-as2-ver1p0 (Peppol AS2 v1) and busdox-transport-as2-ver2p0 (Peppol AS2 v2)
    • Extended PeppolSBDHDocument API
    • Extended PeppolSBDHDocumentWriter API with a "favour speed" option
    • Added support for wildcard querying (DDTS) in Peppol SMP client SMPClientReadOnly.getWildcardServiceMetadataOrNull
  • v8.8.0 - 2022-08-17
    • Updated to ph-web 9.7.0
    • Updated to Apache HttpClient 5.x
    • The setters for the trust store in the SMP clients now accept null
    • Renamed the SMP client configuration property from http.request.timeout.ms to http.response.timeout.ms
  • v8.7.6 - 2022-07-12
    • Updated to OpenPeppol eDEC Code Lists v8.2
  • v8.7.5 - 2022-05-25
    • Deprecated package com.helger.peppol.codelist in submodule peppol-commons because the code lists are out of date
    • Updated to OpenPeppol eDEC Code Lists v8.1
  • v8.7.4 - 2022-03-29
    • Fixed an error in BDXR2ClientReadOnly.getServiceMetadata when using specific identifier classes
  • v8.7.3 - 2022-03-28
    • Added a new generic SMP extension data model that works with Peppol, OASIS BDXR SMP v1 and OASIS BDXR SMP v2.
    • Added new class BPCURLProviderSMP that works for the BPC market pilot was added
    • Renamed the classes BDXR2Service(Group|Metadata)Marshaller to BDXR2MarshallerService(Group|Metadata) for consistency with BDXR 1
    • Added a missing namespace mapping to BDXR2NamespaceContext
    • Classes BDXR1NamespaceContext and BDXR2NamespaceContext now offer a static getInstance method
    • Added support for handling ServiceActivationDate and ServiceExpirationDate in the Peppol SMP client. See issue #38 - thx @Florianisme
  • v8.7.2 - 2022-03-06
    • Updated to BouncyCastle 1.70
    • Renamed SMP client proxy properties, to match a standard way. The old properties are still supported for backwards compatibility.
      • http.proxyHost is now http.proxy.host
      • http.proxyPort is now http.proxy.port
      • http.proxyUsername is now http.proxy.username
      • http.proxyPassword is now http.proxy.password
      • http.nonProxyHosts is now http.proxy.nonProxyHosts
      • http.useSystemProperties is now deprecated
  • v8.7.1 - 2022-01-20
    • Extended base interfaces of predefined identifiers to reflect the new layout.
  • v8.7.0 - 2022-01-20
    • Fixed some SonarCloud issues
    • Updated to OpenPeppol eDEC Code Lists v8.0 with the new data layout
  • v8.6.4 - 2021-10-18
    • Added new predefined truststores for SMPs: truststore/2018/smp-pilot-truststore.jks and truststore/2018/smp-prod-truststore.jks
    • Improved the error messages when reading Peppol SBDH messages.
  • v8.6.3 - 2021-09-27
    • Verifying all contained Signature elements of an SMP response
    • Made the JAXB Marshallers of the SMP clients customizable
  • v8.6.2 - 2021-07-06
    • Avoid NPE in SMPClientReadOnly.getServiceMetadata if the returned server response is not XML
    • Improved debug logging in SMPHttpResponseHandlerSigned in case of error
    • Added possibility in TrustStoreBasedX509KeySelector to specify a date and time, for which the checks should be performed
  • v8.6.1 - 2021-05-10
    • Updated to OpenPeppol eDEC Code Lists v7.5
  • v8.6.0 - 2021-05-02
    • Updated to ph-commons 10.1
    • Changed the JAXB binding for XML Schema date time to XMLOffset*
  • v8.5.2 - 2021-04-30
    • Updated the truststore by removing the old (expired) Let's Encrypt root certificates.
    • Changed the name of the SMP client configuration properties as follows (leaving the old ones in place with a warning message):
      • truststore.type was renamed to smpclient.truststore.type
      • truststore.path was renamed to smpclient.truststore.path
      • truststore.password was renamed to smpclient.truststore.password
    • Extracted class CertificateRevocationChecker from PeppolCertificateChecker to check certificates
    • Added support for validating with CRL as well
  • v8.5.1 - 2021-03-26
    • Updated to OpenPeppol eDEC Code Lists v7.4
  • v8.5.0 - 2021-03-22
    • Updated to ph-commons 10
    • Changed the JAXB binding for XML Schema date time to Offset*
  • v8.4.1 - 2021-02-19
    • Updated the TrustStore to support the new Let's Encrypt root certificates for Peppol Directory
  • v8.4.0 - 2021-02-16
    • Added constants CODE_LIST_VERSION and CODE_LIST_ENTRY_COUNT to all the Peppol EPredefined...Identifier enums
    • Extended public API of SMPJsonResponse
    • Extracted new sub-modules peppol-id-datatypes and peppol-smp-datatypes with just the generated JAXB classes
    • Changed created package from com.helger.peppolid to com.helger.xsds.peppol.id1
    • Changed created package from com.helger.smpclient.peppol.jaxb to com.helger.xsds.peppol.smp1
  • v8.3.1 - 2020-12-04
    • Started adding support for peppol-doctype-wildcard
    • Fixed the consistency check of the "TypeVersion" element in Peppol SBDH to also work for non-UBL documents
  • v8.3.0 - 2020-11-25
    • Reworked the revocation checking configuration for Peppol certificates. Now it is more flexible.
  • v8.2.7 - 2020-11-23
    • Improved some debug logging
    • Extended PeppolCertificateChecker API to be used more flexible
    • Extended checks in PeppolKeyStoreHelper
  • v8.2.6 - 2020-11-18
    • Updated to ph-web 9.5.0
    • Extended SMPClientReadOnly and BDXRClientReadOnly with further static methods
    • Updated to eDEC code lists 7.3
  • v8.2.5 - 2020-10-02
    • Fixed the data model created by SMPClient.saveServiceGroup and BDXRClient.saveServiceGroup in the overload with only the participant identifier
  • v8.2.4 - 2020-09-28
    • Extended class PeppolSBDHDocument to also read the special BinaryContent and TextContent nodes easily
  • v8.2.3 - 2020-09-25
    • Allow to disable the value checks when reading Peppol SBDH documents
  • v8.2.2 - 2020-09-17
    • Updated to Jakarta JAXB 2.3.3
    • Updated to Jakarta JAXWS 2.3.3
    • Updated to ph-sbdh 4.1.1
    • Removed deprecated class PeppolDNSResolutionException
  • v8.2.1 - 2020-09-14
    • 8.2.0 whysoever didn't make it to Maven Central
  • v8.2.0 - 2020-09-10
    • Removed deprecated class PeppolKeyStoreHelper.Config2010
    • Removed all deprecated and replaced methods
    • Improved debug logging in the SMP client
    • SMP client configuration is now read from global configuration and is not necessarily constraint to smp-client.properties file. The use of the system properties peppol.smp.client.properties.path, smp.client.properties.path and SMP_CLIENT_CONFIG will no longer work. Use the system property config.file or the environment variable CONFIG_FILE instead (backwards incompatible change)
    • Class PeppolDNSResolutionException was replaced with SMPDNSResolutionException
  • v8.1.8 - 2020-09-02
    • Fixed XML Schema validation of BDXR SMP v2 client
  • v8.1.7 - 2020-08-30
    • Updated to ph-commons 9.4.7
    • Using Java 8 date and time classes for JAXB created classes
    • Updated to the latest BDMSL WSDL files
    • Reworked the DNS URL provider class hierarchy for greater flexibility. New base class is now ISMPURLProvider.
  • v8.1.6 - 2020-08-25
    • Added re-usable SMP result to JSON conversion
  • v8.1.5 - 2020-08-20
    • Updated to eDEC Code Lists 7.2
  • v8.1.4 - 2020-07-15
    • Updated to eDEC Code Lists 7.1
  • v8.1.3 - 2020-07-11
    • Fixed a missing whitespace in soapAction for SML registration of participants - issue - regression from 8.0.6
  • v8.1.2 - 2020-07-06
    • The creation of the SMP Migration Key was adopted to the effective BDMSL implementation - issue #37
  • v8.1.1 - 2020-06-04
    • Made SMP/BDXR client truststore configurable via the code - issue #35
  • v8.1.0 - 2020-05-26
    • Changed the Maven groupId to com.helger.peppol
    • Updated to ph-web 9.3.0 (using ph-dns) (new Maven groupId)
    • Updated to ph-xsds 2.3.0 (new Maven groupId)
    • Deprecated class NAPTRResolver in favour of the new NaptrResolver
    • IBDXLURLProvider takes custom DNS server now as InetAddress instead of as String
  • v8.0.7 - 2020-05-06
    • Extended predefined document type ID API
    • Updated Peppol codelists to contain deprecation status on process identifiers
  • v8.0.6 - 2020-05-05
    • Updated to official Peppol Codelist v7
    • Updated to the official Peppol Codelist XSD files
    • Made NAPTR record "Service name" comparison case insensitive to honor RFCs
  • v8.0.5 - 2020-04-22
    • Extracted BDXR1NamespaceContext and BDXR2NamespaceContext
    • Made XML Schema validation for SMP clients customizable
    • By default the XML Schema validation for querying service metadata is now enabled (breaking change)
    • Removed methods deprecated in v7.x
  • v8.0.4 - 2020-04-16
    • Extended the SMP client API with getAllDocumentTypes from a service group
  • v8.0.3 - 2020-04-01 (not a joke)
    • Updated to ph-commons 9.4.1
  • v8.0.2 - 2020-03-03
    • Updated to dnsjava 3.0.1
    • Added new enum ESMPIdentifierType
    • Added ESMPAPIType.getDisplayName()
    • Added the upcoming CEF SMK/SML cipher suites
    • A problem with the OCSP checking of SMP certificates was resolved
    • Changed the certificate revocation cache to have a timeout of 6 hours
  • v8.0.1 - 2020-02-16
    • Updated to ph-web 9.1.9
    • Changed the SMP client HTTP configuration to use the new HttpClientSettings class
  • v8.0.0 - 2020-02-05
    • The SMP client configuration can now also be addressed via the SMP_CLIENT_CONFIG environment variable
    • Removed the Peppol PKI v2 certificates from the complete trust store as they expired in January 2020
    • Moved the SMP code from peppol-commons to peppol-smp-client and adopted package names
      • The peppol-smp-client project was total restructured - everything is now under package com.helger.smpclient
      • The generated classes for the Peppol SMP XSD were moved from com.helger.peppol.smp to com.helger.smpclient.peppol.jaxb
    • Unified licensing to Apache 2.0
  • v7.0.6 - 2020-01-17
    • Updated to Peppol Code List v6
    • Improved the SMP client API
    • Added possibility to customize the "follow redirects" setting of the SMP client
  • v7.0.5 - 2019-12-04
    • Added the new SMK TLS certificate chain to sml-truststore.jks and complete-truststore.jks
  • v7.0.4 - 2019-11-26
    • Made SMP client connection timeout and request timeout configurable via the configuration file (see #33)
    • The new Peppol V6 codelist has no dedicated process code list anymore
    • Integrated the classes PeppolCerticateChecker and EPeppolCertificateCheckResult from phase4 and extended them
    • The license of submodule peppol-commons changed from MPL 2.0 to Apache 2.0
  • v7.0.3 - 2019-11-05
    • Started adding support for Code Lists v6 (for preview purposes only)
    • Removed the explicit certificate from directory.peppol.eu because it is renewed too often (see issue #31)
    • Added new class PeppolCertificateHelper
    • Added possibility to customize the User Agent of SMP clients
    • Added X509 certificates as constants in PeppolKeyStoreHelper
  • v7.0.2 - 2019-08-16
    • Using more base types in certain APIs for better interoperability (binary incompatible change)
    • Updated to Peppol Code List v5
  • v7.0.1 - 2019-06-25
    • Fixed a naming issues for predefined identifier 0195
  • v7.0.0 - 2019-06-10
    • Started to rework identifier class hierarchies, interfaces and package assignments - the result is incompatible to the 6.x version
    • Started integrating OASIS BDXR SMP v2 CSD01 identifiers into the existing structure
    • Renamed EsensURLProvider to BDXLURLProvider
    • Using the OASIS BDXR SMP generated code from ph-xsds-bdxr-smp1 instead of including it manually
    • Updated to ph-xsds-* 2.2.3
    • Enabled XSD validation in JAXB marshallers by default
    • SMPClient and BDXRClient throw an Exception if the writable REST API parameters don't follow the XSD
    • Added new class BDXR2ClientReadOnly as SMP client for OASIS BDXR SMP v2 (WS 06) specification
    • Added new subprobject peppol-id that moved all the com.helger.peppol.identifier packages to com.helger.peppolid
  • v6.2.5 - 2019-05-07
    • Fixed Java 12 compatibility
  • v6.2.4 - 2019-05-05
    • SMPClient got the possibility to configure "non-proxy hosts" using the configuration file setting http.nonProxyHosts
    • Update the Directory trust store to contain the new server certificates for directory.peppol.eu and test-directory.peppol.eu
    • Added support for the new SMP transport profile busdox-transport-as2-ver2p0 (Peppol AS2 profile v2)
    • Peppol SBDH now supports reading UBL 2.2
    • Added support for new SBDH text and binary payloads as specified in Peppol Business Message Envelope v1.2
  • v6.2.3 - 2019-01-18
    • Updated to Peppol code lists version 4
  • v6.2.2 - 2018-11-30
    • Made process identifier scheme optional when using SimpleIdentifierFactory
  • v6.2.1 - 2018-11-22
    • Updated to ph-commons 9.2.0
    • Added a special truststore to access directory.peppol.eu and added this to the complete truststore as well
  • v6.2.0 - 2018-10-24
    • Added SMP transport profile "Peppol AS4 v2"
    • Removed all deprecated methods
    • Converted a runtime exception to a checked exception in IPeppolURLProvider.getDNSNameOfParticipant. The new exception class is called PeppolDNSResolutionException.
    • Added new class SMPClientBadResponseException
    • Optional SMP data structure XSD validation can be now enabled (see AbstractSMPMarshaller.setValidationEnabled and AbstractBDXRMarshaller.setValidationEnabled). By default it is disabled for backwards compatibility.
  • v6.1.4 - 2018-10-17
    • Updated to final code list V3
    • The files PeppolDocumentTypeIdentifier.* got new attribute names (name โ†’ profilecode, doctypeid โ†’ id, added scheme)
    • The files PeppolProcessIdentifier.* got new attribute names (name โ†’ profilecode, bisid is now optional, added scheme)
    • Automatically created EPredefinedTransportProfileIdentifier plus GC and XML for the transport profile list
  • v6.1.3 - 2018-09-26
  • v6.1.2 - 2018-05-15
    • Really fixed OSGI ServiceProvider configuration
    • Added interface IBDXLURLProvider
    • Updated the BDMSL service to the latest version
  • v6.1.1 - 2018-05-14
    • Fixed OSGI ServiceProvider configuration
    • Updated to ph-commons 9.1.0
  • v6.1.0 - 2018-05-04 (#StarWarsDay release)
    • Reworked internal Peppol document type identifier representation (API incompatibility; deleted OpenPeppolDocumentTypeIdentifierParts)
    • The new official Peppol code lists were integrated. Therefore EPredefinedIdentifierIssuingAgency was replaced with EPredefinedParticipantIdentifierScheme and IdentifierIssuingAgencyManager was renamed to ParticipantIdentifierSchemeManager
    • The document types were removed from the predefined process identifiers
    • The shortcut constants of the predefined process identifiers were slightly changed (the final "0" was removed, so BIS1A_V20 is now BIS1A_V2)
  • v6.0.4 - 2018-04-13
    • Added SSL certificates of SML into default truststore (truststore/complete-truststore.jks)
    • Replaced truststore SHA-1 files with SHA-256 checksum files
  • v6.0.3 - 2018-04-11
    • Codelist updated (added Estonian Company Code and Billing BIS v3)
  • v6.0.2 - 2018-03-06
    • Added support for SHA256 and SHA512 in TrustStoreBasedX509KeySelector for BDXR
    • Fixed error in BDXRClientReadOnly certificate parsing
  • v6.0.1 - 2018-02-13
    • Removed unused dependency to BouncyCastle
    • Added the new OpenPEPPOL root PKI v3 - valid from 2018-2028
    • Important: the paths to the preconfigured truststore paths have changed - see below for details
  • v6.0.0 - 2018-01-05
    • Updated to ph-commons 9.0.0
    • SMP client can now handle responses with BOM
    • Removed legacy project peppol-sml-client-swing again
    • Added Peppol AS4 transport protocol ID
    • All sub-projects previously licensed under EUPL 1.1 or MPL 1.1 (peppol-commons, peppol-smp-client and peppol-sml-client) are now licensed under MPL 2.0
  • v5.2.7 - 2017-07-21
    • Unified identifier handling concerning "" and null
  • v5.2.6 - 2017-05-30
    • Added possibility to deprecate transport profiles
  • v5.2.5 - 2017-05-25
    • Binds to ph-web 8.8.0
    • Added possibility to define SMP client proxy credentials(see issue #13)
    • Added legacy project peppol-sml-client-swing due to request
  • v5.2.4 - 2017-01-09
    • Binds to ph-commons 8.6.0
    • Updated to dnsjava 2.1.8
    • Added possibility to define usage of proxy system properties via configuration file (see issue #9)
  • v5.2.3 - 2016-12-28
    • Updated to BouncyCastle 1.56
    • Binds to ph-web 8.7.1
    • SMPClient and BDXRClient extended with writing API to create redirects
  • v5.2.2 - 2016-12-16
    • Added possibility to support more proxy settings via system properties (see issue #9)
  • v5.2.1 - 2016-11-21
    • Added possibility to disable SMP/BDXR client certificate check (see issue #8)
  • v5.2.0 - 2016-10-25
    • Reworked identifier API to improve case sensitivity handling (based on identifier scheme). The rules per identifier factory:
    • BDXR: identifiers based on participant identifier scheme iso6523-actorid-upis, document type identifier scheme bdx-docid-qns or process identifier scheme bdx-procid-transport are treated case insensitive
    • Peppol: identifiers based on participant identifier scheme iso6523-actorid-upis are treated case insensitive
    • simple: all identifiers are handled case sensitive.
  • v5.1.5 - 2016-10-17
    • Improved BDXR extension API
  • v5.1.4 - 2016-10-12
    • Added missing U-NAPTR resolution in EsensURLProvider - thanks to @jerouris for pointing that out
  • v5.1.3 - 2016-09-15
    • Changed Peppol identifier codelist to 1.2.1, because 1.2.2 was based on a misunderstanding
  • v5.1.2 - 2016-09-09
    • Updated to ph-commons 8.5.x
    • Updated Peppol identifier codelist to 1.2.2
  • v5.1.1 - 2016-08-21
    • Updated to ph-commons 8.4.x
    • Improved identifier handling for BDXR
  • v5.1.0 - 2016-08-01
  • v5.0.1 - 2016-07-26
  • v5.0.0 - 2016-07-12
  • v4.3.5 - 2016-02-26
    • Made the SMP query API more flexible so that e.g. the Peppol Directory BusinessCards can easily be queried; made the SMP Client more configurable.
  • v4.3.4 - 2016-01-26
    • Reduced the maximum migration key length from 100 to 24 (new SMK 3 requirement) and adopted the API to use String instead of UUID
  • v4.3.3 - 2015-12-11
    • Improved the support for BDXR SMP stuff
  • v4.3.2 - 2015-11-26
    • Improved the support for custom SMP transport profiles
    • Updated the BDMSL additional services WSDL to the latest 3.1.0 version
  • v4.3.1 - 2015-10-30
    • Added new BDMSL client to access the new "/cipaservice" in a convenient way (class BDMSLClient in project peppol-sml-client)
    • Loosened the regular expression for participant identifier schemes
    • Added a new SML participant delete method with SMP ID to work around an SMK 3.0.0 problem
  • v4.3.0 - 2015-10-29
    • Added support for CIPA BDMSL 3.0 with the wsse:Security header
    • Added BDXR SMP client
    • Integrated the BDXR SMP classes into peppol-commons
    • Updated the BDMSL Service WSDL corresponding to the CIPA 3.0.0 release

My personal Coding Styleguide | It is appreciated if you star the GitHub project if you like it.

peppol-commons's People

Contributors

phax avatar pstetsuk-exadel avatar robinsongarciax avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

peppol-commons's Issues

Migration identifier max length

Now when I am trying to to a prepareMigrate, I get an error from the SMK :

[ERR-106] The maximum length of the migration code is 24 characters

I guess this is also a new change in the SMK. I changed the code to use a string rather than a UUID for the migration process...

Allow a forward proxy with username/password to be specified on a lookup call

In SoftLayer (and other cloud environments I suspect), all our outbound connections goes through a forward proxy, so this look up being an outbound call, needs to go thru that fwd proxy. Furthermore, in our case we read the proxy values from a DB at runtime. Consequently, we need a way to pass the proxy host, port, username and password to the smp-client on the lookup call which would then be used to make the http connection.

Finally, we have multiple environments with different requirements. Some are internal only and don't use a proxy, some use a proxy, but don't require userid and password, and some require the proxy and the userid/password. It would be nice if the lookup ignores any parameters that have a null value, for example the proxy host and port could be present with some values, whereas username and password might not there there..so it should just use the proxy host and port in that case.

SMP client - disable certificate check

I am having some trouble with the SMP client. Unfortunately, the SMP certificate has expired and I have no reply from openPEPPOL on the renewal, which makes the e-Tendering pilot a bit risky.

If there is an option on the SMP client, not to check for the certificate validity would be great. In general this might be a good option for development and testing.

sml client libraries in wildfly-10: jaxb error (with apache cxf)

H Philip,

in wildfly-10 using your sml client libraries, we have this error:

The element name {http://busdox.org/transport/identifiers/1.0/}ParticipantIdentifier has more than one mapping.
this problem is related to the following location:
at public javax.xml.bind.JAXBElement com.helger.peppol.identifier.ObjectFactory.createParticipantIdentifier(com.helger.peppol.identifier.ParticipantIdentifierType)
at com.helger.peppol.identifier.ObjectFactory
this problem is related to the following location:
at public javax.xml.bind.JAXBElement com.helger.peppol.smlclient.participant.ObjectFactory.createParticipantIdentifier(com.helger.peppol.identifier.ParticipantIdentifierType)
at com.helger.peppol.smlclient.participant.ObjectFactory

In your code you have the same namespace for ParticipantIdentifier in two module:

  • peppol-commons
  • peppol-sml

I'm creating a branch, to remove the duplicated namespace (using a static modules - named peppol-jaxb), because i don't know how do it, in the xjc generated code from maven.

Best Regards

Fiorenzo

Missing classes CompleteServiceGroupType etc

Hi and thanks for your effort of writing this library! I'm excited to start using it.

I've cloned your code and followed the build instructions. However there are classes missing (see attached screenshot) and the same names are found in xsd:s. I suspect that these classes are supposed to be generated from the xsd:s. Is there a build target or something similar that will generate the missing classes?

missingclasses

Socket timed out exception while connecting to SMP when doing multiple transactions

  1. Performed some 20 requests
  2. Notice that only 19 worked and one out of 20 transactions failed with "Request send error Socket operation timed out before it could be completed"

Observed this stack trace in the request process log:
...
Caused by: com.ibm.b2b.comms.http.sender.exception.ConnectFailedException: Connection Failure for connection properties [RemoteHost:B-cddd3d2e86e5fbd4cdabf61d42da5c79.iso6523-actorid-upis.acc.edelivery.tech.ec.europa.eu,RemotePort:80,Localhost:9.113.28.69]
at com.ibm.b2b.comms.http.sender.impl.channelfw.Worker.doConnectAndSend(Worker.java:112)
at com.ibm.b2b.comms.http.sender.impl.SenderImpl.send(SenderImpl.java:54)
at Proxy88cb390e_44d8_4241_b85b_34cf8126c2dd.send(Unknown Source)
at Proxy88cb390e_44d8_4241_b85b_34cf8126c2dd.send(Unknown Source)
at Proxy57bf273e_2ad9_4144_a944_09eaa56d866c.send(Unknown Source)
at com.ibm.b2b.comms.emb.handler.impl.HTTPSenderHandler.process(HTTPSenderHandler.java:94)
... 16 more
Caused by: java.net.SocketTimeoutException: Socket operation timed out before it could be completed
at com.ibm.b2b.ws.tcpchannel.internal.ConnectChannelSelector.checkForTimeouts(ConnectChannelSelector.java:230)
at com.ibm.b2b.ws.tcpchannel.internal.ChannelSelector.run(ChannelSelector.java:237)
... 1 more

0196:<snip> Endpoint not selected

Hi Philip,

The SMP logs the following:

[2023-08-10T16:57:25,571] [smc-discovery-service] [INFO ] [qtp131953431-26] Performing SMP query at '/iso6523-actorid-upis%3A%3A0196%3A/services/busdox-docid-qns%3A%3Aurn%3Aoasis%3Anames%3Aspecification%3Aubl%3Aschema%3Axsd%3AInvoice-2%3A%3AInvoice%23%23urn%3Acen.eu%3Aen16931%3A2017%23compliant%23urn%3Afdc%3Apeppol.eu%3A2017%3Apoacc%3Abilling%3A3.0%3A%3A2.1' -- com.helger.smpclient.httpclient.AbstractGenericSMPClient.executeRequest(AbstractGenericSMPClient.java:318)

which with curl is

$ curl http://b-a0bce7088e2d349c92b03cf2b308df89.iso6523-actorid-upis.edelivery.tech.ec.europa.eu//iso6523-actorid-upis%3A%3A0196%3A<snip>/services/busdox-docid-qns%3A%3Aurn%3Aoasis%3Anames%3Aspecification%3Aubl%3Aschema%3Axsd%3AInvoice-2%3A%3AInvoice%23%23urn%3Acen.eu%3Aen16931%3A2017%23compliant%23urn%3Afdc%3Apeppol.eu%3A2017%3Apoacc%3Abilling%3A3.0%3A%3A2.1

The result is

<?xml version="1.0" encoding="utf-8"?>
<SignedServiceMetadata
	xmlns:xsd=http://www.w3.org/2001/XMLSchema
	xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
	xmlns=http://busdox.org/serviceMetadata/publishing/1.0/>
	<ServiceMetadata>
		<ServiceInformation>
			<ParticipantIdentifier scheme="iso6523-actorid-upis"
				xmlns=http://busdox.org/transport/identifiers/1.0/>0196:<snip>
			</ParticipantIdentifier>
			<DocumentIdentifier scheme="busdox-docid-qns"
				xmlns=http://busdox.org/transport/identifiers/1.0/>urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1
			</DocumentIdentifier>
			<ProcessList>
				<Process>
					<ProcessIdentifier scheme="cenbii-procid-ubl"
						xmlns=http://busdox.org/transport/identifiers/1.0/>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
					</ProcessIdentifier>
					<ServiceEndpointList>
						<Endpoint transportProfile="busdox-transport-as2-ver1p0">
							<EndpointReference
								xmlns=http://www.w3.org/2005/08/addressing>
								<Address>[https://endpoint.sendill.is/as210ep/opas2endpoint</Address](https://endpoint.sendill.is/as210ep/opas2endpoint%3c/Address)>
							</EndpointReference>
							<RequireBusinessLevelSignature>false</RequireBusinessLevelSignature>
							<MinimumAuthenticationLevel>1</MinimumAuthenticationLevel>
							<Certificate>MIIFsTCCA5mgAwIBAgIQEya3SdsericU/zq5pFFVizANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQT3BlblBFUFBPTCBBSVNCTDEkMCIGA1UEAxMbUEVQUE9MIEFDQ0VTUyBQT0lOVCBDQSAtIEcyMB4XDTIyMDcyMjAwMDAwMFoXDTI0MDcxMTIzNTk1OVowWzELMAkGA1UEBhMCSVMxGTAXBgNVBAoMEFVuaW1hemUgU29mdHdhcmUxHTAbBgNVBAsMFFBFUFBPTCBQUk9EVUNUSU9OIEFQMRIwEAYDVQQDDAlQU0UwMDAwNjEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBCuu1xs+oqNZM9WnSyzg/zbzb7fM9dWu6ULLFvUA7SrldYgenG1HW/xizn8ixF5+7hWi8RpVvqrIJCTmOv4XPtvVCqmwCebmLfvZKvRcLNVTqkgTncNfQLbeAACjLsVKQoEneCmVOlPXZSS4msSzL+bqnKytr6fuxpjKSHNH49qjUnTb4y9ny+DzZgQueAv6M+m5dnd7xxFqYkDg+xDerjo96nA8kTPpTNbfbjZJ2WZATXkoEQk1iWEMJ9SyIeFABPPJ6TV83TgoXggSwKlNmEnYtJQQcVHrwGc2HOPepNJIbHWAYHCDHJoefB8D2HfZvY+9EG2rmB4dln3KmjwtvAgMBAAGjggF8MIIBeDAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIDqDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDAjAdBgNVHQ4EFgQUBMuOXV1trYDQN3OS5PeXcBaP3wAwXQYDVR0fBFYwVDBSoFCgToZMaHR0cDovL3BraS1jcmwuc3ltYXV0aC5jb20vY2FfN2JlZGNiY2M0ZjcyNGVmZTMwZDUwMDZkZGE2ODFiYTAvTGF0ZXN0Q1JMLmNybDA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9wa2ktb2NzcC5zeW1hdXRoLmNvbTAfBgNVHSMEGDAWgBSHJd9bI6bEO/mf3xulIJHd5PQ8gTAtBgpghkgBhvhFARADBB8wHQYTYIZIAYb4RQEQAQIDAQGBstf0NhYGOTU3NjA4MDkGCmCGSAGG+EUBEAUEKzApAgEAFiRhSFIwY0hNNkx5OXdhMmt0Y21FdWMzbHRZWFYwYUM1amIyMD0wDQYJKoZIhvcNAQELBQADggIBACO5FEcLFDxZ9c5V0XwvzS5qTA3LSKCPzyPVSL22PdYy4Jz4RUF1S3BUN+0VZplp+ymb5BwfB71a11L0KhAHvOQn9X80i4qwBcpOBnktRa0EbBRUF0cK77Pw6XygtHcGyQCoyH7bS7pzxJ9AlZFzS82LfEXN3obhqg/REroB6h9ogEBAkpntA9qNy+lma3rMmawx/zqgXMQX50r9CaL+piucRJIC5B7CuJpZF4rBHwPgMFzWhkFtusepYT28+ECv7eIcF41K6LQiv1iDcPCZyiJ3ra1NVcvAxFS53N1EAIhhUQkrF4Yykz1XTLULw3tIuRbmfr9ammggqXImi1Hl5seDpGesPBaEq2upXd54bvPnX2CRi3FyS8VI33xVQDScPQo7v7QhtKqt7zodM+c4hhrRUOzA3mCGv+rvTa8wEwUB1MhflbvReFfNosMlvp2PdGVz8S383G8LxUbofs16cKYby8j/HBL6cvA4U+3arTHSEVMh8aLU5thWttDRVd0AiykdynXVdzjLqU9yKt9WXGRnGCVBFt5mX3eHzHCMX3HQKxMhjTDFAOT7j2jNnD8e3i0BobRcFFB9CEs5d0pc/2BqRdGnpY0vxWBbdikec7Kmi4YBqBUIpmIPQv44iMrM4+LBySfcboH4hpfgW4UQs1yjnZGkNw15AaxTQtzCfNtp</Certificate>
							<ServiceDescription>Unimaze PEPPOL AS2 Access Point</ServiceDescription>
							<TechnicalContactUrl>[[email protected]</TechnicalContactUrl](mailto:[email protected]%3c/TechnicalContactUrl)>
							<TechnicalInformationUrl>[http://www.unimaze.com</TechnicalInformationUrl](http://www.unimaze.com%3C/TechnicalInformationUrl)>
						</Endpoint>
					</ServiceEndpointList>
				</Process>
				<Process>
					<ProcessIdentifier scheme="cenbii-procid-ubl"
						xmlns=http://busdox.org/transport/identifiers/1.0/>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
					</ProcessIdentifier>
					<ServiceEndpointList>
						<Endpoint transportProfile="peppol-transport-as4-v2_0">
							<EndpointReference
								xmlns=http://www.w3.org/2005/08/addressing>
								<Address>[https://as4embep.sendill.is/msh/receive</Address](https://as4embep.sendill.is/msh/receive%3c/Address)>
							</EndpointReference>
							<RequireBusinessLevelSignature>false</RequireBusinessLevelSignature>
							<MinimumAuthenticationLevel>1</MinimumAuthenticationLevel>
							<Certificate>MIIFsTCCA5mgAwIBAgIQEya3SdsericU/zq5pFFVizANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQT3BlblBFUFBPTCBBSVNCTDEkMCIGA1UEAxMbUEVQUE9MIEFDQ0VTUyBQT0lOVCBDQSAtIEcyMB4XDTIyMDcyMjAwMDAwMFoXDTI0MDcxMTIzNTk1OVowWzELMAkGA1UEBhMCSVMxGTAXBgNVBAoMEFVuaW1hemUgU29mdHdhcmUxHTAbBgNVBAsMFFBFUFBPTCBQUk9EVUNUSU9OIEFQMRIwEAYDVQQDDAlQU0UwMDAwNjEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBCuu1xs+oqNZM9WnSyzg/zbzb7fM9dWu6ULLFvUA7SrldYgenG1HW/xizn8ixF5+7hWi8RpVvqrIJCTmOv4XPtvVCqmwCebmLfvZKvRcLNVTqkgTncNfQLbeAACjLsVKQoEneCmVOlPXZSS4msSzL+bqnKytr6fuxpjKSHNH49qjUnTb4y9ny+DzZgQueAv6M+m5dnd7xxFqYkDg+xDerjo96nA8kTPpTNbfbjZJ2WZATXkoEQk1iWEMJ9SyIeFABPPJ6TV83TgoXggSwKlNmEnYtJQQcVHrwGc2HOPepNJIbHWAYHCDHJoefB8D2HfZvY+9EG2rmB4dln3KmjwtvAgMBAAGjggF8MIIBeDAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIDqDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDAjAdBgNVHQ4EFgQUBMuOXV1trYDQN3OS5PeXcBaP3wAwXQYDVR0fBFYwVDBSoFCgToZMaHR0cDovL3BraS1jcmwuc3ltYXV0aC5jb20vY2FfN2JlZGNiY2M0ZjcyNGVmZTMwZDUwMDZkZGE2ODFiYTAvTGF0ZXN0Q1JMLmNybDA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9wa2ktb2NzcC5zeW1hdXRoLmNvbTAfBgNVHSMEGDAWgBSHJd9bI6bEO/mf3xulIJHd5PQ8gTAtBgpghkgBhvhFARADBB8wHQYTYIZIAYb4RQEQAQIDAQGBstf0NhYGOTU3NjA4MDkGCmCGSAGG+EUBEAUEKzApAgEAFiRhSFIwY0hNNkx5OXdhMmt0Y21FdWMzbHRZWFYwYUM1amIyMD0wDQYJKoZIhvcNAQELBQADggIBACO5FEcLFDxZ9c5V0XwvzS5qTA3LSKCPzyPVSL22PdYy4Jz4RUF1S3BUN+0VZplp+ymb5BwfB71a11L0KhAHvOQn9X80i4qwBcpOBnktRa0EbBRUF0cK77Pw6XygtHcGyQCoyH7bS7pzxJ9AlZFzS82LfEXN3obhqg/REroB6h9ogEBAkpntA9qNy+lma3rMmawx/zqgXMQX50r9CaL+piucRJIC5B7CuJpZF4rBHwPgMFzWhkFtusepYT28+ECv7eIcF41K6LQiv1iDcPCZyiJ3ra1NVcvAxFS53N1EAIhhUQkrF4Yykz1XTLULw3tIuRbmfr9ammggqXImi1Hl5seDpGesPBaEq2upXd54bvPnX2CRi3FyS8VI33xVQDScPQo7v7QhtKqt7zodM+c4hhrRUOzA3mCGv+rvTa8wEwUB1MhflbvReFfNosMlvp2PdGVz8S383G8LxUbofs16cKYby8j/HBL6cvA4U+3arTHSEVMh8aLU5thWttDRVd0AiykdynXVdzjLqU9yKt9WXGRnGCVBFt5mX3eHzHCMX3HQKxMhjTDFAOT7j2jNnD8e3i0BobRcFFB9CEs5d0pc/2BqRdGnpY0vxWBbdikec7Kmi4YBqBUIpmIPQv44iMrM4+LBySfcboH4hpfgW4UQs1yjnZGkNw15AaxTQtzCfNtp</Certificate>
							<ServiceDescription>Unimaze PEPPOL AS4 Pilot Access Point</ServiceDescription>
							<TechnicalContactUrl>[[email protected]</TechnicalContactUrl](mailto:[email protected]%3c/TechnicalContactUrl)>
							<TechnicalInformationUrl>[http://www.unimaze.com</TechnicalInformationUrl](http://www.unimaze.com%3C/TechnicalInformationUrl)>
						</Endpoint>
					</ServiceEndpointList>
				</Process>
			</ProcessList>
		</ServiceInformation>
	</ServiceMetadata>
	<Signature
		xmlns=http://www.w3.org/2000/09/xmldsig#>
		<SignedInfo>
			<CanonicalizationMethod Algorithm=http://www.w3.org/TR/2001/REC-xml-c14n-20010315 />
			<SignatureMethod Algorithm=http://www.w3.org/2000/09/xmldsig#rsa-sha1 />
			<Reference URI="">
				<Transforms>
					<Transform Algorithm=http://www.w3.org/2000/09/xmldsig#enveloped-signature />
				</Transforms>
				<DigestMethod Algorithm=http://www.w3.org/2000/09/xmldsig#sha1 />
				<DigestValue>JXy/PXcClYLn6o0GYamVe9rtauE=</DigestValue>
			</Reference>
		</SignedInfo>
		<SignatureValue>tz/ur7VedckMljy2Hhp65P2qQNAVuKuTjFBi1n+zt3N5TyC9sLWmoN6togtFCKEs3p35Fx3saHAIgnOqGcBQws1m4Hze4jdo5tYaCsXJOo2dSIHKNGHPNleUn7tEsUu3xW3Bhs4SUHiRdCz/J38eE6QVmvlNwtQD6ZK5HjhqmiVJ7G3T43jvZXx6AxODkmn3y0szJ5IEdzN81eu+yzBpj8iYpZRl0l8ilFBvRDZgmHAyoO99yT0KXtEQeoRG+kbJ/uQ9+afACOQGgXsw0p2l8FtDO8SmJxrJbnJvbpLhNJIuiBqto1cR0LnXdTgCADC4F2fZD8tbWVUzdhmI6eJzHw==</SignatureValue>
		<KeyInfo>
			<X509Data>
				<X509Certificate>MIIFwDCCA6igAwIBAgIQBFhve9i9fl0CZc2hRhOxFjANBgkqhkiG9w0BAQsFADBcMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQT3BlblBFUFBPTCBBSVNCTDEyMDAGA1UEAxMpUEVQUE9MIFNFUlZJQ0UgTUVUQURBVEEgUFVCTElTSEVSIENBIC0gRzIwHhcNMjIwNzIyMDAwMDAwWhcNMjQwNzExMjM1OTU5WjBcMQswCQYDVQQGEwJJUzEZMBcGA1UECgwQVW5pbWF6ZSBTb2Z0d2FyZTEeMBwGA1UECwwVUEVQUE9MIFBST0RVQ1RJT04gU01QMRIwEAYDVQQDDAlQU0UwMDAwNjEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDnU8xQ+zHeHlO68+Cun6Oq2CF1/qPUJdTdjbT2HgE+EtE+xJkhfxz4IinkvWrzsANzpohsJB/AmO5ifUzU12gT2CaI2jR/fl7CfgD3cM3W8BBcjbNfyVqF8jKAuP3n3BqKB+gtpPzDXoI1X+GQ287JQJZFySMHOXmtGoLmOOmn+IUDVQW2hvhR9UARHEkasAdpiGyIv/hqS4E3ZewpS4fHAOdvvNbbq9E4uVTl7tggn5fqz8hSoJwUBwF/+dxFhdO7+YrrlM0WRQGvSn89+PYLETob7Fovu24peua4u4mADBZAyBPpFGFkptFbbQI7AQkIpGKOG5xbfRp8fILzmxklAgMBAAGjggF8MIIBeDAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIDqDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDAjAdBgNVHQ4EFgQUMeyUisFohsCzJKNsn2S/lfkjQCkwXQYDVR0fBFYwVDBSoFCgToZMaHR0cDovL3BraS1jcmwuc3ltYXV0aC5jb20vY2FfYjViMzY0YjA3M2U2ZGRjZGIzMzM1MDE4M2EzZWUzZTEvTGF0ZXN0Q1JMLmNybDA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9wa2ktb2NzcC5zeW1hdXRoLmNvbTAfBgNVHSMEGDAWgBQqN3YVyu6QH6+ZpWNslTs2p6NEcDAtBgpghkgBhvhFARADBB8wHQYTYIZIAYb4RQEQAQIDAQGBstiEUhYGOTU3NjA4MDkGCmCGSAGG+EUBEAUEKzApAgEAFiRhSFIwY0hNNkx5OXdhMmt0Y21FdWMzbHRZWFYwYUM1amIyMD0wDQYJKoZIhvcNAQELBQADggIBAHqL/H7jKVdJxQiNE2mprPmKLnW7UQlN5lyMWGbumegytVCCsdeD/UsKgwRh99fWfoOnaBLgZNO8aBOhwDP1fhfALeYThT7SLYzImTox1DPQDBttg24jyN6u8w1PauLRRPimhDUZpu8eN/FOyRTHsfTRVVxRMI1GlLtDXw84u15jt/l35TDd5WLC+mEEmxOT1V6KhLzzjHIuId6FOyx4Ww9Sy9u4YBwoszIpdtGeUdr82jKqHcw87m5ayUjEEJ82yoEsD2M99+bHm3cmiI9HMbdmIvNxz2fNAficLnJg/qLDBZMLCH99K3NB/oqp+mMoMVabvpapS/6h/rrhJ1F1txkYzSa852nvh7A2Vra09qXISN3FD0RQzBQwzWn3GRrrelviAglQR7K4mWvF2F6E/PihNWpTzW85+dCFc1BxaHJRq1ytJoUXciqhx+AMPBTv4jjbV6i4TawBRKkczlUSmm8Bd3J95XJWpO+qyNQ4iRK4EfAJwBRoG7Qkkvw2T8y7bQRM05FrZSBmrdSR4MsWIaei/FwQPiSeCWehOZhNdJ61izUnKH+XO2lt+O6bf8qmRjdkhDEXG41UE5fF4eX5jNOHixMhjnqz0X1iFq41bTC9fMTFe7nrwVv1rH+y4ZpCzBkgFogHaZr5bqSRe6kgy5bTRcMlZLlzUchdgxkg7S35</X509Certificate>
			</X509Data>
		</KeyInfo>
	</Signature>
</SignedServiceMetadata>

However, the next log entry is

[2023-08-10T16:57:26,131] [smc-discovery-service] [WARN ] [qtp131953431-26] Found 0 endpoints for process [PeppolProcessIdentifier@0x1183233d: scheme=cenbii-procid-ubl; value=urn:fdc:peppol.eu:2017:poacc:billing:01:1.0] and transport profile 'peppol-transport-as4-v2_0' valid at 2023-08-10T16:57:26.129852 -- com.helger.smpclient.peppol.SMPClientReadOnly.getEndpointAt(SMPClientReadOnly.java:809)

Why would the second process entry not be selected?

Thanks!

JAXB mapping conflict

While combining the peppol-commons libray i encounterd the problem of a duplicate
jaxb mapping.

The org.w3c._2001.Adapter1 class is created in more than one place. (This is offcource
not in the peppol-commons project alone.).

This problem arises when there are more than 1 global mappings. Jaxb mappings are global.

So i ran into a duplicate class definition problem.

To solve this problem you only have to add an xml file into the wsdl folder. After that the Adapter1.class is put into the helger package as described in the xml below.

<schema xmlns="http://www.w3.org/2001/XMLSchema"
  targetNamespace="http://www.w3.org/2001/XMLSchema"
  xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
  jaxb:version="2.0">
  <annotation><appinfo>
    <jaxb:schemaBindings>
      <jaxb:package name="com.helger.peppol.wsdl"/>
    </jaxb:schemaBindings>
  </appinfo></annotation>
</schema>

Would it be an idea to add the xsd file into the wsdl folder?

Make hostname and IP address part of the config file

As part of the registration GUI, the user must specify the host name and IP address of the system as part of the SMP registration. Please put this in the config file, so that we can create custom Docker images that contain this information already because we include a COPY ../smp-server.properties ...
of a custom config file that contains these values. This removes a step where the AppOps person has to log on as an administrator and then manually enter these values.

SMP SignedServiceMetadata response has missing and incorrect namespace usages

smp-response.xml.zip
We're on version 5.0.3 of your SMP software. I am seeing one issue which is related to SMP response. Resource SignedServiceMetadata does not contain namespace in the response xml. Because of which it will fail while doing signature verification. I am attaching response xml for your reference. The SignedServiceMetadata element has a namespace prefix but no namespace with that prefix is defined. Also Signature element does not have a namespace prefix at all.

Caching on SMPClientReadOnly getServiceGroup

Hello @phax,

I have a question about caching in the peppol-smp-client SMPClientReadOnly. I noticed that when I do a getServiceGroup lookup before registration (returning 404) that after registration I still get the 404 during lookup after saving the ServiceGroup for about 15 minutes even if the ServiceGroup is able to be found by other applications (for example the helger participant information tool).
If we do a lookup with the helger participant information tool before registration it looks like the same caching is happening here.

However I am not able to find any caching being done in the smp-client (only caching I could find was InetAddressCachePolicy and we use default 30s).

Does the SML itself do any caching on our requests meaning there is no solution for this issue or am I missing some caching implementation?

Kind regards and thanks in advance!

Some informational stacktraces:

Cached lookup

java.net.UnknownHostException: B-03a...64.iso6523-actorid-upis.acc.edelivery.tech.ec.europa.eu
	at java.base/java.net.InetAddress$CachedLookup.get(InetAddress.java:988)
	at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1818)
	at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1688)
	at org.apache.hc.client5.http.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:43)
	at org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:143)
	at org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:447)
	at org.apache.hc.client5.http.impl.classic.InternalExecRuntime.connectEndpoint(InternalExecRuntime.java:162)
	at org.apache.hc.client5.http.impl.classic.InternalExecRuntime.connectEndpoint(InternalExecRuntime.java:172)
	at org.apache.hc.client5.http.impl.classic.ConnectExec.execute(ConnectExec.java:142)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
	at org.apache.hc.client5.http.impl.classic.ProtocolExec.execute(ProtocolExec.java:192)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
	at org.apache.hc.client5.http.impl.classic.HttpRequestRetryExec.execute(HttpRequestRetryExec.java:96)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
	at org.apache.hc.client5.http.impl.classic.ContentCompressionExec.execute(ContentCompressionExec.java:152)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
	at org.apache.hc.client5.http.impl.classic.RedirectExec.execute(RedirectExec.java:115)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
	at org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:170)
	at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:245)
	at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:188)
	at com.helger.httpclient.HttpClientManager.execute(HttpClientManager.java:137)
	at com.helger.smpclient.httpclient.AbstractGenericSMPClient.executeRequest(AbstractGenericSMPClient.java:363)
	at com.helger.smpclient.httpclient.AbstractGenericSMPClient.executeGenericRequest(AbstractGenericSMPClient.java:401)
	at com.helger.smpclient.peppol.SMPClientReadOnly.getCompleteServiceGroup(SMPClientReadOnly.java:275)
	at com.helger.smpclient.peppol.SMPClientReadOnly.getCompleteServiceGroup(SMPClientReadOnly.java:307)
	at com.helger.smpclient.peppol.SMPClientReadOnly.getCompleteServiceGroupOrNull(SMPClientReadOnly.java:340)

No Caching

java.net.UnknownHostException: B-03a...64.iso6523-actorid-upis.acc.edelivery.tech.ec.europa.eu nodename nor servname provided, or not known
	at java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
	at java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:52)
	at java.base/java.net.InetAddress$PlatformResolver.lookupByName(InetAddress.java:1211)
	at java.base/java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1828)
	at java.base/java.net.InetAddress$NameServiceAddresses.get(InetAddress.java:1139)
	at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1818)
	at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1688)
	at org.apache.hc.client5.http.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:43)
	at org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:143)
	at org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:447)
	at org.apache.hc.client5.http.impl.classic.InternalExecRuntime.connectEndpoint(InternalExecRuntime.java:162)
	at org.apache.hc.client5.http.impl.classic.InternalExecRuntime.connectEndpoint(InternalExecRuntime.java:172)
	at org.apache.hc.client5.http.impl.classic.ConnectExec.execute(ConnectExec.java:142)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
	at org.apache.hc.client5.http.impl.classic.ProtocolExec.execute(ProtocolExec.java:192)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
	at org.apache.hc.client5.http.impl.classic.HttpRequestRetryExec.execute(HttpRequestRetryExec.java:96)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
	at org.apache.hc.client5.http.impl.classic.ContentCompressionExec.execute(ContentCompressionExec.java:152)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
	at org.apache.hc.client5.http.impl.classic.RedirectExec.execute(RedirectExec.java:115)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
	at org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:170)
	at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:245)
	at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:188)
	at com.helger.httpclient.HttpClientManager.execute(HttpClientManager.java:137)
	at com.helger.smpclient.httpclient.AbstractGenericSMPClient.executeRequest(AbstractGenericSMPClient.java:363)
	at com.helger.smpclient.httpclient.AbstractGenericSMPClient.executeGenericRequest(AbstractGenericSMPClient.java:401)
	at com.helger.smpclient.peppol.SMPClientReadOnly.getCompleteServiceGroup(SMPClientReadOnly.java:275)
	at com.helger.smpclient.peppol.SMPClientReadOnly.getCompleteServiceGroup(SMPClientReadOnly.java:307)
	at com.helger.smpclient.peppol.SMPClientReadOnly.getCompleteServiceGroupOrNull(SMPClientReadOnly.java:340)

Running the prepareToMigrate against the real SMK results in ERR-106 about the 'quality' of the migration key

Version: 8.1.2-SNAPSHOT

The error I receive when doing:

 aPIClientDescartes.prepareToMigrate(aPI, SMP_ID);

[ERR-106] The migration code [ 77a9f1b1-0438-43f3-b56c- ] must contain a minimum of (8 characters,2 Upper Case letters,2 Lower Case letters,2 Special Characters among @#$%()[]{}*^-!~|+= and 2 numbers), a maximum of 24 characters and No White Spaces.

I'll see if I cant create a PR so it peppol-commons conforms with this. Weird...

Off-topic: In the method signature for the prepareToMigrate and migrate the parameters are reversed compared to the other methods. Intentional?

Adding new document types to the enum EPredefinedDocumentTypeIdentifier

Dear Philip,

I like the way you have set up the libraries.

But i need to add document types to the EPredefinedDocumentTypeIdentifier. The good thing about enum's is that they cannot change. But not all document types can be found in this enum.

See http://www.galaxygw.com/peppol-documents/

I need to add the the danish OIOUBL documents e.g

urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##OIOUBL-2.02::2.0.

What i can do is

final IReadonlyDocumentTypeIdentifier iReadonlyIdentifier = new IReadonlyDocumentTypeIdentifier(){
            @Override
            public String getScheme() {
                return "busdox-docid-qns";
            }
            @Override
            public String getValue() {
                //return "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:www.cenbii.eu:transaction:biitrns010:ver2.0:extended:urn:www.peppol.eu:bis:peppol4a:ver2.0::2.1";
                return "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##OIOUBL-2.02::2.0";
            }

        };

Can you think of another way?

NonProxyHosts support not working

Error when smpclient is trying to access an SMP for which no http proxy is required (using URAC application):

05 Jan 2017 18:01:09 [http-nio-8080-exec-9] ERROR gr.uprc.connector.rest.api.SmpResource  - Could not get COMPLETE record from SMP
[...]
Caused by: com.helger.peppol.smpclient.exception.SMPClientUnauthorizedException: org.apache.http.client.HttpResponseException: Forbidden
        at com.helger.peppol.httpclient.AbstractGenericSMPClient.getConvertedException(AbstractGenericSMPClient.java:379)
        at com.helger.peppol.httpclient.AbstractGenericSMPClient.executeGenericRequest(AbstractGenericSMPClient.java:425)
        at com.helger.peppol.smpclient.SMPClientReadOnly.getCompleteServiceGroup(SMPClientReadOnly.java:261)
        at com.helger.peppol.smpclient.SMPClientReadOnly.getCompleteServiceGroup(SMPClientReadOnly.java:291)
        at gr.uprc.connector.smp.SimpleSMPCallerService.getSimpleSMPRecord(SimpleSMPCallerService.java:110)
        ... 48 more
Caused by: org.apache.http.client.HttpResponseException: Forbidden
        at com.helger.peppol.httpclient.AbstractSMPResponseHandler.handleResponse(AbstractSMPResponseHandler.java:103)
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:222)
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:164)
        at com.helger.httpclient.HttpClientManager.execute(HttpClientManager.java:98)
        at com.helger.peppol.httpclient.AbstractGenericSMPClient.executeRequest(AbstractGenericSMPClient.java:352)
        at com.helger.peppol.httpclient.AbstractGenericSMPClient.executeGenericRequest(AbstractGenericSMPClient.java:421)
        ... 51 more 

smpclient.properties file:

http.proxyHost=<proxy_address>
http.proxyPort=<proxy_port>
http.nonProxyHosts=my_internal_ip|*.my.internal.domain

'External' SMP's are accessed OK.

When commenting out proxy properties above OR erasing the file, the results are the opposite: only able to access internal SMP, NOT external SMP's.

Tomcat Java properties:
ubuntu 1850 3.2 43.4 3681168 889704 ? Sl 17:23 2:32 /usr/bin/java -Djava.util.logging.config.file=/home/ubuntu/apache-tomcat-8.0.39/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -Dhttp.proxyHost=<my_proxy_address> -Dhttp.proxyPort=<proxy_port> -Dhttp.nonProxyHosts=my_internal_ip|*.my.internal.domain

SMP Client to support non-proxy hosts

Currently it is only possible to specify a proxy for all.
Additionally it should be possible to set the non-proxy hosts (via the Java default system properties).

If CRL download fails, fail revocation check

WARN [main] c.h.p.u.CertificateRevocationChecker Failed to find any CRL objects for revocation checking
WARN [main] c.h.p.u.CertificateRevocationChecker OCSP/CRL revocation check took 10206 milliseconds which is too long
INFO [main] c.d.p.a.c.ServletConfig Sucessfully checked that the provided Peppol AP certificate is valid.

Running SML/K functions against the real SMK results in soap action errors

Due to integration reasons, we run our own SMP and so we have an SMP certificate and a registered SMP (on the SMK). We currently do not have implemented the migration of participants from/to our SMP, only the creation of new ones. Due to a takeover we'd like to migrate a customer from an external AP to our own and into our own SMP.

Out of curiosity I thought to use your SML 'client' for a quick migration. I do get access to the SMK (authentication and authorization is good) and I can read our own SMP settings from there.

When trying the migration I get a soap action error so I thought to try to create a test particiapant id and see what happens then. Identical to the SMKFuncTest.java code.

aPIClient.create (SMP_ID,
                      PeppolIdentifierFactory.INSTANCE.createParticipantIdentifierWithDefaultScheme ("9915:ourdummyid"));

Unfortunately, the same sort of soap action error:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <soap:Fault>
            <faultcode>soap:Server</faultcode>
                <faultstring>The given SOAPAction http://busdox.org/serviceMetadata/ManageBusinessIdentifierService/1.0/        :createIn does not match an operation.</faultstring>
        </soap:Fault>
    </soap:Body>
</soap:Envelope>

I noticed the whitespace (both in the wsdl ManageBusinessIdentifierService-1.0.wsdl and generated java code ManageBusinessIdentifierServiceSoap.jave and compared with the read function that does work (ManageServiceMetadataService-1.0.wsdl and ManageServiceMetadataServiceSoap.java). There is no whitespace there so I removed that but still same error (without the whitespace in it).

Now my colleagues told me we do not send a soap action at all and I tried changing the soap action in the wsdl and java code to an empty string and than I do get it registered.

Version: 8.1.2-SNAPSHOT

smp creation error is not visibile

Hi
when we register a new participant using latest version of your API, we receive an error not really understandable:

com.sun.xml.ws.client.ClientTransportException: Il server ha inviato il codice di stato HTTP 404: Not Found

The real SOAP error (after a really long session of debug at low level):

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode>
<faultstring>[ERR-100] The SMP 'PIT000xxxx' doesn't exist. [VH_QReaAzDt_QS23-b-D9n6RDbqmVWxxxxxxxxxxxxxxxxx]</faultstring><detail><NotFoundFault xmlns:ns2="http://busdox.org/transport/identifiers/1.0/" xmlns="http://busdox.org/serviceMetadata/locator/1.0/"><FaultMessage>[ERR-100] The SMP 'PIT000xxxx' doesn't exist.</FaultMessage></NotFoundFault></detail></soap:Fault></soap:Body></soap:Envelope>

The simple request:

  @Test
public void test() throws Exception {
        ManageParticipantIdentifierServiceCaller aSMPClient = new ManageParticipantIdentifierServiceCaller(ESML.DIGIT_PRODUCTION);
        aSMPClient.setSSLSocketFactory(ssl());
        aSMPClient.create(smpId, new SimpleParticipantIdentifier("iso6523-actorid-upis", "9906:IT02252770066"));
    }

It should be usefull to wrap the soap original exception, in the message received at hight level.

Can you suggest how debug better that type of errors?

Best regard
Fiorenzo

java.lang.NoClassDefFoundError: jakarta/xml/bind/JAXBException

Hi, I have updated the version to the library from 8.7.5 to 9.2.1.
I got the exception in the title at line "new SBDMarshaller().getAsString (aSBD)" (see below).

Probably I need to update some other library, any idea?

Thanks


final PeppolSBDHData aData = PeppolSBDHData.createUBL21 (documento.getDocumentElement (),
                    PeppolIdentifierFactory.INSTANCE)
      .setSenderWithDefaultScheme (sender)
      .setReceiverWithDefaultScheme (receiver)
      .setDocumentTypeWithBusdoxDocidQns (docType)
      .setProcessWithDefaultScheme (procType)
      .setCountryC1 ("IT");
		    
		    // Create the SBDH document
		    final StandardBusinessDocument aSBD = new PeppolSBDHDocumentWriter().createStandardBusinessDocument (aData);
		    result = new SBDMarshaller().getAsString (aSBD);

Serializing PeppolParticipantIdentifier may produce a StackOverflowError

Attempting to serialize a participant identifier stored in a Map to JSON via Jackson currently produces a StackOverflowError.

Reproducer:

@Test
public void reproduceStackOverflowError() {
    Map<String, Object> map = new HashMap<>();
    map.put("participantId", new PeppolParticipantIdentifier("iso6523-actorid-upis", "9915:test"));
    try {
        new ObjectMapper().writeValueAsString(map);
        fail("Should have thrown a JsonMappingException due to a backing StackOverflowError");
    } catch (JsonProcessingException e) {
        assertThat(e, is(instanceOf(JsonMappingException.class)));
        assertThat(e.getCause(), is(instanceOf(StackOverflowError.class)));
    }
}

As PeppolParticipantIdentifier is an extension of ParticipantIdentifierType, which further is Serializable, such an approach might seem logical to attempt

Tag mismatch SSL error when trying to connect to SMK

Hi Phil, I am struggling with an odd error. I am on a linux machine using java 11.0.20 trying to signal to the SMK a new participant.
I have a small wrapper that handles parameters passed in as arguments and calls the ManageParticipantIdentifierServiceCaller .
I get an SSL exception saying tag mismatch and I cannot find out why.
On another machine the same code works when connecting to the SML. So production works but test does not. I tried the same code on a windows machine connecting to the SMK and it was able to successfully connect. I am at a loss as to what the problem may be. It is not a firewall issue as it can access the SMK's certificate chain. could it be a cipher issue?
Both linux machines use java 11.0.20 and openssl 1.0.2.

Thank you,
Alex

Please find below the redacted log of the failing call

2023-11-28T13:53:53,532 INFO  com.helger.phoss.smp.security.SMPKeyManager._loadKeyStore(SMPKeyManager.java:122) - SMPKeyManager successfully initialized with keystore 'xxxxxxxxxx.p12' and alias 'smp'
2023-11-28T13:53:53,558 WARN  com.helger.phoss.smp.security.SMPKeyManager.createSSLContext(SMPKeyManager.java:209) - No truststore is configured, so the build SSL/TLS connection will trust all hosts!
2023-11-28T13:53:53,628 INFO  com.helger.peppol.smlclient.ManageParticipantIdentifierServiceCaller.create(ManageParticipantIdentifierServiceCaller.java:168) - Trying to create new participant iso6523-actorid-upis::0151:xxxxxxxxxxx in SMP 'xxxxxxxxxxx-TEST'
2023-11-28T13:53:55,775 INFO  com.helger.commons.ws.TrustManagerTrustAll.checkServerTrusted(TrustManagerTrustAll.java:69) - checkServerTrusted ([[
[
  Version: V3
  Subject: CN=edelivery.tech.ec.europa.eu, O=European Commission, L=Brussels, ST=Brussels-Capital Region, C=BE
  Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11

  Key:  Sun RSA public key, 2048 bits
  params: null
  modulus: 29573442910608890274964506394851617461462393378201187129286486057826326808575306607460482297651358900494662491660451036494778967275793479943339837067783937955740256468001380007106539786871875262212501547687554170360231944769789462933576074572690125435911201460708058634618446519457761664119874304859959706084215564036747861036310004192706024115261012262202328800233820085694658524674081881473284733341242826184366735045229902947088301472155932091068193925933683345448250954405174617999193741854024221537646229720202039920840135694698302378527693190975919187973034272309163700274802755632374734929084066754295698607839
  public exponent: 65537
  Validity: [From: Mon Jul 24 07:41:20 UTC 2023,
               To: Sat Aug 24 07:41:19 UTC 2024]
  Issuer: CN=GlobalSign RSA OV SSL CA 2018, O=GlobalSign nv-sa, C=BE
  SerialNumber: [    37966eac 11cf207d 2805b7a9]

Certificate Extensions: 10
[1]: ObjectId: 1.3.6.1.4.1.11129.2.4.2 Criticality=false
Extension unknown: DER encoded OCTET string =
0000: 04 82 01 6F 04 82 01 6B   01 69 00 77 00 EE CD D0  ...o...k.i.w....
0010: 64 D5 DB 1A CE C5 5C B7   9D B4 CD 13 A2 32 87 46  d.....\\......2.F
0020: 7C BC EC DE C3 51 48 59   46 71 1F B5 9B 00 00 01  .....QHYFq......
0030: 89 86 D8 93 4E 00 00 04   03 00 48 30 46 02 21 00  ....N.....H0F.!.
0040: D4 8C DC C8 CC 7C E4 16   B4 D0 4D 07 CE 5C 79 84  ..........M..\\y.
0050: 2E 01 95 F2 1B 15 E7 28   55 5C 7D 02 4F 8B 69 89  .......(U\\..O.i.
0060: 02 21 00 E5 33 6B 59 90   23 F7 BD EF 2A 8E 7C 4E  .!..3kY.#...*..N
0070: D9 E9 BB 48 C4 1E 58 47   FE 37 F2 AA 1C C0 A0 D0  ...H..XG.7......
0080: 4E 02 60 00 77 00 48 B0   E3 6B DA A6 47 34 0F E5  N.`.w.H..k..G4..
0090: 6A 02 FA 9D 30 EB 1C 52   01 CB 56 DD 2C 81 D9 BB  j...0..R..V.,...
00A0: BF AB 39 D8 84 73 00 00   01 89 86 D8 93 66 00 00  ..9..s.......f..
00B0: 04 03 00 48 30 46 02 21   00 FD C3 54 C9 4A E8 63  ...H0F.!...T.J.c
00C0: 7A 59 F4 E3 3C 68 C9 B8   C0 1B AD F9 79 A6 26 1E  zY..<h......y.&.
00D0: 4A 6C 7F C9 4B 32 88 C7   C4 02 21 00 DA 39 B7 77  Jl..K2....!..9.w
00E0: 86 54 45 40 86 E7 D0 C9   F0 41 DA A0 E7 94 CE C3  [email protected]......
00F0: 35 51 C3 8A 85 FB 78 7C   74 A8 0D 0C 00 75 00 DA  5Q....x.t....u..
0100: B6 BF 6B 3F B5 B6 22 9F   9B C2 BB 5C 6B E8 70 91  ..k?..\"....\\k.p.
0110: 71 6C BB 51 84 85 34 BD   A4 3D 30 48 D7 FB AB 00  ql.Q..4..=0H....
0120: 00 01 89 86 D8 93 74 00   00 04 03 00 46 30 44 02  ......t.....F0D.
0130: 20 72 51 2D 3D 4B EB CD   93 C5 72 B4 14 11 B5 06   rQ-=K....r.....
0140: F5 73 4F 24 74 D6 D2 FE   FC 7B 8F 6A 81 C6 B3 FB  .sO$t......j....
0150: 36 02 20 09 52 1B 50 09   66 D2 02 C2 8B 48 F6 BF  6. .R.P.f....H..
0160: 7A 9B E6 85 C9 1F 78 8D   1B 1F DB 94 33 6D C7 52  z.....x.....3m.R
0170: 70 5E 96                                           p^.


[2]: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false
AuthorityInfoAccess [
  [
   accessMethod: caIssuers
   accessLocation: URIName: http://secure.globalsign.com/cacert/gsrsaovsslca2018.crt
, 
   accessMethod: ocsp
   accessLocation: URIName: http://ocsp.globalsign.com/gsrsaovsslca2018
]
]

[3]: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: F8 EF 7F F2 CD 78 67 A8   DE 6F 8F 24 8D 88 F1 87  .....xg..o.$....
0010: 03 02 B3 EB                                        ....
]
]

[4]: ObjectId: 2.5.29.19 Criticality=false
BasicConstraints:[
  CA:false
  PathLen: undefined
]

[5]: ObjectId: 2.5.29.31 Criticality=false
CRLDistributionPoints [
  [DistributionPoint:
     [URIName: http://crl.globalsign.com/gsrsaovsslca2018.crl]
]]

[6]: ObjectId: 2.5.29.32 Criticality=false
CertificatePolicies [
  [CertificatePolicyId: [1.3.6.1.4.1.4146.1.20]
[PolicyQualifierInfo: [
  qualifierID: 1.3.6.1.5.5.7.2.1
  qualifier: 0000: 16 26 68 74 74 70 73 3A   2F 2F 77 77 77 2E 67 6C  .&https://www.gl
0010: 6F 62 61 6C 73 69 67 6E   2E 63 6F 6D 2F 72 65 70  obalsign.com/rep
0020: 6F 73 69 74 6F 72 79 2F                            ository/

]]  ]
  [CertificatePolicyId: [2.23.140.1.2.2]
[]  ]
]

[7]: ObjectId: 2.5.29.37 Criticality=false
ExtendedKeyUsages [
  serverAuth
  clientAuth
]

[8]: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
  DigitalSignature
  Key_Encipherment
]

[9]: ObjectId: 2.5.29.17 Criticality=false
SubjectAlternativeName [
  DNSName: edelivery.tech.ec.europa.eu
]

[10]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: CC 5F 64 E9 BB 83 95 70   92 6A F6 9F D0 B2 C1 18  ._d....p.j......
0010: CB 80 3A 96                                        ..:.
]
]

]
  Algorithm: [SHA256withRSA]
  Signature:
0000: 5E 1D 4E 76 9B 01 C0 09   38 63 66 7B 8C 72 2D 93  ^.Nv....8cf..r-.
0010: 3E E8 24 8E 39 65 75 68   49 C1 A0 43 46 61 A4 21  >.$.9euhI..CFa.!
0020: 93 F7 EF FD 15 D9 07 16   18 A9 66 DA 93 C2 69 F5  ..........f...i.
0030: 3A E6 F2 A6 66 8E C5 DD   CB 4A CE AD 3D 8C 7E 13  :...f....J..=...
0040: 50 43 A4 E4 9F 84 3F BD   4F 96 CD D6 D2 31 8E D8  PC....?.O....1..
0050: 3D 38 D7 D7 2B E4 99 45   F9 9C D3 A1 DE 9C 04 E7  =8..+..E........
0060: D9 35 BC 66 1E BA 03 AA   D7 90 9A D4 6C 32 85 BA  .5.f........l2..
0070: 1A 1D 36 22 08 3B B4 9C   C7 40 79 75 D7 EB B6 31  ..6\".;[email protected]
0080: 29 88 F4 FF 18 B1 F1 D7   F6 14 D2 59 E2 7B 40 88  )..........Y..@.
0090: D0 12 4E 02 4B F9 10 25   A9 65 50 64 80 47 80 7A  ..N.K..%.ePd.G.z
00A0: 73 74 EF 89 41 81 31 85   35 8C B4 84 3A 34 28 08  st..A.1.5...:4(.
00B0: 2B 7A B4 E4 C1 C1 46 34   C1 83 10 7C 45 52 9D C5  +z....F4....ER..
00C0: 6A 94 F2 58 CA C6 A7 65   F1 56 C4 52 FC 54 91 D9  j..X...e.V.R.T..
00D0: 74 74 A5 41 B8 DF 57 E2   88 2C 51 5A 26 05 16 2D  tt.A..W..,QZ&..-
00E0: 0E E5 40 4E 21 06 97 D5   65 DD C0 43 E6 AB A1 1A  ..@N!...e..C....
00F0: 33 9C F9 FF 96 AE 87 21   6B 07 52 4F EB 20 26 3F  3......!k.RO. &?

], [
[
  Version: V3
  Subject: CN=GlobalSign RSA OV SSL CA 2018, O=GlobalSign nv-sa, C=BE
  Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11

  Key:  Sun RSA public key, 2048 bits
  params: null
  modulus: 21126566361448906107436419936616456930503766795295011397390099377214532594339540630127839983694000880957855429090662736543459885979148095011845773324878609805910592394098822605447205094595434773457756619595496551339815291517938821967518409268674135327890982411359059853554206557405488402844883476783910436071263072611374930015184977470928360416482680275213210359134955800600416298955663157681791825971806614492086218468021537113159139781585498849221181678353105886727402106622369312650411327690533152044002528504537929182833153678424044530351812527294481555102466085982300518657855234182316103558953341555178558367567
  public exponent: 65537
  Validity: [From: Wed Nov 21 00:00:00 UTC 2018,
               To: Tue Nov 21 00:00:00 UTC 2028]
  Issuer: CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA - R3
  SerialNumber: [    01ee5f22 1dfc623b d4333a85 57]

Certificate Extensions: 7
[1]: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false
AuthorityInfoAccess [
  [
   accessMethod: ocsp
   accessLocation: URIName: http://ocsp2.globalsign.com/rootr3
]
]

[2]: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 8F F0 4B 7F A8 2E 45 24   AE 4D 50 FA 63 9A 8B DE  ..K...E$.MP.c...
0010: E2 DD 1B BC                                        ....
]
]

[3]: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
  CA:true
  PathLen:0
]

[4]: ObjectId: 2.5.29.31 Criticality=false
CRLDistributionPoints [
  [DistributionPoint:
     [URIName: http://crl.globalsign.com/root-r3.crl]
]]

[5]: ObjectId: 2.5.29.32 Criticality=false
CertificatePolicies [
  [CertificatePolicyId: [2.5.29.32.0]
[PolicyQualifierInfo: [
  qualifierID: 1.3.6.1.5.5.7.2.1
  qualifier: 0000: 16 26 68 74 74 70 73 3A   2F 2F 77 77 77 2E 67 6C  .&https://www.gl
0010: 6F 62 61 6C 73 69 67 6E   2E 63 6F 6D 2F 72 65 70  obalsign.com/rep
0020: 6F 73 69 74 6F 72 79 2F                            ository/

]]  ]
]

[6]: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
  DigitalSignature
  Key_CertSign
  Crl_Sign
]

[7]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: F8 EF 7F F2 CD 78 67 A8   DE 6F 8F 24 8D 88 F1 87  .....xg..o.$....
0010: 03 02 B3 EB                                        ....
]
]

]
  Algorithm: [SHA256withRSA]
  Signature:
0000: 99 90 C8 2D 5F 42 8A D4   0B 66 DB 98 03 73 11 D4  ...-_B...f...s..
0010: 88 86 52 28 53 8A FB AD   DF FD 73 8E 3A 67 04 DB  ..R(S.....s.:g..
0020: C3 53 14 70 14 09 7C C3   E0 F8 D7 1C 98 1A A2 C4  .S.p............
0030: 3E DB E9 00 E3 CA 70 B2   F1 22 30 21 56 DB D3 AD  >.....p..\"0!V...
0040: 79 5E 81 58 0B 6D 14 80   35 F5 6F 5D 1D EB 9A 47  y^.X.m..5.o]...G
0050: 05 FF 59 8D 00 B1 40 DA   90 98 96 1A BA 6C 6D 7F  [email protected].
0060: 8C F5 B3 80 DF 8C 64 73   36 96 79 79 69 74 EA BF  ......ds6.yyit..
0070: F8 9E 01 8F A0 95 69 8D   E9 84 BA E9 E5 D4 88 38  ......i........8
0080: DB 78 3B 98 D0 36 7B 29   B0 D2 52 18 90 DE 52 43  .x;..6.)..R...RC
0090: 00 AE 6A 27 C8 14 9E 86   95 AC E1 80 31 30 7E 9A  ..j'........10..
00A0: 25 BB 8B AC 04 23 A6 99   00 E8 F1 D2 26 EC 0F 7E  %....#......&...
00B0: 3B 8A 2B 92 38 13 1D 8F   86 CD 86 52 47 E6 34 7C  ;.+.8......RG.4.
00C0: 5B A4 02 3E 8A 61 7C 22   76 53 5A 94 53 33 86 B8  [..>.a.\"vSZ.S3..
00D0: 92 A8 72 AF A1 F9 52 87   1F 31 A5 FC B0 81 57 2F  ..r...R..1....W/
00E0: CD F4 CE DC F6 24 CF A7   E2 34 90 68 9D FE AA F1  .....$...4.h....
00F0: A9 9A 12 CC 9B C0 C6 C3   A8 A5 B0 21 7E DE 48 F6  ...........!..H.

]], UNKNOWN)
2023-11-28T13:53:56,806 INFO  com.helger.commons.ws.TrustManagerTrustAll.checkServerTrusted(TrustManagerTrustAll.java:69) - checkServerTrusted ([[
[
  Version: V3
  Subject: CN=edelivery.tech.ec.europa.eu, O=European Commission, L=Brussels, ST=Brussels-Capital Region, C=BE
  Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11

  Key:  Sun RSA public key, 2048 bits
  params: null
  modulus: 29573442910608890274964506394851617461462393378201187129286486057826326808575306607460482297651358900494662491660451036494778967275793479943339837067783937955740256468001380007106539786871875262212501547687554170360231944769789462933576074572690125435911201460708058634618446519457761664119874304859959706084215564036747861036310004192706024115261012262202328800233820085694658524674081881473284733341242826184366735045229902947088301472155932091068193925933683345448250954405174617999193741854024221537646229720202039920840135694698302378527693190975919187973034272309163700274802755632374734929084066754295698607839
  public exponent: 65537
  Validity: [From: Mon Jul 24 07:41:20 UTC 2023,
               To: Sat Aug 24 07:41:19 UTC 2024]
  Issuer: CN=GlobalSign RSA OV SSL CA 2018, O=GlobalSign nv-sa, C=BE
  SerialNumber: [    37966eac 11cf207d 2805b7a9]

Certificate Extensions: 10
[1]: ObjectId: 1.3.6.1.4.1.11129.2.4.2 Criticality=false
Extension unknown: DER encoded OCTET string =
0000: 04 82 01 6F 04 82 01 6B   01 69 00 77 00 EE CD D0  ...o...k.i.w....
0010: 64 D5 DB 1A CE C5 5C B7   9D B4 CD 13 A2 32 87 46  d.....\\......2.F
0020: 7C BC EC DE C3 51 48 59   46 71 1F B5 9B 00 00 01  .....QHYFq......
0030: 89 86 D8 93 4E 00 00 04   03 00 48 30 46 02 21 00  ....N.....H0F.!.
0040: D4 8C DC C8 CC 7C E4 16   B4 D0 4D 07 CE 5C 79 84  ..........M..\\y.
0050: 2E 01 95 F2 1B 15 E7 28   55 5C 7D 02 4F 8B 69 89  .......(U\\..O.i.
0060: 02 21 00 E5 33 6B 59 90   23 F7 BD EF 2A 8E 7C 4E  .!..3kY.#...*..N
0070: D9 E9 BB 48 C4 1E 58 47   FE 37 F2 AA 1C C0 A0 D0  ...H..XG.7......
0080: 4E 02 60 00 77 00 48 B0   E3 6B DA A6 47 34 0F E5  N.`.w.H..k..G4..
0090: 6A 02 FA 9D 30 EB 1C 52   01 CB 56 DD 2C 81 D9 BB  j...0..R..V.,...
00A0: BF AB 39 D8 84 73 00 00   01 89 86 D8 93 66 00 00  ..9..s.......f..
00B0: 04 03 00 48 30 46 02 21   00 FD C3 54 C9 4A E8 63  ...H0F.!...T.J.c
00C0: 7A 59 F4 E3 3C 68 C9 B8   C0 1B AD F9 79 A6 26 1E  zY..<h......y.&.
00D0: 4A 6C 7F C9 4B 32 88 C7   C4 02 21 00 DA 39 B7 77  Jl..K2....!..9.w
00E0: 86 54 45 40 86 E7 D0 C9   F0 41 DA A0 E7 94 CE C3  [email protected]......
00F0: 35 51 C3 8A 85 FB 78 7C   74 A8 0D 0C 00 75 00 DA  5Q....x.t....u..
0100: B6 BF 6B 3F B5 B6 22 9F   9B C2 BB 5C 6B E8 70 91  ..k?..\"....\\k.p.
0110: 71 6C BB 51 84 85 34 BD   A4 3D 30 48 D7 FB AB 00  ql.Q..4..=0H....
0120: 00 01 89 86 D8 93 74 00   00 04 03 00 46 30 44 02  ......t.....F0D.
0130: 20 72 51 2D 3D 4B EB CD   93 C5 72 B4 14 11 B5 06   rQ-=K....r.....
0140: F5 73 4F 24 74 D6 D2 FE   FC 7B 8F 6A 81 C6 B3 FB  .sO$t......j....
0150: 36 02 20 09 52 1B 50 09   66 D2 02 C2 8B 48 F6 BF  6. .R.P.f....H..
0160: 7A 9B E6 85 C9 1F 78 8D   1B 1F DB 94 33 6D C7 52  z.....x.....3m.R
0170: 70 5E 96                                           p^.


[2]: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false
AuthorityInfoAccess [
  [
   accessMethod: caIssuers
   accessLocation: URIName: http://secure.globalsign.com/cacert/gsrsaovsslca2018.crt
, 
   accessMethod: ocsp
   accessLocation: URIName: http://ocsp.globalsign.com/gsrsaovsslca2018
]
]

[3]: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: F8 EF 7F F2 CD 78 67 A8   DE 6F 8F 24 8D 88 F1 87  .....xg..o.$....
0010: 03 02 B3 EB                                        ....
]
]

[4]: ObjectId: 2.5.29.19 Criticality=false
BasicConstraints:[
  CA:false
  PathLen: undefined
]

[5]: ObjectId: 2.5.29.31 Criticality=false
CRLDistributionPoints [
  [DistributionPoint:
     [URIName: http://crl.globalsign.com/gsrsaovsslca2018.crl]
]]

[6]: ObjectId: 2.5.29.32 Criticality=false
CertificatePolicies [
  [CertificatePolicyId: [1.3.6.1.4.1.4146.1.20]
[PolicyQualifierInfo: [
  qualifierID: 1.3.6.1.5.5.7.2.1
  qualifier: 0000: 16 26 68 74 74 70 73 3A   2F 2F 77 77 77 2E 67 6C  .&https://www.gl
0010: 6F 62 61 6C 73 69 67 6E   2E 63 6F 6D 2F 72 65 70  obalsign.com/rep
0020: 6F 73 69 74 6F 72 79 2F                            ository/

]]  ]
  [CertificatePolicyId: [2.23.140.1.2.2]
[]  ]
]

[7]: ObjectId: 2.5.29.37 Criticality=false
ExtendedKeyUsages [
  serverAuth
  clientAuth
]

[8]: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
  DigitalSignature
  Key_Encipherment
]

[9]: ObjectId: 2.5.29.17 Criticality=false
SubjectAlternativeName [
  DNSName: edelivery.tech.ec.europa.eu
]

[10]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: CC 5F 64 E9 BB 83 95 70   92 6A F6 9F D0 B2 C1 18  ._d....p.j......
0010: CB 80 3A 96                                        ..:.
]
]

]
  Algorithm: [SHA256withRSA]
  Signature:
0000: 5E 1D 4E 76 9B 01 C0 09   38 63 66 7B 8C 72 2D 93  ^.Nv....8cf..r-.
0010: 3E E8 24 8E 39 65 75 68   49 C1 A0 43 46 61 A4 21  >.$.9euhI..CFa.!
0020: 93 F7 EF FD 15 D9 07 16   18 A9 66 DA 93 C2 69 F5  ..........f...i.
0030: 3A E6 F2 A6 66 8E C5 DD   CB 4A CE AD 3D 8C 7E 13  :...f....J..=...
0040: 50 43 A4 E4 9F 84 3F BD   4F 96 CD D6 D2 31 8E D8  PC....?.O....1..
0050: 3D 38 D7 D7 2B E4 99 45   F9 9C D3 A1 DE 9C 04 E7  =8..+..E........
0060: D9 35 BC 66 1E BA 03 AA   D7 90 9A D4 6C 32 85 BA  .5.f........l2..
0070: 1A 1D 36 22 08 3B B4 9C   C7 40 79 75 D7 EB B6 31  ..6\".;[email protected]
0080: 29 88 F4 FF 18 B1 F1 D7   F6 14 D2 59 E2 7B 40 88  )..........Y..@.
0090: D0 12 4E 02 4B F9 10 25   A9 65 50 64 80 47 80 7A  ..N.K..%.ePd.G.z
00A0: 73 74 EF 89 41 81 31 85   35 8C B4 84 3A 34 28 08  st..A.1.5...:4(.
00B0: 2B 7A B4 E4 C1 C1 46 34   C1 83 10 7C 45 52 9D C5  +z....F4....ER..
00C0: 6A 94 F2 58 CA C6 A7 65   F1 56 C4 52 FC 54 91 D9  j..X...e.V.R.T..
00D0: 74 74 A5 41 B8 DF 57 E2   88 2C 51 5A 26 05 16 2D  tt.A..W..,QZ&..-
00E0: 0E E5 40 4E 21 06 97 D5   65 DD C0 43 E6 AB A1 1A  ..@N!...e..C....
00F0: 33 9C F9 FF 96 AE 87 21   6B 07 52 4F EB 20 26 3F  3......!k.RO. &?

], [
[
  Version: V3
  Subject: CN=GlobalSign RSA OV SSL CA 2018, O=GlobalSign nv-sa, C=BE
  Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11

  Key:  Sun RSA public key, 2048 bits
  params: null
  modulus: 21126566361448906107436419936616456930503766795295011397390099377214532594339540630127839983694000880957855429090662736543459885979148095011845773324878609805910592394098822605447205094595434773457756619595496551339815291517938821967518409268674135327890982411359059853554206557405488402844883476783910436071263072611374930015184977470928360416482680275213210359134955800600416298955663157681791825971806614492086218468021537113159139781585498849221181678353105886727402106622369312650411327690533152044002528504537929182833153678424044530351812527294481555102466085982300518657855234182316103558953341555178558367567
  public exponent: 65537
  Validity: [From: Wed Nov 21 00:00:00 UTC 2018,
               To: Tue Nov 21 00:00:00 UTC 2028]
  Issuer: CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA - R3
  SerialNumber: [    01ee5f22 1dfc623b d4333a85 57]

Certificate Extensions: 7
[1]: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false
AuthorityInfoAccess [
  [
   accessMethod: ocsp
   accessLocation: URIName: http://ocsp2.globalsign.com/rootr3
]
]

[2]: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 8F F0 4B 7F A8 2E 45 24   AE 4D 50 FA 63 9A 8B DE  ..K...E$.MP.c...
0010: E2 DD 1B BC                                        ....
]
]

[3]: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
  CA:true
  PathLen:0
]

[4]: ObjectId: 2.5.29.31 Criticality=false
CRLDistributionPoints [
  [DistributionPoint:
     [URIName: http://crl.globalsign.com/root-r3.crl]
]]

[5]: ObjectId: 2.5.29.32 Criticality=false
CertificatePolicies [
  [CertificatePolicyId: [2.5.29.32.0]
[PolicyQualifierInfo: [
  qualifierID: 1.3.6.1.5.5.7.2.1
  qualifier: 0000: 16 26 68 74 74 70 73 3A   2F 2F 77 77 77 2E 67 6C  .&https://www.gl
0010: 6F 62 61 6C 73 69 67 6E   2E 63 6F 6D 2F 72 65 70  obalsign.com/rep
0020: 6F 73 69 74 6F 72 79 2F                            ository/

]]  ]
]

[6]: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
  DigitalSignature
  Key_CertSign
  Crl_Sign
]

[7]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: F8 EF 7F F2 CD 78 67 A8   DE 6F 8F 24 8D 88 F1 87  .....xg..o.$....
0010: 03 02 B3 EB                                        ....
]
]

]
  Algorithm: [SHA256withRSA]
  Signature:
0000: 99 90 C8 2D 5F 42 8A D4   0B 66 DB 98 03 73 11 D4  ...-_B...f...s..
0010: 88 86 52 28 53 8A FB AD   DF FD 73 8E 3A 67 04 DB  ..R(S.....s.:g..
0020: C3 53 14 70 14 09 7C C3   E0 F8 D7 1C 98 1A A2 C4  .S.p............
0030: 3E DB E9 00 E3 CA 70 B2   F1 22 30 21 56 DB D3 AD  >.....p..\"0!V...
0040: 79 5E 81 58 0B 6D 14 80   35 F5 6F 5D 1D EB 9A 47  y^.X.m..5.o]...G
0050: 05 FF 59 8D 00 B1 40 DA   90 98 96 1A BA 6C 6D 7F  [email protected].
0060: 8C F5 B3 80 DF 8C 64 73   36 96 79 79 69 74 EA BF  ......ds6.yyit..
0070: F8 9E 01 8F A0 95 69 8D   E9 84 BA E9 E5 D4 88 38  ......i........8
0080: DB 78 3B 98 D0 36 7B 29   B0 D2 52 18 90 DE 52 43  .x;..6.)..R...RC
0090: 00 AE 6A 27 C8 14 9E 86   95 AC E1 80 31 30 7E 9A  ..j'........10..
00A0: 25 BB 8B AC 04 23 A6 99   00 E8 F1 D2 26 EC 0F 7E  %....#......&...
00B0: 3B 8A 2B 92 38 13 1D 8F   86 CD 86 52 47 E6 34 7C  ;.+.8......RG.4.
00C0: 5B A4 02 3E 8A 61 7C 22   76 53 5A 94 53 33 86 B8  [..>.a.\"vSZ.S3..
00D0: 92 A8 72 AF A1 F9 52 87   1F 31 A5 FC B0 81 57 2F  ..r...R..1....W/
00E0: CD F4 CE DC F6 24 CF A7   E2 34 90 68 9D FE AA F1  .....$...4.h....
00F0: A9 9A 12 CC 9B C0 C6 C3   A8 A5 B0 21 7E DE 48 F6  ...........!..H.

]], UNKNOWN)

jakarta.xml.ws.WebServiceException: javax.net.ssl.SSLException: Tag mismatch!
        at com.sun.xml.ws.transport.http.client.HttpClientTransport.readResponseCodeAndMessage(HttpClientTransport.java:181)
        at com.sun.xml.ws.transport.http.client.HttpTransportPipe.createResponsePacket(HttpTransportPipe.java:227)
        at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:218)
        at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:131)
        at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:111)
        at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1106)
        at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1020)
        at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:989)
        at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:847)
        at com.sun.xml.ws.client.Stub.process(Stub.java:431)
        at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:160)
        at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
        at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:62)
        at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:132)
        at com.sun.proxy.$Proxy47.create(Unknown Source)
        at com.helger.peppol.smlclient.ManageParticipantIdentifierServiceCaller.create(ManageParticipantIdentifierServiceCaller.java:173)
        at com.helger.peppol.smlclient.ManageParticipantIdentifierServiceCaller.create(ManageParticipantIdentifierServiceCaller.java:139)
        at com.sml.SMLWriter.write(SMLWriter.java:81)
        at com.sml.SMLWriter.main(SMLWriter.java:50)
Caused by: javax.net.ssl.SSLException: Tag mismatch!
        at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:133)
        at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:360)
        at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:303)
        at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:298)
        at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:123)
        at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1514)
        at java.base/sun.security.ssl.SSLSocketImpl.readApplicationRecord(SSLSocketImpl.java:1481)
        at java.base/sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:1070)
        at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:252)
        at java.base/java.io.BufferedInputStream.read1(BufferedInputStream.java:292)
        at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:351)
        at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:789)
        at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:724)
        at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:748)
        at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1615)
        at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1520)
        at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:527)
        at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:334)
        at com.sun.xml.ws.transport.http.client.HttpClientTransport.readResponseCodeAndMessage(HttpClientTransport.java:177)
        ... 18 more
Caused by: javax.crypto.AEADBadTagException: Tag mismatch!
        at java.base/com.sun.crypto.provider.GaloisCounterMode.decryptFinal(GaloisCounterMode.java:623)
        at java.base/com.sun.crypto.provider.CipherCore.finalNoPadding(CipherCore.java:1122)
        at java.base/com.sun.crypto.provider.CipherCore.fillOutputBuffer(CipherCore.java:1059)
        at java.base/com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:945)
        at java.base/com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:491)
        at java.base/javax.crypto.CipherSpi.bufferCrypt(CipherSpi.java:779)
        at java.base/javax.crypto.CipherSpi.engineDoFinal(CipherSpi.java:730)
        at java.base/javax.crypto.Cipher.doFinal(Cipher.java:2497)
        at java.base/sun.security.ssl.SSLCipher$T13GcmReadCipherGenerator$GcmReadCipher.decrypt(SSLCipher.java:1929)
        at java.base/sun.security.ssl.SSLSocketInputRecord.decodeInputRecord(SSLSocketInputRecord.java:264)
        at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:181)
        at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:111)
        ... 32 more

SMP Dynamic Discovery Error

Dear Philip and Team,

The SMP query can be accessed through a browser, but an error is encountered during SMK dynamic discovery. Can you guide me on resolving this issue? The log is provided below for your reference.

[2024-02-29T15:24:29,437] [phase4-peppol] [INFO ] [https-jsse-nio-443-exec-1] Performing SMP query at 'GET http://B-bb826466dfe7f7db3786cdaf92b3eea3.iso6523-actorid-upis.acc.edelivery.tech.ec.europa.eu/iso6523-actorid-upis%3A%3A0230%3A99202003251658t/services/busdox-docid-qns%3A%3Aurn%3Aoasis%3Anames%3Aspecification%3Aubl%3Aschema%3Axsd%3AInvoice-2%3A%3AInvoice%23%23urn%3Acen.eu%3Aen16931%3A2017%23compliant%23urn%3Afdc%3Apeppol.eu%3A2017%3Apoacc%3Abilling%3A3.0%3A%3A2.1' -- com.helger.smpclient.httpclient.AbstractGenericSMPClient.executeRequest(AbstractGenericSMPClient.java:362) [2024-02-29T15:24:30,339] [phase4-peppol] [ERROR] [https-jsse-nio-443-exec-1] Error performing SMP query: org.apache.hc.client5.http.ClientProtocolException - null -- com.helger.smpclient.httpclient.AbstractGenericSMPClient.executeRequest(AbstractGenericSMPClient.java:370) [2024-02-29T15:24:30,339] [phase4-peppol] [ERROR] [https-jsse-nio-443-exec-1] Exception sending AS4 user message -- com.helger.phase4.sender.AbstractAS4UserMessageBuilder.lambda$1(AbstractAS4UserMessageBuilder.java:764) com.helger.phase4.dynamicdiscovery.Phase4SMPException: Failed to resolve SMP endpoint (iso6523-actorid-upis::0230:99202003251658t, busdox-docid-qns::urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1, cenbii-procid-ubl::urn:fdc:peppol.eu:2017:poacc:billing:01:1.0, peppol-transport-as4-v2_0) at com.helger.phase4.dynamicdiscovery.AS4EndpointDetailProviderPeppol.init(AS4EndpointDetailProviderPeppol.java:216) ~[phase4-dynamic-discovery-2.7.5-SNAPSHOT.jar:?] at com.helger.phase4.peppol.Phase4PeppolSender$AbstractPeppolUserMessageBuilder.finishFields(Phase4PeppolSender.java:790) ~[phase4-peppol-client-2.7.5-SNAPSHOT.jar:?] at com.helger.phase4.peppol.Phase4PeppolSender$Builder.finishFields(Phase4PeppolSender.java:1344) ~[phase4-peppol-client-2.7.5-SNAPSHOT.jar:?] at com.helger.phase4.sender.AbstractAS4MessageBuilder.sendMessage(AbstractAS4MessageBuilder.java:831) ~[phase4-lib-2.7.5-SNAPSHOT.jar:?] at com.helger.phase4.sender.AbstractAS4UserMessageBuilder.sendMessageAndCheckForReceipt(AbstractAS4UserMessageBuilder.java:798) ~[phase4-lib-2.7.5-SNAPSHOT.jar:?] at com.helger.phase4.sender.AbstractAS4UserMessageBuilder.sendMessageAndCheckForReceipt(AbstractAS4UserMessageBuilder.java:764) ~[phase4-lib-2.7.5-SNAPSHOT.jar:?] at com.smartfund.peppol.rest.resource.SendMessageResource._sendPeppolMessage(SendMessageResource.java:252) ~[classes/:2.7.5-SNAPSHOT] at com.smartfund.peppol.rest.resource.SendMessageResource.sendMessage(SendMessageResource.java:146) ~[classes/:2.7.5-SNAPSHOT] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?] at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[?:?] at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) ~[jersey-server-3.1.5.jar:?] at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) ~[jersey-server-3.1.5.jar:?] at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) ~[jersey-server-3.1.5.jar:?] at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) ~[jersey-server-3.1.5.jar:?] at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) ~[jersey-server-3.1.5.jar:?] at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) ~[jersey-server-3.1.5.jar:?] at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) ~[jersey-server-3.1.5.jar:?] at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) ~[jersey-server-3.1.5.jar:?] at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:261) ~[jersey-server-3.1.5.jar:?] at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) ~[jersey-common-3.1.5.jar:?] at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) ~[jersey-common-3.1.5.jar:?] at org.glassfish.jersey.internal.Errors.process(Errors.java:292) ~[jersey-common-3.1.5.jar:?] at org.glassfish.jersey.internal.Errors.process(Errors.java:274) ~[jersey-common-3.1.5.jar:?] at org.glassfish.jersey.internal.Errors.process(Errors.java:244) ~[jersey-common-3.1.5.jar:?] at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265) ~[jersey-common-3.1.5.jar:?] at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:240) ~[jersey-server-3.1.5.jar:?] at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:697) ~[jersey-server-3.1.5.jar:?] at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394) ~[jersey-container-servlet-core-3.1.5.jar:?] at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346) ~[jersey-container-servlet-core-3.1.5.jar:?] at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:357) ~[jersey-container-servlet-core-3.1.5.jar:?] at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:311) ~[jersey-container-servlet-core-3.1.5.jar:?] at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) ~[jersey-container-servlet-core-3.1.5.jar:?] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205) ~[catalina.jar:10.1.19] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[catalina.jar:10.1.19] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-websocket.jar:10.1.19] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[catalina.jar:10.1.19] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[catalina.jar:10.1.19] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[catalina.jar:10.1.19] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[catalina.jar:10.1.19] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) ~[catalina.jar:10.1.19] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[catalina.jar:10.1.19] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[catalina.jar:10.1.19] at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:673) ~[catalina.jar:10.1.19] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[catalina.jar:10.1.19] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) ~[catalina.jar:10.1.19] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391) ~[tomcat-coyote.jar:10.1.19] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-coyote.jar:10.1.19] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896) ~[tomcat-coyote.jar:10.1.19] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1744) ~[tomcat-coyote.jar:10.1.19] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-coyote.jar:10.1.19] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-util.jar:10.1.19] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-util.jar:10.1.19] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) ~[tomcat-util.jar:10.1.19] at java.base/java.lang.Thread.run(Thread.java:1583) [?:?] Caused by: com.helger.smpclient.exception.SMPClientBadResponseException: Error in validating signature returned from SMP server at com.helger.smpclient.httpclient.SMPHttpResponseHandlerSigned.handleEntity(SMPHttpResponseHandlerSigned.java:334) ~[peppol-smp-client-9.3.1-SNAPSHOT.jar:9.3.1-SNAPSHOT] at com.helger.smpclient.httpclient.AbstractSMPResponseHandler.handleResponse(AbstractSMPResponseHandler.java:86) ~[peppol-smp-client-9.3.1-SNAPSHOT.jar:9.3.1-SNAPSHOT] at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:247) ~[httpclient5-5.2.3.jar:5.2.3] at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:188) ~[httpclient5-5.2.3.jar:5.2.3] at com.helger.httpclient.HttpClientManager.execute(HttpClientManager.java:137) ~[ph-httpclient-10.1.7.jar:10.1.7] at com.helger.smpclient.httpclient.AbstractGenericSMPClient.executeRequest(AbstractGenericSMPClient.java:363) ~[peppol-smp-client-9.3.1-SNAPSHOT.jar:9.3.1-SNAPSHOT] at com.helger.smpclient.httpclient.AbstractGenericSMPClient.executeGenericRequest(AbstractGenericSMPClient.java:401) ~[peppol-smp-client-9.3.1-SNAPSHOT.jar:9.3.1-SNAPSHOT] at com.helger.smpclient.peppol.SMPClientReadOnly.getServiceMetadata(SMPClientReadOnly.java:551) ~[peppol-smp-client-9.3.1-SNAPSHOT.jar:9.3.1-SNAPSHOT] at com.helger.smpclient.peppol.SMPClientReadOnly.getServiceMetadataOrNull(SMPClientReadOnly.java:639) ~[peppol-smp-client-9.3.1-SNAPSHOT.jar:9.3.1-SNAPSHOT] at com.helger.smpclient.peppol.ISMPServiceMetadataProvider.getEndpointAt(ISMPServiceMetadataProvider.java:180) ~[peppol-smp-client-9.3.1-SNAPSHOT.jar:9.3.1-SNAPSHOT] at com.helger.smpclient.peppol.ISMPServiceMetadataProvider.getEndpoint(ISMPServiceMetadataProvider.java:126) ~[peppol-smp-client-9.3.1-SNAPSHOT.jar:9.3.1-SNAPSHOT] at com.helger.phase4.dynamicdiscovery.AS4EndpointDetailProviderPeppol.init(AS4EndpointDetailProviderPeppol.java:188) ~[phase4-dynamic-discovery-2.7.5-SNAPSHOT.jar:?] ... 53 more Caused by: javax.xml.crypto.MarshalException: It is forbidden to use algorithm http://www.w3.org/2000/09/xmldsig#rsa-sha1 when secure validation is enabled at java.xml.crypto/org.jcp.xml.dsig.internal.dom.DOMSignedInfo.<init>(DOMSignedInfo.java:155) ~[java.xml.crypto:?] at java.xml.crypto/org.jcp.xml.dsig.internal.dom.DOMXMLSignature.<init>(DOMXMLSignature.java:141) ~[java.xml.crypto:?] at java.xml.crypto/org.jcp.xml.dsig.internal.dom.DOMXMLSignatureFactory.unmarshal(DOMXMLSignatureFactory.java:193) ~[java.xml.crypto:?] at java.xml.crypto/org.jcp.xml.dsig.internal.dom.DOMXMLSignatureFactory.unmarshalXMLSignature(DOMXMLSignatureFactory.java:148) ~[java.xml.crypto:?] at com.helger.smpclient.httpclient.SMPHttpResponseHandlerSigned.checkSignature(SMPHttpResponseHandlerSigned.java:216) ~[peppol-smp-client-9.3.1-SNAPSHOT.jar:9.3.1-SNAPSHOT] at com.helger.smpclient.httpclient.SMPHttpResponseHandlerSigned._checkSignature(SMPHttpResponseHandlerSigned.java:296) ~[peppol-smp-client-9.3.1-SNAPSHOT.jar:9.3.1-SNAPSHOT] at com.helger.smpclient.httpclient.SMPHttpResponseHandlerSigned.handleEntity(SMPHttpResponseHandlerSigned.java:319) ~[peppol-smp-client-9.3.1-SNAPSHOT.jar:9.3.1-SNAPSHOT] at com.helger.smpclient.httpclient.AbstractSMPResponseHandler.handleResponse(AbstractSMPResponseHandler.java:86) ~[peppol-smp-client-9.3.1-SNAPSHOT.jar:9.3.1-SNAPSHOT] at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:247) ~[httpclient5-5.2.3.jar:5.2.3] at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:188) ~[httpclient5-5.2.3.jar:5.2.3] at com.helger.httpclient.HttpClientManager.execute(HttpClientManager.java:137) ~[ph-httpclient-10.1.7.jar:10.1.7] at com.helger.smpclient.httpclient.AbstractGenericSMPClient.executeRequest(AbstractGenericSMPClient.java:363) ~[peppol-smp-client-9.3.1-SNAPSHOT.jar:9.3.1-SNAPSHOT] at com.helger.smpclient.httpclient.AbstractGenericSMPClient.executeGenericRequest(AbstractGenericSMPClient.java:401) ~[peppol-smp-client-9.3.1-SNAPSHOT.jar:9.3.1-SNAPSHOT] at com.helger.smpclient.peppol.SMPClientReadOnly.getServiceMetadata(SMPClientReadOnly.java:551) ~[peppol-smp-client-9.3.1-SNAPSHOT.jar:9.3.1-SNAPSHOT] at com.helger.smpclient.peppol.SMPClientReadOnly.getServiceMetadataOrNull(SMPClientReadOnly.java:639) ~[peppol-smp-client-9.3.1-SNAPSHOT.jar:9.3.1-SNAPSHOT] at com.helger.smpclient.peppol.ISMPServiceMetadataProvider.getEndpointAt(ISMPServiceMetadataProvider.java:180) ~[peppol-smp-client-9.3.1-SNAPSHOT.jar:9.3.1-SNAPSHOT] at com.helger.smpclient.peppol.ISMPServiceMetadataProvider.getEndpoint(ISMPServiceMetadataProvider.java:126) ~[peppol-smp-client-9.3.1-SNAPSHOT.jar:9.3.1-SNAPSHOT] at com.helger.phase4.dynamicdiscovery.AS4EndpointDetailProviderPeppol.init(AS4EndpointDetailProviderPeppol.java:188) ~[phase4-dynamic-discovery-2.7.5-SNAPSHOT.jar:?] ... 53 more [2024-02-29T15:24:30,340] [phase4-peppol] [INFO ] [https-jsse-nio-443-exec-1] Peppol client send result: TRANSPORT_ERROR -- com.smartfund.peppol.rest.resource.SendMessageResource._sendPeppolMessage(SendMessageResource.java:253)

Automatically register an SMP if it is not already registered on startup

It would be nice if when we spin up a Docker image with a custom smp-server.properties file that contains all the information necessary to register the SMP, that it check to see if it is registered and if not, then automatically register itself. With this feature (and the issue requesting that the hostname / IP address be added to the config file) we can create a one-click install for the DevOps/AppOps personnel that will download, install, configure and register the SMP so that it is live an ready to be used.

Provide basic information for a L2/L3 playbook

Please provide a short list common errors and procedure to resolve suitable for L2 and L3 consumption. This will be used to create a playbook for L2 and L3 on how to resolve errors in production.

Returns metadata even if the DocumentType schema is different.

In the "getWildCardServiceMetadataOrNull" method,
Returns metadata even if the DocumentType schema is different.

A-NZ PINT Invoice v1.0 as an example,

(1) Registed only Endpoints of such DocumentType
Scheme : peppol-doctype-wildcard
Value : urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:peppol:pint:billing-1@aunz-1*::2.1

(2) If you try to get metadata by specifying the following DocumentType using the "getWildCardServiceMetadataOrNull" method,
you can get it.
Scheme : busdox-docid-qns
Value : urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:peppol:pint:billing-1@aunz-1::2.1

CURL commands for monitoring

Please provide suggestion template CURL commands that can be used by a monitoring program to determine if the Phoss-SMP server is operating normally. I am thinking something on the UI port (usually 8080) to verify that the UI is working, and something that verifies port 80 is working (retrieve service metal data for some participant?).

SBDH Creation - How to read document type and process schema from document body

Ciao, I'm writing a function for create the SBDH header with the following parameters:

  • Sender
  • Receiver

Can I abstract from the document type and process schema calculating those data from the body of the document?
This is my code, thanks.


Resource fileResource = new ClassPathResource("esempi/EsempioOrdineInizialiBuono.xml");		
String contenuto_file = CharStreams.toString(new InputStreamReader(fileResource.getInputStream(), Charsets.UTF_8));
final Document aDoc = DOMReader.readXMLDOM (contenuto_file);

// Create the document data
 final PeppolSBDHDocument aData = PeppolSBDHDocument.createUBL21 (
	    		aDoc.getDocumentElement (),
PeppolIdentifierFactory.INSTANCE)
	               .setSenderWithDefaultScheme ("0088:sender")
	               .setReceiverWithDefaultScheme ("0099:receiver")
	               .setDocumentTypeWithBusdoxDocidQns ("urn:foobar::root#doctypeid:2.1")
	               .setProcessWithDefaultScheme ("procid");
	    // Create the SBDH document
	    final StandardBusinessDocument aSBD = new PeppolSBDHDocumentWriter().createStandardBusinessDocument (aData);
	    final String sXML = new SBDMarshaller().getAsString (aSBD);

Create a caching SMP client class

Same as SMPClient but with a time-based cache, that keeps the previous results for like 24 hours.
Key: participant ID, document type ID, process ID and transport protocol.

SMP specification 1.2.0: Check ServiceActivationDate/ServiceExpirationDate

As far as I am aware, the fields ServiceActivationDate and ServiceExpirationDate returned in the response from the SMP when querying an endpoint are ignored as of now.
As of version 1.2.0 of the SMP it was clarified that they should be checked for validity and the connection to that endpoint should be refused when they are not valid yet/anymore.

I guess it should be a check in the SMPClientReadOnly class in the getEndpoint() Method. I can try to add it myself if you have not planned anything yet.

Invalid SML response HTTP Status code for SOAP Faults

  • When trying to create a new Service Group in an SMP, it calls ManageBusinessIdentifierService in the SML.
  • This currently uses SOAP 1.1 for this interface.
  • Now lets see the following request (to force a SOAP Fault, because of an invalid Participant ID):
---[HTTP request - https://acc.edelivery.tech.ec.europa.eu/edelivery-sml/manageparticipantidentifier]---
Accept: text/xml, multipart/related
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://busdox.org/serviceMetadata/ManageBusinessIdentifierService/1.0/ :createIn"
User-Agent: XML-WS Runtime 4.0.2 git-revision#0264419


<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S=["http://schemas.xmlsoap.org/soap/envelope/"](http://schemas.xmlsoap.org/soap/envelope/)><S:Body><CreateParticipantIdentifier xmlns=["http://busdox.org/serviceMetadata/locator/1.0/"](http://busdox.org/serviceMetadata/locator/1.0/) xmlns:ns2=["http://busdox.org/transport/identifiers/1.0/"](http://busdox.org/transport/identifiers/1.0/)><ServiceMetadataPublisherID>HELGER2-SMP</ServiceMetadataPublisherID><ns2:ParticipantIdentifier scheme="iso6523-actorid-upis">test1234</ns2:ParticipantIdentifier></CreateParticipantIdentifier></S:Body></S:Envelope>
--------------------

Formatted:

<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S=["http://schemas.xmlsoap.org/soap/envelope/"](http://schemas.xmlsoap.org/soap/envelope/)>
  <S:Body>
    <CreateParticipantIdentifier xmlns=["http://busdox.org/serviceMetadata/locator/1.0/"](http://busdox.org/serviceMetadata/locator/1.0/) xmlns:ns2=["http://busdox.org/transport/identifiers/1.0/"](http://busdox.org/transport/identifiers/1.0/)>
      <ServiceMetadataPublisherID>HELGER2-SMP</ServiceMetadataPublisherID>
      <ns2:ParticipantIdentifier scheme="iso6523-actorid-upis">test1234</ns2:ParticipantIdentifier>
    </CreateParticipantIdentifier>
  </S:Body>
</S:Envelope>
  • HTTP response returned:
---[HTTP response - https://acc.edelivery.tech.ec.europa.eu/edelivery-sml/manageparticipantidentifier - 400]---
null: HTTP/1.1 400 Bad Request
Connection: keep-alive
Content-Length: 562
Content-Type: text/xml; charset=UTF-8
Date: Tue, 16 Jan 2024 11:17:59 GMT
Server: Europa
Server-Timing: dtRpid;desc="1162590187", dtSInfo;desc="0"
Set-Cookie: JSESSIONID=xp4R_g_a1nHIDo_p5nGrjn9DN6RreB96fiICePrqfVw4i_XOW78p!1301775479; path=/; HttpOnly
Set-Cookie: dtCookie=v_4_srv_41_sn_D22A8364FD7636032D8649BEBF947978_perc_100000_ol_0_mul_1_app-3Aa59610c0788e5f57_1; Path=/; Domain=.europa.eu/edelivery-sml
X-OneAgent-JS-Injection: true


<soap:Envelope xmlns:soap=["http://schemas.xmlsoap.org/soap/envelope/"](http://schemas.xmlsoap.org/soap/envelope/)><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>[ERR-106] Identifier value test1234 is illegal. [xp4R_g_a1nHIDo_p5nGrjn9DN6RreB96fiICePrqfVw4i_XOW78p!1301775479!1705403879386]</faultstring><detail><BadRequestFault xmlns:ns2=["http://busdox.org/transport/identifiers/1.0/"](http://busdox.org/transport/identifiers/1.0/) xmlns=["http://busdox.org/serviceMetadata/locator/1.0/"](http://busdox.org/serviceMetadata/locator/1.0/)><FaultMessage>[ERR-106] Identifier value test1234 is illegal.</FaultMessage></BadRequestFault></detail></soap:Fault></soap:Body></soap:Envelope>
--------------------

Formatted:

<soap:Envelope xmlns:soap=["http://schemas.xmlsoap.org/soap/envelope/"](http://schemas.xmlsoap.org/soap/envelope/)>
  <soap:Body>
    <soap:Fault>
      <faultcode>soap:Server</faultcode>
      <faultstring>[ERR-106] Identifier value test1234 is illegal. [xp4R_g_a1nHIDo_p5nGrjn9DN6RreB96fiICePrqfVw4i_XOW78p!1301775479!1705403879386]</faultstring>
      <detail>
        <BadRequestFault xmlns:ns2=["http://busdox.org/transport/identifiers/1.0/"](http://busdox.org/transport/identifiers/1.0/) xmlns=["http://busdox.org/serviceMetadata/locator/1.0/"](http://busdox.org/serviceMetadata/locator/1.0/)>
          <FaultMessage>[ERR-106] Identifier value test1234 is illegal.</FaultMessage>
        </BadRequestFault>
      </detail>
    </soap:Fault>
  </soap:Body>
</soap:Envelope>
  • As expected a SOAP Fault but in combination with HTTP status code 400.

==> Based on the SOAP specification 1.1, SOAP faults MUST be returned with an HTTP status code 500: https://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383529

==> Only SOAP 1.2 specification allows the HTTP status codes 400 and 500 to be an error.

The SOAP version seems to be determined in the WSDL files by using the SOAP transport URI "http://schemas.xmlsoap.org/soap/http". By using "http://www.w3.org/2003/05/soap/bindings/HTTP/" it would be SOAP 1.2 instead.

Sent an emal to EC support. Lets see :)

Add support for RDBMS for PEPPOL Directory

Currently the website info says that PEPPOL directory only works with XML backend. Add support for RDBMS backend for PEPPOL directory. Preferred RDBMS backend is DB2.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.