Loading…
Loading…
Describes the configuration for pulling centralized platform settings, including data residency enforcement and behavior in SaaS vs. self-hosted
The Platform Settings component provides a mechanism for the system to retrieve dynamic configuration from a central, re<customer>e service. This allows for platform-wide settings to be managed and updated without requiring a new deployment of the product.
This component is responsible for:
In self-hosted (BYOC) deployments, the components for reading settings are active, but the client that polls the re<customer>e service is not invoked. In this mode, the system uses product defaults.
The platform settings system operates on a pull-based model. The lifecycle and data flow differ based on the deployment model (SaaS vs. self-hosted).
flowchart TD
subgraph "SaaS Deployment Only"
A(Scheduler)
end
subgraph "Platform Components"
B(Settings Client)
D(JWT Verifier)
E(Settings Store)
G(Settings Provider)
H(Data Residency Guard)
end
subgraph "External Systems"
C(Re<customer>e Settings Service)
F(Database)
end
subgraph "Internal Consumers"
I(Other Platform Services)
end
A -->|1. Triggers periodic poll| B
B -->|2. Requests settings with credentials| C
C -->|3. Returns signed settings (JWT)| B
B -->|4. Validates JWT signature| D
B -->|5. Persists validated settings| E
E -->|6. Writes to| F
G -->|7. Reads current settings from| E
H -->|8. Consumes settings for checks| G
I -->|Consumes settings for behavior| G
style A fill:#f9f,stroke:#333,stroke-width:2pxPlatformSettingsClient. This client is responsible for initiating the settings retrieval process.PlatformSettingsClient authenticates to the re<customer>e settings service by sending the platform's productId, installationId, and the raw license JWT.SpecariaSettingsJwtVerifier validates the signature of the incoming JWT against a known JSON Web Key Set (JWKS). This ensures the settings are authentic and have not been tampered with.PlatformSettingsClient passes the settings to the PlatformSettingsStore. The JdbcPlatformSettingsStore implementation writes the settings to the platform's database. This store also interfaces with an AuditRepository to record specific changes, such as those related to support access.PlatformSettingsProvider, which reads the most recently persisted settings from the store. This ensures that even if a poll fails, the system continues to operate with the last known good configuration.NOTE
In self-hosted (BYOC) deployments, the polling client (PlatformSettingsClient) is not actively triggered. The PlatformSettingsProvider remains available for other components to inject, but it will return empty settings, causing consumers to fall back to their internal product defaults.
A key consumer of platform settings is the RegionResidencyGuard. This component enforces data residency requirements.
RuntimeRegionProvider, against the region.selected value retrieved from the platform settings.SaasCapability is enabled and there is a mismatch between the runtime region and the configured region, the guard can block write operations to prevent data from being stored in an incorrect location.RegionResidencyGuard is a no-op and always permits operations, regardless of the settings.The platform's runtime region is configured via system properties or environment variables. This value is used by the RegionResidencyGuard for data residency checks.
| Parameter | Type | Default | Description |
|---|---|---|---|
s2r.capacity.region | String | me-west1 | The primary system property for defining the runtime region. |
s2r.region | String | me-west1 | A secondary system property, used if s2r.capacity.region is not set. |
S2R_REGION | String | me-west1 | An environment variable, used if neither of the system properties are set. |
The system resolves the region using the following order of precedence:
s2r.capacity.region system propertys2r.region system propertyS2R_REGION environment variableme-west1 if none of the above are set or are blank.To set the runtime region to eu-central-1, you can use either a system property or an environment variable.
Set via a system property at startup:
java -Ds2r.capacity.region=eu-central-1 -jar application.jar
Set via an environment variable:
export S2R_REGION="eu-central-1"
java -jar application.jar
RegionResidencyGuard detects a mismatch between the platform's runtime region (e.g., me-west1) and the region specified in the centrally-managed platform settings (e.g., region.selected is us-east-2). The guard blocks writes to enforce data residency policy.PlatformSettingsClient may be failing to retrieve or validate new settings. Potential causes include:
PlatformSettingsClient uses the product identity to authenticate with the re<customer>e settings service.RegionResidencyGuard's behavior is also gated by the SaasCapability from the license.