{"ref":"artifact:cap-java-cds-services-bom","page":"/artifacts/cap-java-cds-services-bom","json":"/artifacts/cap-java-cds-services-bom.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"cap-java-cds-services-bom","name":"com.sap.cds:cds-services-bom","artifact_type":"package","ecosystem":"cap","domain":"operations-and-runtime","origin_ring":"sap-official","description":{"one_line":"The Maven bill of materials for CAP Java, pinning every com.sap.cds module in a release, from the API and core runtime to the Spring Boot starters and the CQN engine, to the same version.","short":"Maven bill of materials pinning CAP Java module versions","what_it_solves":"com.sap.cds:cds-services-bom is the Maven bill of materials for CAP Java. Importing it into a project's dependencyManagement keeps the version of every com.sap.cds module in a release in sync, so the group's modules do not have to be pinned one by one. It covers the interface custom code compiles against, com.sap.cds:cds-services-api, and the mandatory core runtime, com.sap.cds:cds-services-impl, the application frameworks com.sap.cds:cds-framework-spring-boot and com.sap.cds:cds-framework-plain, the starter bundles com.sap.cds:cds-starter-spring-boot, com.sap.cds:cds-starter-cloudfoundry and com.sap.cds:cds-starter-k8s, and the cds4j-* modules that make up the CQN execution engine, of which com.sap.cds:cds4j-api is the one custom code compiles against. None of these are separate entries here; this one entry describes the release as a whole. It stops at the Java stack: [@sap/cds](artifact:sap-cds) is the Node.js runtime for the same CDS model, and the compiler a CAP Java build runs still comes from the Node.js package @sap/cds-dk."},"links":{"homepage":"https://central.sonatype.com/artifact/com.sap.cds/cds-services-bom","docs":"https://cap.cloud.sap/docs/java/","changelog":"https://cap.cloud.sap/docs/releases/"},"identity":{"license":"SAP DEVELOPER LICENSE AGREEMENT for CAP"},"source_available":false,"compat":{"runtimes":["java"]},"flavors":[{"key":"java","source":{"url":"https://cap.cloud.sap/docs/java/getting-started","title":"Getting Started","checked":"2026-09-19","quote":"The CAP Java SDK enables developing CAP applications in Java."}}],"drafted_with_ai":true,"provides":[{"capability":"capability:authorization","what_it_does":"Evaluates the @requires and @restrict authorization annotations from the CDS model on every request, enforced by CAP's generic service providers without custom code.","sources":[{"url":"https://cap.cloud.sap/docs/guides/security/authorization","title":"CAP-level Authorization","checked":"2026-09-19","quote":"This guide explains how to restrict access to data by adding respective declarations to CDS models, that are then enforced by CAP's generic service providers."},{"url":"https://cap.cloud.sap/docs/java/ams","title":"IAS Authorization via AMS — capire","checked":"2026-09-27","quote":"Using the official AMS plugins (cds add ams), you can generate policies from the CDS model and get out-of-the-box enforcement of CAP role restrictions based on AMS policies during runtime."}],"delivery":"built-in"},{"capability":"capability:input-validation","what_it_does":"Enforces declarative @assert and @mandatory constraints whenever data is written, and translates the resulting validation error messages out of the box.","sources":[{"url":"https://cap.cloud.sap/docs/guides/services/constraints","title":"Declarative Constraints","checked":"2026-09-19","quote":"that are enforced automatically whenever data is written."},{"url":"https://cap.cloud.sap/docs/java/event-handlers/indicating-errors","title":"Indicating Errors","checked":"2026-09-19","quote":"CAP Java provides out-of-the-box translation for error messages that originate from input validation annotations"}],"delivery":"built-in"},{"capability":"capability:error-handling","what_it_does":"Ships ServiceException for aborting an event with a mapped HTTP status and the Messages API for collecting errors, warnings, info and success messages on a request without aborting it, both usable without an extra dependency.","sources":[{"url":"https://cap.cloud.sap/docs/java/event-handlers/indicating-errors","title":"Indicating Errors","checked":"2026-09-19","quote":"The CAP Java SDK provides two different ways to indicate errors:"}],"delivery":"built-in"},{"capability":"capability:localization","what_it_does":"Localizes ServiceException and Messages API text to the client's locale, and integrates with Spring's resource bundle support to resolve the translated strings.","sources":[{"url":"https://cap.cloud.sap/docs/java/event-handlers/indicating-errors","title":"Indicating Errors","checked":"2026-09-19","quote":"When the message or exception text is sent to the client it's localized using the client's locale"}],"delivery":"built-in"},{"capability":"capability:draft-handling","what_it_does":"Runs the SAP Fiori draft lifecycle for draft-enabled entities, merging active and draft data on read and triggering the ACTIVE_READ and DRAFT_READ events that let custom handlers override either side.","sources":[{"url":"https://cap.cloud.sap/docs/java/fiori-drafts","title":"Fiori Drafts","checked":"2026-09-19","quote":"When reading draft-enabled entities, data from the active entity and the drafts is merged into a joint result."}],"delivery":"built-in"},{"capability":"capability:fiori-annotations","what_it_does":"Serves the OData V4 metadata a Fiori elements client reads, carrying the annotations the compiled model holds, and hosts the index page whose Fiori preview renders a list page from them, turned on in a deployment with cds.index-page.enabled. The translation itself is the compiler's: a CAP Java build compiles the model to CSN with the Node.js package [@sap/cds-dk](artifact:sap-cds-dk), so a shortcut such as @hierarchy follows the cds-dk version the build installs rather than this release. One annotation the Java runtime reads itself rather than the compiler is @cds.java.descendants.aggregate, which on a virtual element builds a hierarchy view from an aggregate expression.","sources":[{"url":"https://cap.cloud.sap/docs/guides/uis/fiori","title":"Serving SAP Fiori UIs — Fiori Preview","checked":"2026-10-15","quote":"To also enable it in cloud deployments for test or demo purposes, set cds.fiori.preview:true for Node.js apps, or cds.index-page.enabled:true for Java"},{"url":"https://cap.cloud.sap/docs/guides/uis/fiori","title":"Serving SAP Fiori UIs — Tree Views, aggregates in CAP Java","checked":"2026-10-15","quote":"Annotate a virtual element with @cds.java.descendants.aggregate and specify the aggregation expression to build hierarchy views using calculation of aggregates."},{"url":"https://cap.cloud.sap/docs/java/developing-applications/building","title":"Building CAP Java Applications — CDS Maven Plugin","checked":"2026-10-15","quote":"For instance, the CDS model needs to be compiled to a CSN file which requires a Node.js runtime with module `@sap/cds-dk`."}],"delivery":"built-in"},{"capability":"capability:search","what_it_does":"Adds a search predicate to a CQL Select query over an entity's searchable elements, matched with a search term or a search expression built from AND, OR and NOT operators.","sources":[{"url":"https://cap.cloud.sap/docs/java/working-with-cql/query-api","title":"Building CQL Statements","checked":"2026-09-19","quote":"adds a predicate to the query that filters out all entities where any searchable element contains a given"}],"delivery":"built-in"},{"capability":"capability:pagination-and-streaming","what_it_does":"Limits and pages a Select query's result set, and streams cds.LargeString and cds.LargeBinary elements through a Reader or an InputStream rather than buffering them, with the streaming path tested on [SAP HANA](artifact:sap-hana), [PostgreSQL](external:postgresql) and H2.","sources":[{"url":"https://cap.cloud.sap/docs/java/working-with-cql/query-api","title":"Building CQL Statements","checked":"2026-09-19","quote":"Pagination (dividing the result set into discrete subsets of a certain size) can be achieved by using"},{"url":"https://cap.cloud.sap/docs/java/cds-data","title":"Working with CDS Data","checked":"2026-09-19","quote":"the streaming feature, however, is supported (and tested) in"}],"delivery":"built-in"},{"capability":"capability:configuration","what_it_does":"Configures applications through Spring Boot's externalized configuration and CDS properties, with a production profile that switches a set of property defaults, such as disabled mock users, at once.","sources":[{"url":"https://cap.cloud.sap/docs/java/developing-applications/configuring","title":"Configuring Applications","checked":"2026-09-19","quote":"The production profile configures a set of selected property defaults, recommended for production deployments, at once."},{"url":"https://cap.cloud.sap/docs/java/developing-applications/properties","title":"CDS Properties (CAP Java) — capire","checked":"2026-09-27","quote":"The following table lists all configuration properties that can be used to configure CAP Java 5.1.1."}],"delivery":"built-in"},{"capability":"capability:async-processing","what_it_does":"Exposes CAP's transactional event queues as outbox services. The runtime ships two default outboxes, used internally for messaging and for the audit log, and custom outbox services can be registered for further isolation or scaling.","sources":[{"url":"https://cap.cloud.sap/docs/java/event-queues","title":"Event Queues in Java","checked":"2026-09-19","quote":"The runtime ships two default outboxes."}],"delivery":"built-in"},{"capability":"capability:audit-logging","what_it_does":"Ships an AuditLogService for personal data access, personal data modification, configuration change and security events, with a default handler that writes them to the application log; a service binding to [SAP Audit Log service](artifact:btp-audit-log) v2 needs the separate cds-feature-auditlog-v2 module.","sources":[{"url":"https://cap.cloud.sap/docs/java/auditlog","title":"Audit Logging","checked":"2026-09-19","quote":"By default, the CAP Java SDK provides an AuditLog handler that writes the AuditLog messages to the application log."}],"delivery":"built-in"},{"capability":"capability:event-mesh","what_it_does":"Ships publish-subscribe messaging built into the runtime's core, including a file-based message broker that mocks a broker on the local file system for local testing; a real broker needs a separate Maven dependency for that broker.","sources":[{"url":"https://cap.cloud.sap/docs/java/messaging","title":"Messaging","checked":"2026-09-19","quote":"Messaging support as such is built into the core of CAP, as well as a \"file-based message broker\" for local testing, that mocks a message broker and persists messages to a file on the local file system."}],"delivery":"built-in"},{"capability":"capability:concurrency-control","what_it_does":"Detects concurrent modification of data across requests with ETags: an @odata.etag-annotated element or a @cds.java.version version element is checked against an If-Match header in OData, or against an explicit ETag predicate in custom code, on update and delete.","sources":[{"url":"https://cap.cloud.sap/docs/java/working-with-cql/query-execution","title":"Executing CQL Statements","checked":"2026-09-19","quote":"Typically, the ETag value is stored in an element of the entity."}],"delivery":"built-in"},{"capability":"capability:service-composition","what_it_does":"Resolves a reuse package from a Maven dependency: the CDS, CSV and i18n files under a cds folder in the JAR's resources are extracted by the CDS Maven plugin and embedded in the project like an npm package.","sources":[{"url":"https://cap.cloud.sap/docs/guides/integration/reuse-and-compose","title":"CAP Service Composition — capire","checked":"2026-09-27","quote":"When providing your reuse package as a Maven dependency you need to ensure that the CDS, CSV and i18n files are included into the JAR."}],"delivery":"built-in"},{"capability":"capability:transaction-management","what_it_does":"Opens a ChangeSet Context around the outermost event as the transactional boundary, with listeners, cancellation and Spring transaction integration, and a Request Context that carries user, tenant, locale and headers across services and into child threads.","sources":[{"url":"https://cap.cloud.sap/docs/java/event-handlers/changeset-contexts","title":"ChangeSet Contexts — capire","checked":"2026-09-27","quote":"ChangeSet Contexts are used in the CAP Java SDK as a light-weight abstraction around transactions."},{"url":"https://cap.cloud.sap/docs/java/event-handlers/changeset-contexts","title":"ChangeSet Contexts — capire","checked":"2026-09-27","quote":"This has the effect, that by default a ChangeSet Context is opened around the outermost event that was triggered on any service."},{"url":"https://cap.cloud.sap/docs/java/event-handlers/request-contexts","title":"Request Contexts — capire","checked":"2026-09-27","quote":"Request Contexts span the execution of multiple events on (different) services. They provide a common context to these events, by providing user or tenant information or access to headers or query parameters."}],"delivery":"built-in"},{"capability":"capability:feature-toggles","what_it_does":"Activates feature-toggled CDS aspects per request from the set a Feature Toggles Info Provider computes, registered as a Spring bean; the mock user configuration assigns features in development only.","sources":[{"url":"https://cap.cloud.sap/docs/guides/extensibility/feature-toggles","title":"Feature Toggles — capire","checked":"2026-09-27","quote":"For productive use in CAP Java, the mock user configuration must not be used. The set of active features is determined per request by the Feature Toggles Info Provider."}],"delivery":"built-in"},{"capability":"capability:testing","what_it_does":"Test support for the three layers the guide names: event handlers in isolation, services dispatching to them, and the application through its API with Spring Boot test support.","sources":[{"url":"https://cap.cloud.sap/docs/java/developing-applications/testing","title":"Testing Applications (CAP Java) — capire","checked":"2026-09-27","quote":"As described in Modular Architecture, a CAP Java application consists of weakly coupled components, which enables you to define your test scope precisely and focus on parts that need a high test coverage."}],"delivery":"built-in"},{"capability":"capability:plugin-authoring","what_it_does":"Extension points for CAP Java plugins: CDS models shared as Maven artifacts and resolved into the project, and event handlers registered for custom types and annotations.","sources":[{"url":"https://cap.cloud.sap/docs/java/building-plugins","title":"Building Plugins (CAP Java) — capire","checked":"2026-09-27","quote":"A collection of different mechanisms that can be used to build plugins for CAP Java."}],"delivery":"built-in"},{"capability":"capability:logging","what_it_does":"Logs through the Java logging facade under Spring Boot's configuration, with predefined loggers per runtime component and correlation ids.","sources":[{"url":"https://cap.cloud.sap/docs/java/operating-applications/observability","title":"Observability (CAP Java) — capire","checked":"2026-09-27","quote":"When tracking down erroneous behavior, application logs often provide useful hints to reconstruct the executed program flow and isolate functional flaws."}],"delivery":"built-in"},{"capability":"capability:telemetry","what_it_does":"CAP instrumentation for OpenTelemetry, traces and metrics through the Java agent and extension library, for SAP Cloud Logging or Dynatrace.","sources":[{"url":"https://cap.cloud.sap/docs/java/operating-applications/observability","title":"Observability (CAP Java) — capire","checked":"2026-09-27","quote":"Open Telemetry is an Open Source framework for observability in cloud applications. Applications can collect signals (distributed traces and metrics) and send them to observability front ends that offer a wide set of capabilities to analyze the current state or failures of an application."}],"delivery":"built-in"},{"capability":"capability:data-modelling","delivery":"built-in","what_it_does":"Exposes the CDS model to the application through the Model Reflection API: services, types, entities and their elements, from the event context or injected.","sources":[{"url":"https://cap.cloud.sap/docs/java/reflection-api","title":"Working with CDS Models (CAP Java) — capire","checked":"2026-09-27","quote":"The Model Reflection API is a set of interfaces, which provide the ability to introspect a CDS model and retrieve details on the services, types, entities, and their elements that are defined by the model."}]},{"capability":"capability:database-connectors","delivery":"built-in","what_it_does":"Creates a CQN-based Persistence Service from the configured datasource for SAP HANA, PostgreSQL, H2 or SQLite, and serves it as the database client.","sources":[{"url":"https://cap.cloud.sap/docs/java/cqn-services/persistence-services","title":"Persistence Services (CAP Java) — capire","checked":"2026-09-27","quote":"How CQN-based Persistence Services are created from datasources to supported database types and used as database clients."},{"url":"https://cap.cloud.sap/docs/java/cqn-services/persistence-services","title":"Persistence Services (CAP Java) — capire","checked":"2026-09-27","quote":"CAP Java has built-in support for various databases. This section describes the different databases and any differences between them with respect to CAP features."},{"url":"https://cap.cloud.sap/docs/guides/databases/h2","title":"Using H2 for Development in CAP Java — capire","checked":"2026-09-27","quote":"For local development and testing, CAP Java supports the H2 database, which can be configured to run in-memory."}]},{"capability":"capability:multitenancy","delivery":"built-in","what_it_does":"Carries the tenant in the Request Context across every service call and thread, and opens tenant-specific database connections from it. Provisioning and subscription are cds-feature-mt.","sources":[{"url":"https://cap.cloud.sap/docs/java/event-handlers/request-contexts","title":"Request Contexts — capire","checked":"2026-09-27","quote":"Request Contexts span the execution of multiple events on (different) services. They provide a common context to these events, by providing user or tenant information or access to headers or query parameters."}]}],"history":[{"date":"2026-09-19","field":"provides.what_it_does","from":null,"to":"capability:authorization, capability:input-validation, capability:error-handling, capability:localization, capability:draft-handling, capability:search, capability:pagination-and-streaming, capability:configuration, capability:async-processing, capability:audit-logging, capability:event-mesh, capability:concurrency-control","reason":"New CAP Java runtime entry discovered through official CAP documentation. cds-services-bom stands for the release as a whole (capire, java/developing-applications/building.md, Module Dependencies and Standard Modules); the edges above are the capabilities the java/ documentation and the cross-runtime guides show answered by the mandatory core modules and application frameworks the BOM pins, without a separate cds-feature module."},{"date":"2026-10-15","field":"provides","from":null,"to":"capability:fiori-annotations","reason":"The entry carried the Fiori draft lifecycle and not the annotations the same guide documents for Java. Capire's Serving SAP Fiori UIs guide names the Java configuration for the Fiori preview and one annotation the Java runtime reads itself, @cds.java.descendants.aggregate for a hierarchy view over aggregates. Without this edge the java flavor of capability:fiori-annotations had no provider of its own, although CAP Java serves the same annotated metadata. @http.CacheControl, which the same guide states is supported only on the Java runtime, is a response header rather than a rendering instruction and is left to capability:pagination-and-streaming."}],"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-09-19"}},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"unknown","evidence":"no contributor data"},{"label":"Repository","tier":"unknown","evidence":"no repository data"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"no release dates"},{"label":"Maintainer's CI","tier":"unknown","evidence":"no repository data"}],"practice":[{"label":"Tests","tier":"unknown","evidence":"not crawled"},{"label":"Docs","tier":"unknown","evidence":"docs link declared, tree not read"},{"label":"Changelog","tier":"unknown","evidence":"not crawled"}],"reach":[{"value":null,"unit":"installs/week"},{"value":null,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-24","npm":"not published under this name"},"edges":{"maintainers":[],"contributors":[],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}