6.4.2.9 AdapterMapping
6.4.2.9.1 Purpose¶
Which adapter reads which detected source version, chosen by staff in the Console instead of built into the client. When a product ships a new version that an existing strategy already reads, as SiAlleva 3.0.2 after 3.0.1, staff map the version, or a range, to that strategy, and the clients receive the mapping with their sync configuration: no client update is needed. A mapping can apply to everyone, to one Organization or to one feed, to try a strategy on one farm first, and the most specific one wins. Only a strategy that does not exist yet needs a new client release, which the mapping then names so that older clients update themselves.
6.4.2.9.2 Questions it answers¶
- Which adapter reads this product at this detected version, for this farm?
- Who mapped a version, when and why?
- Which strategy read a past run?
6.4.2.9.3 Fields¶
| Field | Type | Cardinality | Description |
|---|---|---|---|
id |
string (uuid) |
1..1 |
Key. |
side |
enum | 1..1 |
Values: client, parser, puller. |
source_channel |
SourceChannel | 1..1 |
The product, e.g. the ManagementSoftwareChannel SiAlleva. A puller mapping names a ThirdPartyPlatformChannel, the only kind of channel a puller reads; farm refuses any other with 422. Client and parser mappings name any channel. |
version_range |
string |
1..1 |
Detected versions it covers, in the channel's own version scheme: one version ("3.0.2") or a range ("≥3.0.1, <3.1"). |
adapter |
SourceAdapter | 1..1 |
The strategy and its version, of the same channel and side. |
scope |
enum | 1..1 |
Values: global, organization, feed. Default: global. |
organization |
Organization | 0..1 |
Set when scope = organization. |
source_feed |
SourceFeed | 0..1 |
Set when scope = feed: to try a strategy on one farm before mapping it for everyone. |
status |
enum | 1..1 |
Values: active, retired. Default: active. |
note |
string |
0..1 |
Why, e.g. "3.0.2 changed only the installer; tested on two farms". |
created_by |
MoonitoringUser | 1..1 |
|
system_version |
SystemVersion | 1..1 |
|
created_at |
datetime |
1..1 |
|
updated_at |
datetime |
1..1 |
6.4.2.9.4 Relationships¶
References
AdapterMapping.source_channel→ SourceChannel (1..1)AdapterMapping.adapter→ SourceAdapter (1..1)AdapterMapping.organization→ Organization (0..1)AdapterMapping.source_feed→ SourceFeed (0..1)AdapterMapping.created_by→ MoonitoringUser (1..1)
Referenced by
IntegrationGap.resolved_by(0..1)
Uses types
6.4.2.9.5 Rules & constraints¶
- Which adapter reads which detected source version, chosen by staff in the Console: e.g. SiAlleva 3.0.2 ships, and staff map it, or a range such as "≥3.0.1, <3.1", to the adapter
sialleva.export@1.4.0that already reads 3.0.1. The mapping reaches the clients with their sync configuration, so no client update is needed; only a strategy that does not exist yet needs a new release (Release). - For a detection the most specific active mapping wins: feed, then organization, then global. Within one side, channel and scope, the ranges of active mappings must not overlap, so a detected version maps to one adapter or none.
- No mapping: the run fails with
unsupported_sourceand records an IntegrationGapOccurrence; staff resolve the gap by mapping the version to an existing adapter, or by releasing a new one and mapping it. - A mapping to a client adapter that the client's installed build does not carry is delivered with the lowest build number that carries it (
SourceAdapter.build_number): the client refuses the run withunsupported_source, reports the gap and updates itself through its release channel (ReleaseChannel). - Every change is a PlatformAuditEvent and keeps its previous image in
system_version, so which strategy read any past run is known; the SyncRun also records the adapter it used (SyncRun.adapter).