Integrations
This page documents external dependencies and integration contracts relevant to backend maintainers.
Hazelcast (mandatory)
-
Purpose: distribution of configuration snapshots/read models to runtime consumers.
-
Integration mode: Hazelcast client (this service does not run an embedded member in production).
-
Consumer model: other backend services read Hazelcast directly (ACS, northbound-api, provisionportal, serviceapi, and other runtime services).
Configuration is provided by com.friendly:ft-cache:0.0.8 (see Caching Strategy for details).
Database (mandatory)
-
Supported DBs: MySQL and Oracle (profile-based configuration).
-
Schema management: Liquibase on startup from
src/main/resources/db/changelog/db.changelog-master.yaml. -
Access: Spring Data JPA + Hibernate.
Operational contract:
-
DB is the source of truth.
-
Hazelcast snapshots are derived and must reflect committed DB state (intended; see Runtime Behavior for current gaps).
SMTP / Email (optional at runtime, required for some features)
Dependency: spring-boot-starter-mail.
Used by:
-
user registration emails (see
src/main/java/com/friendly/ftconfigsservice/useradmin/RegistrationMailService.java) -
user deletion confirmation flows under
src/main/java/com/friendly/ftconfigsservice/auth/deletion
SMTP is not a hard dependency: when it is unavailable or disabled via MAIL_MODE (offline mode), the service degrades gracefully — temporary passwords are returned in the create-user/reset-password API responses and deletion uses a plain confirmation instead of OTP (the account is still deleted in the confirm step).
See Configuration — Delivery modes.
Observability (optional)
-
Metrics: Spring Boot Actuator + Prometheus registry (
micrometer-registry-prometheus). -
Endpoint:
/configs-service/actuator/prometheus(exposed by default; restrict in production via network/security config).
Build-time dependency source (required for builds)
Gradle pulls internal artifacts from GitHub Packages (see repositories { maven { url = https://maven.pkg.github.com/Friendly-Technologies/api-common … } } in build.gradle).
Configure:
-
GITHUB_USERNAME -
GITHUB_TOKEN