Distinct from analytical queriesAnalytical queriesGrouped, aggregated and filtered reads for analytical clients, answered by the database rather than in application memory. This concerns the queries a chart or report sends, while analytic modelling defines the measures and dimensions they read.SAP only, which is a service answering the request a chart sends, and from loading a warehouseLoading a warehouseGetting data into an analytical store and keeping it current — connections to source systems, replication and the other integration tasks, import jobs and their lifecycle, and the monitoring that tells you a load failed before a report does. Distinct from replication, which is an application reading data that lives elsewhere as if it were local rather than a warehouse being filled.SAP and community, unassessed, which fills the tables underneath it.
Data & Persistence
Everything between the model and the rows it becomes: the shape of the data, which database holds it, how it changes safely, and what is kept when it is deleted, cached or copied.
Capabilities
Compare the concerns mapped here and open an ecosystem for its assessment. Artifact counts show providers; content counts show items linked directly to the capability.
Each ecosystem hexagon shows its own coverage assessment. Coverage is never combined across ecosystems.
Artifacts
Providers, examples and other artifacts mapped to this domain, from SAP and the community. Each artifact appears once.
It is a bundle, not a plugin with one job. Depending on it for one feature brings the rest.
If document versions are required, [@cap-js/sdm](artifact:cap-js-sdm) excludes versioned repositories in its [documented restrictions](https://raw.githubusercontent.com/cap-js/sdm/ad13b61f21816ebead2d08264a74521cfb75846c/README.md).
The metadata is inconsistent: the declared repository is github.com/acme/search-vocab and the README installs @acme/search-vocab, neither of which matches the published name. One release, November 2025.
It writes and it administers — ETL extraction and database user management are not read operations, and the same connection that profiles a column can move data out of the tenant. Masking is only as good as the configuration naming the fields, so an unlisted sensitive column is an unmasked one.
The README is one line and the package carries no licence field. Last released July 2023. The repository the package declares has been deleted — verified against the GitHub API, not just a failed fetch. The package is still on npm, so it installs; the source it was published from is no longer readable, which is a harder thing to discover than a stale version number.
Release and repository quiet for 39 months.
Not where the UI library itself is expected to bind data: the documentation leaves binding a component's content and events to the host framework. Not from a CDN script tag: the project publishes none, so it assumes a build step.
Nothing to choose here and nothing to install: it is what an ABAP Cloud system gives you. It shares a name and a lineage with CAP's CDS but is a different language in a different runtime, and a model does not move between them.
No published releases; repository quiet for 26 months.
Not an end-user app: it reads from any table the user names and writes into tables of the Z/Y namespace, with no authorisation check of its own, so the README asks a project to add its own checks on `S_TABU_DIS`/`S_TABU_NAM` and to restrict who may run it before it is used beyond a development system. XLSX upload and download are not ready for ABAP Cloud yet, and of the upload apps only the JSON one writes the file's rows back to the database.
Neither the package manifest nor the repository tree declares a licence.
Neither the package manifest nor the repository tree declares a licence.
No published releases; repository quiet for 66 months.
Neither the package manifest nor the repository tree declares a licence.
Neither the package manifest nor the repository tree declares a licence.
Neither the package manifest nor the repository tree declares a licence.
Its README says it plainly and so does this entry: this is not a simulation, every tool call reaches a live BW system, and write operations produce real changes. BW modelling objects are the definition of a warehouse — the blast radius of a wrong one is every report built on it.
Neither the package manifest nor the repository tree declares a licence.
The maintainer marks this under active development; public APIs, annotation names and OData contracts may still change.
Neither the package manifest nor the repository tree declares a licence.
Nothing about it is readable from outside the package: there is no repository, no issue tracker, and the npm page carries no readme, so the README, the examples and the changelog can be read only from the tarball or a CDN mirror, and a bug has nowhere to be filed. Provider URLs are called from the plugin with API keys taken from environment variables in a .env file, so on BTP no call resolves through a destination and the keys live in the environment. The npm line stops at 1.0.1 on 3 November 2025; the changelog shipped inside that version is headed v2.1, so the version npm shows and the version the author counts are not the same.
Neither the package manifest nor the repository tree declares a licence.
Neither the package manifest nor the repository tree declares a licence.
Neither the package manifest nor the repository tree declares a licence.
The maintainer marks this early development; expect the contract to move.
No license Neither the package manifest nor the repository tree declares a licence.
Functional boundary Marked BETA and called a first prototype on its own page, which names where it is wrong: when fields are mapped with CAST, CASE, ABS and other CDS functions there may still be errors in the fields, so a mapping that goes through one of those needs checking against the view it came from.
When user-dependent responses are cached without user-aware or explicit operation keys, or translated responses share keys across locales. These cases require key isolation; locale-aware keys are off by default.
Archived The declared repository is archived.
Functional boundary The repository is archived, so nothing here will move again. Fine to keep where it already runs; anything new should start from what the current cds deploy leaves open rather than from this.
No license Neither the package manifest nor the repository tree declares a licence.
Functional boundary The Maven coordinate its README gives, io.github.miyasuta:cds-feature-softdelete:1.0.0, does not resolve on Maven Central as of 2026-09-07 — you build and install it from source.
When your adoption policy excludes experimental dependencies: the [maintainer’s README](https://github.com/cap-js/cds-federation-synonyms#about-this-project) explicitly labels this plugin experimental.
It declares no peer range on [@sap/cds](artifact:sap-cds) and publishes no repository, so there is nothing to read but the package itself and no CI to look at.
The repository the package declares has been deleted — verified against the GitHub API, not just a failed fetch. The package is still on npm, so it installs; the source it was published from is no longer readable, which is a harder thing to discover than a stale version number.
The declared repository is archived.
It changes what DELETE means for every client of the annotated projection, so anything that must actually remove a row — an erasure request, a retention job — has to go around it.
Not on the [SAP BTP ABAP environment](artifact:btp-abap-environment) or another cloud ABAP system: the maintainer states the tool is not cloud ready, because the data sources and system tables it reads CDS metadata from are not released for cloud development. It is designed for SAP S/4HANA on-premise or private cloud, and the shipped Fiori application is configured for A4H and developer systems.
For deployed environments, the [README](https://raw.githubusercontent.com/cap-java/cds-feature-attachments/302f61c8bb76a0f54f43482ad91d89bf7dc5540f/README.md) excludes the cds-feature-attachments-fs file-system target, which is intended only for local development and testing.
If document versions are required, the [documented restrictions](https://raw.githubusercontent.com/cap-java/sdm/673769f24ef66fd97daa6a6be41262d45065d3fe/README.md) exclude versioned repositories.
Release and repository quiet for 80 months.
The declared repository is on SAP's internal GitHub (github.tools.sap) and is not publicly reachable, so npm is the only place to read anything about it.
DataZoo GmbH calls the extension experimental and states that minimal testing and benchmarking were done. The Business Source License 1.1 it carries restricts offering the software to third parties on a hosted or embedded basis, so an embedding product needs a commercial licence. Telemetry is on by default and is switched off per session with `SET erpl_telemetry_enabled = false` or for the machine with `DATAZOO_DISABLE_TELEMETRY=1`.
Its own feature comparison marks connection pooling, automatic reconnect, active-active reads, client-side data encryption, statement distribution, Kerberos authentication, the hdbuserstore, promises and TypeScript types as [@sap/hana-client](https://www.npmjs.com/package/@sap/hana-client) only, so a service that wants a pool or a promise API writes both itself over a callback interface. OpenSSL is its one security provider where the other driver lists SAP CommonCryptoLib, OpenSSL and MSCrypto, and it runs on Node.js 18 or later.
Where the release and programming model offer durable locks, as RAP draft handling does, the README states that those solve the problem at the kernel level and the lock manager is for where that is not an option. A running handler occupies one background work process for as long as any lock is held, and only generated `ENQUEUE_*` modules can be locked.
Business Source License 1.1, which is source-available rather than open source: reading and evaluating are fine, and production use is restricted until the licence's change date. That is a procurement question, not a technical one, and it is the thing to settle first. Read-only also means read-only — no modelling, no loads.
No published releases; repository quiet for 81 months.
Neither the package manifest nor the repository tree declares a licence.
Not for a table whose contents matter, and not for one chosen at run time: the name of the table is fixed in the calling code, and the maintainer's own warning is "only hardcode the table name, don't use with important tables, use at own risk!"
No published releases; repository quiet for 24 months.
No published releases; repository quiet for 72 months.
A tenant with its own model layer, its own transport and its own user administration — content moves between tenants through export and import jobs rather than through your pipeline, and planning brings a calendar and a workflow that a reporting-only use never touches.
It presumes the estate it governs: intelligent content is installed and viewed rather than authored, and the catalog is only as useful as what has been published into it. The Databricks path is a direction data goes, which is a decision about where analytics happens and not only about a tool.
A tenant with spaces and a role model, not a database you point an application at — privileges are granted per space, and what somebody can model depends on the scoped role they hold. Federation is the default answer to moving data, and where it is not, a load has to be scheduled and watched.
It reaches a data warehouse, so what an agent can see is business data by definition — the SQL sanitisation and PII filtering in the server are there because of that, not instead of a decision about it. And the guidance is Datasphere-shaped: nothing here transfers to a HANA Cloud database used directly.
For provisioning a managed database on BTP, see [SAP HANA Cloud](artifact:btp-hana-cloud). Features differ between HANA versions; an on-premise deployment and a cloud instance are not interchangeable without compatibility checks.
Provisioned per plan and per component, so capacity and cost are decisions taken before any model exists. And it is the database, not a warehouse — modelling, loading and cataloguing are the products above it, and reaching it directly bypasses every semantic they add.
Ninety tools is a large surface to put in front of a model at once, and client-credentials OAuth means the tenant sees one identity rather than the person asking. Content transport and user management sit in the same tool list as reading a story.
Business Source License 1.1: source-available, with production use restricted until the change date — settle that before anything technical. And the governed execution path in v0.2 does act on data, which is a different grant from the discovery the v0.1 baseline offered.
Neither the package manifest nor the repository tree declares a licence.
Archived The declared repository is archived.
Functional boundary For versioned or thumbnail-enabled repositories, or bulk upload and download, the [README](https://raw.githubusercontent.com/vneecious/sap-cap-sdm-plugin/d9f036b16542e5c5b9b6dc704e0ba5f880193212/README.md) labels this an “early release” and lists those features as unsupported.
Not where SAP's own Google Workspace integration already applies: the README opens by announcing a native integration between Google Workspace and [SAP S/4HANA](external:sap-s4hana), whose first set of features is included in SAP S/4HANA Cloud 2208 and SAP S/4HANA 2022 and needs an additional licence for the SAP Document Management Service. Not where end users cannot each hold a regular Google account, since there is no way to use an enterprise account or to log on to Google Drive through single sign-on, and not where the redirect URL Google calls cannot reach a public top-level domain server. No SAP standard support is provided for it.
Neither the package manifest nor the repository tree declares a licence.
Neither the package manifest nor the repository tree declares a licence.
Neither the package manifest nor the repository tree declares a licence.
The app writes to whatever table is passed in the URL parameter `table` and carries no authorisation check of its own, so past a development system it needs authorisation checks added and a restriction on who may run it.
Related capabilities
Distinct from analytical queriesAnalytical queriesGrouped, aggregated and filtered reads for analytical clients, answered by the database rather than in application memory. This concerns the queries a chart or report sends, while analytic modelling defines the measures and dimensions they read.SAP only, which is a service answering the request a chart sends, and from loading a warehouseLoading a warehouseGetting data into an analytical store and keeping it current — connections to source systems, replication and the other integration tasks, import jobs and their lifecycle, and the monitoring that tells you a load failed before a report does. Distinct from replication, which is an application reading data that lives elsewhere as if it were local rather than a warehouse being filled.SAP and community, unassessed, which fills the tables underneath it.
Separate from Analytical queriesAnalytical queriesGrouped, aggregated and filtered reads for analytical clients, answered by the database rather than in application memory. This concerns the queries a chart or report sends, while analytic modelling defines the measures and dimensions they read.SAP only, which is the query shape an OData client issues against the same service: here the question is what the service declares itself to be.
Data shipped with an application for development and demonstration is seed dataSeed dataGetting realistic data into a service so it can be developed and demonstrated — initial data, per-tenant content, and believable volumes for testing.SAP and community, narrow by design.
Connecting an application to the database is database connectorsDatabase connectorsConnecting an application’s data model and queries to a database, including the differences in supported queries, types and schema management between database implementations. Changing an existing schema belongs to schema evolution.SAP and community, narrow by design, moving files in and out of tables is importing and exporting table dataImporting and exporting table dataGetting a file somebody supplies, a spreadsheet, a CSV or a JSON dump, into tables with its columns mapped and its values checked, and getting table content back out as a file. Data shipped with an application for development and demonstration is seed data.SAP and community, unassessed, and what the instance costs is consumption monitoringConsumption monitoringKnowing what a cloud account consumes as it runs, in credits, capacity units and cost per service and organisational unit, and being warned before a budget is spent. Logging and telemetry watch what an application does; this watches what it costs.SAP only.
Connecting an application to the database is database connectorsDatabase connectorsConnecting an application’s data model and queries to a database, including the differences in supported queries, types and schema management between database implementations. Changing an existing schema belongs to schema evolution.SAP and community, narrow by design, moving files in and out of tables is importing and exporting table dataImporting and exporting table dataGetting a file somebody supplies, a spreadsheet, a CSV or a JSON dump, into tables with its columns mapped and its values checked, and getting table content back out as a file. Data shipped with an application for development and demonstration is seed data.SAP and community, unassessed, and what the instance costs is consumption monitoringConsumption monitoringKnowing what a cloud account consumes as it runs, in credits, capacity units and cost per service and organisational unit, and being warned before a budget is spent. Logging and telemetry watch what an application does; this watches what it costs.SAP only.
Connecting an application to the database is database connectorsDatabase connectorsConnecting an application’s data model and queries to a database, including the differences in supported queries, types and schema management between database implementations. Changing an existing schema belongs to schema evolution.SAP and community, narrow by design, moving files in and out of tables is importing and exporting table dataImporting and exporting table dataGetting a file somebody supplies, a spreadsheet, a CSV or a JSON dump, into tables with its columns mapped and its values checked, and getting table content back out as a file. Data shipped with an application for development and demonstration is seed data.SAP and community, unassessed, and what the instance costs is consumption monitoringConsumption monitoringKnowing what a cloud account consumes as it runs, in credits, capacity units and cost per service and organisational unit, and being warned before a budget is spent. Logging and telemetry watch what an application does; this watches what it costs.SAP only.
Changing an existing schema belongs to schema evolutionSchema evolutionGetting a model change into a database that already holds data, in every tenant, without losing any of it. Generating the initial schema and migrating one that already holds data are often treated as the same step.SAP and community, narrow by design.
Distinct from query profilingQuery profilingFinding which application queries are slow and why, at the application query layer rather than in database traces — attributing cost back to the service, entity and handler that caused it.Unmapped, which starts at the service and the database rather than at the browser's network log.
Choosing a database is database connectorsDatabase connectorsConnecting an application’s data model and queries to a database, including the differences in supported queries, types and schema management between database implementations. Changing an existing schema belongs to schema evolution.SAP and community, narrow by design; changing an existing schema is schema evolutionSchema evolutionGetting a model change into a database that already holds data, in every tenant, without losing any of it. Generating the initial schema and migrating one that already holds data are often treated as the same step.SAP and community, narrow by design.
Choosing a database is database connectorsDatabase connectorsConnecting an application’s data model and queries to a database, including the differences in supported queries, types and schema management between database implementations. Changing an existing schema belongs to schema evolution.SAP and community, narrow by design; changing an existing schema is schema evolutionSchema evolutionGetting a model change into a database that already holds data, in every tenant, without losing any of it. Generating the initial schema and migrating one that already holds data are often treated as the same step.SAP and community, narrow by design.
Storing geometries in the database and querying them there is graph, spatial and document dataGraph, spatial and document dataStoring and querying data that is not plain rows, such as a network of relationships, a geometry or a JSON document, in the database that already holds the rows instead of in a separate store per model. Free-text search over entities is search; similarity over embeddings is retrieval-augmented generation.SAP only.
Free-text search over entities is searchSearchFree-text search across an entity and its compositions, pushed into the database rather than filtered in the service. Declared search, database similarity search and filtering in application code are often lumped together.SAP and community, unassessed; similarity over embeddings is retrieval-augmented generationRetrieval-augmented generationGrounding a model's answer in data retrieved at question time: text split into chunks, each chunk embedded as a vector, and the chunks nearest to the question placed into the prompt. Semantic search is the same retrieval with a person reading the matches, and fine-tuning changes the model's weights, not its input.SAP and community, unassessed.
Free-text search over entities is searchSearchFree-text search across an entity and its compositions, pushed into the database rather than filtered in the service. Declared search, database similarity search and filtering in application code are often lumped together.SAP and community, unassessed; similarity over embeddings is retrieval-augmented generationRetrieval-augmented generationGrounding a model's answer in data retrieved at question time: text split into chunks, each chunk embedded as a vector, and the chunks nearest to the question placed into the prompt. Semantic search is the same retrieval with a person reading the matches, and fine-tuning changes the model's weights, not its input.SAP and community, unassessed.
It is decided once, before anything is built, and narrows the artifacts in almost every capability downstream: most sharply in cachingCachingHolding the result of an expensive read so the next one is cheap. This spans four different things people call caching — HTTP response caching, query result caching, remote service response caching, and application-level memoisation. They are not interchangeable, and picking the wrong one is the usual cause of stale-data bugs in multitenant apps.SAP and community, unassessed and anything else holding state in process.
Connecting a file to a business record is the separate AttachmentsAttachmentsStoring a file somebody uploaded next to the record it belongs to, and getting it back out — where the bytes actually live, who may read them, and what the UI shows while they are being scanned.SAP and community, unassessed concern.
Distinct from destinationsDestinationsReaching a system that is not yours — an S/4HANA tenant, an on-premise service, a third-party API — without the address, the credentials or the tunnel being written into the application. The destination is the indirection, and the reason an endpoint can move without a redeploy.SAP and community, unassessed, which is how the address and the credentials are found, and from replicationData federationReading data that lives in another system as if it were local — by federating the query, by copying the rows, or by caching what was read. Three different answers to one question, and the choice is about how stale you can afford to be.SAP and community, narrow by design, which is holding the data locally.
Computed in the application over data it already holds, which is what separates it from analytical queriesAnalytical queriesGrouped, aggregated and filtered reads for analytical clients, answered by the database rather than in application memory. This concerns the queries a chart or report sends, while analytic modelling defines the measures and dimensions they read.SAP only, where a service answers the grouped read a chart sends, and from predictive modelsPredictive modelsTraining, deploying and calling a model that predicts a value from tabular business data: a classification, a regression, a forecast. Distinct from LLM integration, where a language model generates text, even where both run on the same service.SAP only, which train and serve something that predicts a value.
Computed in the application over data it already holds, which is what separates it from analytical queriesAnalytical queriesGrouped, aggregated and filtered reads for analytical clients, answered by the database rather than in application memory. This concerns the queries a chart or report sends, while analytic modelling defines the measures and dimensions they read.SAP only, where a service answers the grouped read a chart sends, and from predictive modelsPredictive modelsTraining, deploying and calling a model that predicts a value from tabular business data: a classification, a regression, a forecast. Distinct from LLM integration, where a language model generates text, even where both run on the same service.SAP only, which train and serve something that predicts a value.
Looking at what a table holds is browsing table dataBrowsing table dataLooking at what a system holds while developing or supporting it: the rows behind a key, the reference data a field points at, the tables that carry data for one object. Editing configuration records through maintenance screens is a different job, even where the same transaction does both.SAP and community, unassessed, even where one transaction does both.
Distinct from concurrency controlConcurrency controlStopping two people who opened the same record from silently overwriting each other — detecting that the version you read is no longer the version you are saving over.SAP and community, unassessed, which is two writers on one record, and from async processingAsync processingDoing work outside the request that triggered it, with a guarantee that it eventually happens — deferred jobs, retries, and periodic work. Distinct from messaging, which is about telling other systems.SAP and community, narrow by design, which is work that survives the commit.
Distinct from concurrency controlConcurrency controlStopping two people who opened the same record from silently overwriting each other — detecting that the version you read is no longer the version you are saving over.SAP and community, unassessed, which is two writers on one record, and from async processingAsync processingDoing work outside the request that triggered it, with a guarantee that it eventually happens — deferred jobs, retries, and periodic work. Distinct from messaging, which is about telling other systems.SAP and community, narrow by design, which is work that survives the commit.
Distinct from replicationData federationReading data that lives in another system as if it were local — by federating the query, by copying the rows, or by caching what was read. Three different answers to one question, and the choice is about how stale you can afford to be.SAP and community, narrow by design, which is an application reading data that lives elsewhere as if it were local rather than a warehouse being filled.
Content
Content includes reference architectures. Each item appears once; filter by type to narrow the list.
Recent changes
- Attachmentscoverage by ecosystem revised
Reassessed against the graph (check:capabilities): removes a count-like claim about how many places do this.
- Attachmentscoverage by ecosystem revised
Reassessed against the graph (check:capabilities): the application option is a SAP-official BTP provider newer than the block that the text never named. The state stays core-only. Sourced from its Discovery Center record, retrieved 2026-10-26.
- Cataloguing and lineagecore coverage revised
Reassessed against the graph (check:capabilities): a newer community server publishes Delta shares as data products in Business Data Cloud, a kind the text did not name.
- Concurrency controlcore coverage revised
Reassessed against the graph (check:capabilities): a community cds-plugin provides this capability on the CAP door, so the state no longer matched the providers; relationship left unassessed for want of documentary evidence of the history.
- Concurrency controlcore coverage revised
Reassessed against the graph (check:capabilities): states what the community provider adds beyond the ETag.
- Data modellingcore coverage revised
Reassessed against the graph (check:capabilities): independent cds-plugin providers (cap-user-info, cds-numberrange-plugin) now provide this capability on the CAP door.
- Data modellingcoverage by ecosystem revised
Reassessed against the graph (check:capabilities): independent ABAP providers (CDS Analyser, CDS field mapping, acds) now provide this capability on the ABAP door.
- Database connectorscoverage by ecosystem revised
Reassessed against the graph (check:capabilities): the note claimed every provider on the door is an SAP service and carried a grammar slip; it now names the kinds and the providers that define them. State unchanged.
- Database connectorscoverage by ecosystem revised
Reassessed against the graph (check:capabilities): the note counted one entry behind the door; it now names the driver and SAP HANA, which now provides the capability on this door. State unchanged.
- Importing and exporting table datacore coverage revised
Reassessed against the graph (check:capabilities): the count of sample repositories goes stale as providers arrive, and the ABAP backend importer and the Excel add-in change the shape of the answer, so the note names those kinds. The ABAP state stays core-and-community.