Skip to main content

Split components

Split components are used for custom deployments: backend on one host, connector on another, external Elastic, or corporate supervisors.

Common components​

  • spot-server: UI/API and operational configuration.
  • spot-agent-sap: SAP extractor.
  • spot-license-blackbox: local validator required before backend and connector.
  • spotctl: administration and diagnostic utility.
  • RFC SDK: SAP libraries required by the connector.
  • External or separately managed Elastic.

When to Choose It​

  • You need custom directories defined by internal policy.
  • Basis, Linux, and observability responsibilities are separated.
  • Elastic is already standardized.
  • Startup is integrated into an existing supervisor.

Separate writing from reading​

Each spot-agent-sap process configures one Elasticsearch+namespace writer and may extract N SAP systems. Every entry requires an explicit ID; that same value is written as source_id and exposed as targetId by the UI/API. All SAP systems in the process share the namespace's two Data Streams but remain isolated by source_id.

The backend configures one or more independent read scopes, each with its own URL, namespace, and read credentials. Standalone connectors can feed several scopes by running separate processes. The catalog discovers every SAP, binds it to exactly one scope, and never fails over to another Elasticsearch.

Checklist​

  1. Define configuration, data, and log paths.
  2. Define the execution user for each process.
  3. Export RFC SDK variables.
  4. Install the validator and activate or install the license.
  5. Configure and test the backend read scopes.
  6. Configure each connector writer with the same namespace as its scope.
  7. Configure N SAP connections with explicit, unique IDs.
  8. Start the backend and connectors.
  9. Check health, logs, ingestion, and that /api/targets discovers every source_id in the correct scope.

Common risks​

  • RFC SDK variables missing from the service.
  • Log directories not writable.
  • External Elastic reachable from the backend but not from the connector.
  • Writer and reader namespaces differ.
  • The same source_id is published in two scopes, which blocks that target with target_binding_conflict.