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