Skip to main content

What the SML does

The Service Metadata Locator (SML) is a DNS-based lookup service. When a sending Access Point needs to find which SMP manages a participant, it queries the SML. The SML resolves the participant identifier to an SMP hostname using a deterministic DNS naming scheme. For this to work, your SMP must be registered with the SML. phoss SMP can manage this registration automatically when SML integration is enabled.

Enabling SML integration

SML integration is disabled by default. Enable it through the Administration UI (Administration > SML Configuration) or by pre-configuring the settings table in your backend. The flag is stored as a runtime setting, not a static property. The sml.enabled runtime setting maps to ISMPSettings.isSMLEnabled().

Static SML properties

These properties are read at startup and cannot be changed at runtime:
# The SMP identifier registered with the SML
# This must match the ID assigned to you by your Peppol Authority
sml.smpid = YOUR-SMP-ID

# Optional: pre-fill the default SMP hostname for SML registration
# Format: http://smp.example.org (include http:// prefix)
sml.smp.hostname = http://smp.example.org

# Connection timeout for SML API calls (milliseconds)
# Defaults to system default when not set
sml.connection.timeout.ms = 5000

# Request/read timeout for SML API calls (milliseconds)
# Default: 30000 ms (30 seconds)
sml.request.timeout.ms = 20000
PropertyDefaultDescription
sml.smpidThe SMP identifier string registered with the SML. Assigned by your Peppol Authority. Required when SML is enabled.
sml.smp.hostnameDefault SMP hostname pre-filled in the registration form. Optional convenience setting.
sml.connection.timeout.mssystem defaultTCP connection timeout when calling the SML API, in milliseconds.
sml.request.timeout.ms30000HTTP read timeout when calling the SML API, in milliseconds.

DNS delegation

When you register your SMP with the SML, the SML creates a DNS CNAME record that delegates the subdomain for your participant identifiers to your SMP. The SML computes the DNS name by hashing the participant identifier with MD5 and prepending it to the SML DNS zone. For example, in the Peppol pilot network the DNS zone is acc.edelivery.tech.ec.europa.eu. A participant with identifier iso6523-actorid-upis::0088:5790000436057 resolves to a CNAME under that zone pointing to your SMP.
Your SMP must be publicly reachable on port 80 or 443 at the registered hostname before you register it with the SML. The SML may verify connectivity during registration.

Peppol SML vs OASIS SML

Peppol SMLOASIS SML
StandardPeppol SMP 1.xOASIS BDXR SMP 1.0 / 2.0
GovernanceOpenPeppolOASIS
Pilot endpointacc.edelivery.tech.ec.europa.euNetwork-specific
Production endpointedelivery.tech.ec.europa.euNetwork-specific
The SML endpoint is selected from the Administration UI, not from application.properties. The UI lists all pre-configured SML entries from peppol-commons.

Production vs test SML

Never register a test SMP with the production SML. Registration on the production SML affects real participants and document routing.
Use the pilot SML (acc.edelivery.tech.ec.europa.eu) for all development and integration testing. Switch to the production SML only when your SMP is ready for live traffic and you have a production certificate.

Build docs developers (and LLMs) love