Startup issues
Server won't start: keystore errors
Server won't start: keystore errors
keystore, certificate, or PKCS12.Causes and fixes:-
File not found: The path in
smp.keystore.pathis wrong or not readable by the process user. Use an absolute path in production. -
Wrong password:
smp.keystore.passwordandsmp.keystore.key.passwordmust both be correct and must match each other. -
Wrong alias:
smp.keystore.key.aliasmust exactly match the alias in the keystore. Check with: - Multiple entries: phoss SMP requires exactly one key entry in the keystore. Remove any extra entries.
-
Type mismatch: Set
smp.keystore.typeto match the actual file format:jks,pkcs12, orbcfks.
Server won't start: wrong backend config
Server won't start: wrong backend config
IllegalStateException: No SMP backend registered with ID 'xyz' or similar.The value of smp.backend does not match any registered backend ID. Valid built-in values are xml, sql, and mongodb. Verify the spelling in application.properties.If you are using a custom backend, ensure the backend JAR is on the classpath and the META-INF/services/ file contains the correct class name.Server starts but data directory errors appear
Server starts but data directory errors appear
webapp.datapath to an absolute path and ensure the process user has read/write access:REST API issues
404 on REST API calls with encoded slashes
404 on REST API calls with encoded slashes
GET or PUT to /iso6523-actorid-upis%3A%3A0088%3A5060000000001 returns HTTP 400 or 404.Peppol and BDXR participant identifiers may contain encoded slashes (%2F) in some schemes. Tomcat rejects these by default.Fix for Tomcat 10+: Add encodedSolidusHandling="decode" to the <Connector> in server.xml:Authentication failures: 401 Unauthorized
Authentication failures: 401 Unauthorized
REST writes fail with 403 Forbidden
REST writes fail with 403 Forbidden
Malformed XML responses
Malformed XML responses
smp.identifiertype and smp.rest.type are consistent:smp.identifiertype | smp.rest.type |
|---|---|
peppol or peppol-lax | peppol |
bdxr1 | bdxr |
bdxr2 | bdxr |
SML registration issues
SML registration fails: certificate not accepted
SML registration fails: certificate not accepted
- You are using the correct certificate for the environment (test vs production)
- The certificate has not expired (
keytool -list -vshows the validity period) smp.truststore.pathpoints to the truststore matching the environment
SML registration fails: network error or timeout
SML registration fails: network error or timeout
DNS does not resolve after successful SML registration
DNS does not resolve after successful SML registration
-
Verify
sml.smpidexactly matches the SMP ID registered with your Peppol Authority - Check the phoss SMP log for any warning during the SML call
-
Query the SML DNS zone directly to bypass local cache:
Docker issues
Docker volume permissions
Docker volume permissions
/var/smp or similar paths.The Tomcat process inside the container typically runs as a non-root user. Mount a named volume and ensure the host directory is writable:Container exits immediately on startup
Container exits immediately on startup
application.properties path, or missing environment variable.Database issues (SQL backend)
Cannot connect to database at startup
Cannot connect to database at startup
application.properties:target-database: MySQL, PostgreSQL, Oracle, DB2.Flyway migration errors on startup
Flyway migration errors on startup
- Check the Flyway error in the log — it includes the migration script name and the SQL error
- Ensure the database user has DDL privileges (
CREATE TABLE,ALTER TABLE, etc.) - If you are upgrading from an older version, consult the Migrations guide
Connection pool exhausted under load
Connection pool exhausted under load
max-connections if the server is under sustained load. Restart is required after changing pool settings.MongoDB issues
Cannot connect to MongoDB
Cannot connect to MongoDB
application.properties and that the MongoDB instance is reachable:MongoDB collections not created
MongoDB collections not created
smp.backend = mongodb.Reverse proxy issues
'Page not found' after proxy or context path change
'Page not found' after proxy or context path change
/smp) but accessed via a proxy at the root, all internal links will be broken.Set smp.forceroot = true to strip the context path from all generated links:Wrong self-referential URLs in SMP responses
Wrong self-referential URLs in SMP responses
smp.publicurl to the exact public URL and choose the correct mode for how the proxy forwards host information:UI issues
Content Security Policy (CSP) blocking resources
Content Security Policy (CSP) blocking resources
csp.enabled = true). To diagnose without disabling CSP entirely, enable reporting-only mode temporarily:Login page shows detailed error messages
Login page shows detailed error messages
webapp.security.login.errordetails = true), failed login attempts show whether the username or password was wrong. In production, set this to false to avoid leaking account existence information:Start page lists all participants
Start page lists all participants
Log analysis
phoss SMP uses Log4j 2 with SLF4J. Log output goes to the application server’s standard output by default. Enable debug logging for SMP components:| Pattern | Meaning |
|---|---|
Keystore loading failed | Keystore path, password, or alias problem |
No SMP backend registered | smp.backend value does not match any backend ID |
SML registration | SML call result (success or error detail) |
SMPRestFilter | Incoming REST request dispatch |
DAOException | XML backend file read/write failure |
Flyway | SQL migration status |