{"ref":"artifact:cap-js-sdm","page":"/artifacts/cap-js-sdm","json":"/artifacts/cap-js-sdm.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"cap-js-sdm","name":"@cap-js/sdm","artifact_type":"cds-plugin","ecosystem":"cap","flavors":[{"key":"node","source":{"url":"https://github.com/cap-js/sdm","title":"cap-js/sdm — README","checked":"2026-09-13","quote":"npm add @cap-js/sdm"}}],"domain":"data-and-persistence","origin_ring":"sap-official","description":{"one_line":"Stores attachments in an SAP Document Management repository instead of a bucket, for the case where the documents have to live in the system of record.","short":"CAP attachments stored in an SAP Document Management repository","when_not_to_use":"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)."},"links":{"npm":"https://www.npmjs.com/package/@cap-js/sdm","repo":"https://github.com/cap-js/sdm"},"type_properties":{"distribution":{"value":["npm"],"sources":[{"url":"https://github.com/cap-js/sdm","title":"@cap-js/sdm — README","checked":"2026-10-18","quote":"npm add @cap-js/sdm"}]}},"provides":[{"capability":"capability:attachments","what_it_does":"Stores CAP Node.js attachments in a non-versioned SAP Document Management repository, including custom properties and link attachments. Draft and non-draft entities are documented.","sources":[{"url":"https://raw.githubusercontent.com/cap-js/sdm/ad13b61f21816ebead2d08264a74521cfb75846c/README.md","title":"cap-js/sdm — README","checked":"2026-09-17","quote":"This plugin can be consumed by the CAP application deployed on BTP to store their documents in the form of attachments in Document Management Repository."},{"url":"https://raw.githubusercontent.com/cap-js/sdm/ad13b61f21816ebead2d08264a74521cfb75846c/README.md","title":"cap-js/sdm — README","checked":"2026-09-17","quote":"This plugin provides full support for handling attachments in non-draft (active) entities, enabling direct CRUD operations without requiring draft mode."},{"url":"https://raw.githubusercontent.com/cap-js/sdm/ad13b61f21816ebead2d08264a74521cfb75846c/README.md","title":"cap-js/sdm — README","checked":"2026-09-17","quote":"Virus scanning : Provides the capability to support virus scan for virus scan enabled repositories."},{"url":"https://raw.githubusercontent.com/cap-js/sdm/ad13b61f21816ebead2d08264a74521cfb75846c/README.md","title":"cap-js/sdm — README","checked":"2026-09-17","quote":"Repository : This plugin does not support the use of versioned repositories."}],"facets":[{"key":"storage_target","value":"SAP Document Management repository","applies_to":{"ecosystems":["cap"],"flavors":["node"]},"source":{"url":"https://raw.githubusercontent.com/cap-js/sdm/ad13b61f21816ebead2d08264a74521cfb75846c/README.md","title":"cap-js/sdm — README","checked":"2026-09-17","quote":"This plugin can be consumed by the CAP application deployed on BTP to store their documents in the form of attachments in Document Management Repository."}},{"key":"upload_flow","value":"Draft attachments and direct CRUD on non-draft entities","applies_to":{"ecosystems":["cap"],"flavors":["node"]},"source":{"url":"https://raw.githubusercontent.com/cap-js/sdm/ad13b61f21816ebead2d08264a74521cfb75846c/README.md","title":"cap-js/sdm — README","checked":"2026-09-17","quote":"This plugin provides full support for handling attachments in non-draft (active) entities, enabling direct CRUD operations without requiring draft mode."}},{"key":"scan_behaviour","value":"Virus scanning when enabled on the repository","applies_to":{"ecosystems":["cap"],"flavors":["node"]},"source":{"url":"https://raw.githubusercontent.com/cap-js/sdm/ad13b61f21816ebead2d08264a74521cfb75846c/README.md","title":"cap-js/sdm — README","checked":"2026-09-17","quote":"Virus scanning : Provides the capability to support virus scan for virus scan enabled repositories."}},{"key":"versioned_repository","value":false,"applies_to":{"ecosystems":["cap"],"flavors":["node"]},"source":{"url":"https://raw.githubusercontent.com/cap-js/sdm/ad13b61f21816ebead2d08264a74521cfb75846c/README.md","title":"cap-js/sdm — README","checked":"2026-09-17","quote":"Repository : This plugin does not support the use of versioned repositories."}}]}],"provenance":{"discovered_via":[{"source":"source:npm"},{"source":"source:discover"}],"first_seen":"2026-08-30"},"maintainers":["actor:cap-js"],"contributors":["actor:akgarg06","actor:akshatjain-official","actor:ashishjain14","actor:chgeo","actor:deepikasingh2711","actor:maxieckert-sap","actor:patricebender","actor:pierrefritsch","actor:pujadeshmukh17","actor:rashmiangadi05","actor:rishikunnath2747","actor:vibhutikumar07","actor:yashmeet29"],"history":[{"date":"2026-09-08","field":"description.one_line","from":"CAP plugin for effortless integration of CAP applications with SAP Document Management Service.","to":"Stores attachments in an SAP Document Management repository instead of a bucket, for the case where the documents have to live in the system of record.","reason":"Placement copied the package's own npm description. Replaced with a line written for this graph — what it does and where it sits — because an unattributed sentence is an unattributed claim."},{"date":"2026-09-17","field":"provides.what_it_does","from":null,"to":"Stores CAP Node.js attachments in a non-versioned SAP Document Management repository, including custom properties and link attachments. Draft and non-draft entities are documented.","reason":"Document non-versioned repository scope and non-draft support. README contradicts itself on file size (100 MB versus uploads above 400 MB); no file-size value asserted."}],"drafted_with_ai":true,"requires":[{"ref":"artifact:btp-document-management-integration","requirement":"required","role":"attachment-storage","sources":[{"url":"https://raw.githubusercontent.com/cap-js/sdm/ad13b61f21816ebead2d08264a74521cfb75846c/README.md","title":"cap-js/sdm — README","checked":"2026-09-17","quote":"Create a SAP Document Management Integration Option [Service instance and key](https://help.sap.com/docs/document-management-service/sap-document-management-service/creating-service-instance-and-service-key). Using credentials from key [onboard a repository](https://help.sap.com/docs/document-management-service/sap-document-management-service/onboarding-repository). Configure the [REPOSITORY_ID](https://github.com/cap-js/incidents-app/blob/9327f550cde9f9666a1ffb3cbc727295b8d6fdb7/mta.yaml#L19) with the repository you want to use for deploying the application. Set the SDM instance name to match the SAP Document Management integration option instance you created in BTP and update this in the mta.yaml file under the  [srv module](https://github.com/cap-js/incidents-app/blob/9327f550cde9f9666a1ffb3cbc727295b8d6fdb7/mta.yaml#L13) and the [resources section](https://github.com/cap-js/incidents-app/blob/9327f550cde9f9666a1ffb3cbc727295b8d6fdb7/mta.yaml#L134) values in the mta.yaml. Currently only non versioned repositories are supported."}]}],"changed_in":[{"version":"1.11.0","date":"2026-08-18","what_changed":"The plugin moved to [@cap-js/attachments](artifact:cap-js-attachments) 3.13.3, whose consolidated `ScanStates` translation import makes the redeploy of an application deployed with attachments 3.13.1 or earlier fail in HDI until HDI auto-undeploy is enabled in `mta.yaml`. Client Credentials authentication was added beside JWTBearer.","invalidates":"Deployment descriptors from earlier setup guides that do not enable HDI auto-undeploy.","source":{"url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-1110","title":"@cap-js/sdm changelog, 1.11.0","checked":"2026-10-19","quote":"enable HDI auto-undeploy in your application so obsolete artifacts are removed on redeploy."}}]},"effective_normative_relations":[{"instrument":"instrument:sap-developer-license-3-2-cap","relation":"use-constrained-by","sections":["1","2","3"],"applies_when":"A cds-plugin is used with SAP CAP materials, or an artifact is explicitly identified as a CAP plugin or application.","note":"This is inherited applicability, not a licence verdict about the artifact itself. Review the agreement for the actual materials and use; an explicit artifact relationship to another revision takes precedence.","scope":{"kind":"artifact"},"sources":[{"url":"https://cap.cloud.sap/resources/license/developer-license-3_2_CAP.txt","title":"SAP Developer License Agreement 3.2 CAP","checked":"2026-09-16","quote":"documentation, plug-ins, templates, scripts and sample code, libraries, software development kits"}],"inherited_from":"cap-plugins-and-applications","relevant_capabilities":["agent-systems-access","async-processing","data-import-export","database-connectors","deployment","destinations","llm-integration","mcp-servers","plugin-authoring","replication","retrieval-augmented-generation","rfc-connectivity"]}],"readings":{"liveness":[{"label":"Maintenance","tier":"good","evidence":"2 months since release"},{"label":"Continuity","tier":"good","evidence":"14 contributors, 3 publishers, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-10, not archived"}],"compatibility":[{"label":"Declared for","tier":"good","evidence":">=8 — includes cds 10 and 9"},{"label":"Survived majors","tier":"good","evidence":"released before and after @sap/cds 10"},{"label":"Maintainer's CI","tier":"good","evidence":"Single Tenant Deploy and Integration Test green, 2026-09-15"}],"practice":[{"label":"Tests","tier":"good","evidence":"116 test files, npm test"},{"label":"Docs","tier":"good","evidence":"README 48 KB"},{"label":"Changelog","tier":"good","evidence":"CHANGELOG in the repo"}],"reach":[{"value":433,"unit":"installs/week"},{"value":24,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","latest_version":"1.11.0","majors":{"1":{"version":"1.0.0","date":"2024-06-26"}},"license":"Apache-2.0","first_release":"2024-06-26","last_release":"2026-08-18","releases":20,"cadence_days":31,"maintainers":3,"repository":"git+https://github.com/cap-js/sdm.git","peer_cds":">=8","test_script":true,"types":false,"downloads_weekly":433,"stars":24,"forks":8,"open_issues":16,"archived":false,"pushed_at":"2026-10-23","license_spdx":"Apache-2.0","org_owned":true,"default_branch":"develop","contributors":14,"tree_truncated":false,"test_files":116,"workflows":11,"other_ci":false,"readme_bytes":48737,"docs_files":0,"changelog":true,"license_file":true,"dts_files":0,"ci_status":"success","ci_run_at":"2026-09-15","ci_workflow":"Single Tenant Deploy and Integration Test","ci_event":"push","readme_path":"README.md","readme_sha":"b069ab9e31c5fc4b2d47c792c4b84d095079e85d","months_since_release":2,"dormant":false,"repository_directory":null,"dependencies":6,"node_engine":null,"downloads_monthly":3527,"created_at":"2024-02-22T04:43:24Z","open_prs":12,"first_commit":"2024-02-22","last_commit":"2026-09-15","commits":1143,"repo_read":"2026-10-26"},"release_notes":{"license":"Apache-2.0","quotable":true,"source":{"kind":"npm","path":"CHANGELOG.md","version":"1.11.0","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md"},"format":"keep-a-changelog","releases":[{"version":"1.11.0","date":"2026-08-18","date_source":"registry","heading":"Version 1.11.0","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-1110","sections":[{"kind":"feature","heading":"Added","items":5},{"kind":"fix","heading":"Fixed","items":3},{"kind":"change","heading":"Changed","items":1},{"kind":"breaking","heading":"⚠️ Migration Note","items":2}],"hash":"9ce40fad003026ae","cited_by":[{"version":"1.11.0","date":"2026-08-18"}]},{"version":"1.10.0","date":"2026-05-14","date_source":"registry","heading":"Version 1.10.0","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-1100","sections":[{"kind":"fix","heading":"Fixed","items":3},{"kind":"feature","heading":"Added","items":1}],"hash":"a0fa86225314b88b"},{"version":"1.9.1","date":"2026-04-13","date_source":"registry","heading":"Version 1.9.1","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-191","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"57c89769b1dca13a"},{"version":"1.9.0","date":"2026-03-18","date_source":"registry","heading":"Version 1.9.0","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-190","sections":[{"kind":"feature","heading":"Added","items":1},{"kind":"fix","heading":"Fixed","items":4}],"hash":"f16a2c8e3146a269"},{"version":"1.8.2","date":"2026-02-23","date_source":"registry","heading":"Version 1.8.2","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-182","sections":[{"kind":"fix","heading":"Fixed","items":3}],"hash":"9ddc99201cca945f"},{"version":"1.8.1","date":"2025-11-25","date_source":"registry","heading":"Version 1.8.1","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-181","sections":[{"kind":"fix","heading":"Fixed","items":4}],"hash":"6f92ba3da22af0b0"},{"version":"1.8.0","date":"2025-10-30","date_source":"registry","heading":"Version 1.8.0","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-180","sections":[{"kind":"feature","heading":"Added","items":2}],"hash":"4d8011460311268b"},{"version":"1.7.0","date":"2025-09-08","date_source":"registry","heading":"Version 1.7.0","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-170","sections":[{"kind":"feature","heading":"Added","items":3},{"kind":"fix","heading":"Fixed","items":2}],"hash":"ff977ba89e5a4c99"},{"version":"1.6.0","date":"2025-07-08","date_source":"registry","heading":"Version 1.6.0","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-160","sections":[{"kind":"feature","heading":"Added","items":1},{"kind":"fix","heading":"Fixed","items":1}],"hash":"46875c9a6d4ab9e4"},{"version":"1.5.1","date":"2025-06-20","date_source":"registry","heading":"Version 1.5.1","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-151","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"5ff2ed89be5aab38"},{"version":"1.5.0","date":"2025-04-25","date_source":"registry","heading":"Version 1.5.0","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-150","sections":[{"kind":"feature","heading":"Added","items":1},{"kind":"fix","heading":"Fixed","items":3}],"hash":"47484f57b044b5ed"},{"version":"1.4.0","date":"2025-03-24","date_source":"registry","heading":"Version 1.4.0","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-140","sections":[{"kind":"feature","heading":"Added","items":2},{"kind":"change","heading":"Changed","items":1}],"hash":"87f5ae3256135278"},{"version":"1.3.0","date":"2025-02-19","date_source":"registry","heading":"Version 1.3.0","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-130","sections":[{"kind":"feature","heading":"Added","items":0},{"kind":"fix","heading":"Fixed","items":2}],"hash":"2d3976460d9a4f2a"},{"version":"1.2.2","date":"2024-11-06","date_source":"registry","heading":"Version 1.2.2","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-122","sections":[{"kind":"fix","heading":"Fixed","items":2}],"hash":"f65a8c1d30b4fab7"},{"version":"1.2.1","date":"2024-10-07","date_source":"registry","heading":"Version 1.2.1","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-121","sections":[{"kind":"feature","heading":"Added","items":0}],"hash":"aee9eaaddd431d6a"},{"version":"1.2.0","date":"2024-09-10","date_source":"registry","heading":"Version 1.2.0","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-120","sections":[{"kind":"feature","heading":"Added","items":0}],"hash":"89043fe98bf1e0cf"},{"version":"1.1.0","date":"2024-08-02","date_source":"registry","heading":"Version 1.1.0","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-110","sections":[{"kind":"feature","heading":"Added","items":0}],"hash":"820922a87ea1e231"},{"version":"1.0.2","date":"2024-06-28","date_source":"registry","heading":"Version 1.0.2","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-102","sections":[{"kind":"fix","heading":"Fixed","items":0}],"hash":"bffe01b58f5ef31f"},{"version":"1.0.1","date":"2024-06-27","date_source":"registry","heading":"Version 1.0.1","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-101","sections":[{"kind":"fix","heading":"Fixed","items":0}],"hash":"bffe01b58f5ef31f"},{"version":"1.0.0","date":"2024-06-26","date_source":"registry","heading":"Version 1.0.0","url":"https://github.com/cap-js/sdm/blob/develop/CHANGELOG.md#version-100","sections":[{"kind":"feature","heading":"Added","items":6}],"hash":"9fd0147707c68da6"}],"versions":[{"version":"1.11.0","date":"2026-08-18"},{"version":"1.10.0","date":"2026-05-14"},{"version":"1.9.1","date":"2026-04-13"},{"version":"1.9.0","date":"2026-03-18"},{"version":"1.8.2","date":"2026-02-23"},{"version":"1.8.1","date":"2025-11-25"},{"version":"1.8.0","date":"2025-10-30"},{"version":"1.7.0","date":"2025-09-08"},{"version":"1.6.0","date":"2025-07-08"},{"version":"1.5.1","date":"2025-06-20"},{"version":"1.5.0","date":"2025-04-25"},{"version":"1.4.0","date":"2025-03-24"},{"version":"1.3.0","date":"2025-02-19"},{"version":"1.2.2","date":"2024-11-06"},{"version":"1.2.1","date":"2024-10-07"},{"version":"1.2.0","date":"2024-09-10"},{"version":"1.1.0","date":"2024-08-02"},{"version":"1.0.2","date":"2024-06-28"},{"version":"1.0.1","date":"2024-06-27"},{"version":"1.0.0","date":"2024-06-26"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:cap-js","name":"SAP Cloud Application Programming Model","json":"/actors/cap-js.json"}],"contributors":[{"ref":"actor:akshatjain-official","name":"Akshat Jain","json":"/actors/akshatjain-official.json"},{"ref":"actor:akgarg06","name":"Ankush Kumar Garg","json":"/actors/akgarg06.json"},{"ref":"actor:ashishjain14","name":"Ashish Jain","json":"/actors/ashishjain14.json"},{"ref":"actor:chgeo","name":"Christian Georgi","json":"/actors/chgeo.json"},{"ref":"actor:deepikasingh2711","name":"Deepika Singh NS","json":"/actors/deepikasingh2711.json"},{"ref":"actor:maxieckert-sap","name":"Maximilian Eckert","json":"/actors/maxieckert-sap.json"},{"ref":"actor:patricebender","name":"Patrice Bender","json":"/actors/patricebender.json"},{"ref":"actor:pierrefritsch","name":"Pierre Fritsch","json":"/actors/pierrefritsch.json"},{"ref":"actor:pujadeshmukh17","name":"PujaDeshmukh17","json":"/actors/pujadeshmukh17.json"},{"ref":"actor:rashmiangadi05","name":"rashmiangadi05","json":"/actors/rashmiangadi05.json"},{"ref":"actor:rishikunnath2747","name":"Rishi Kunnath","json":"/actors/rishikunnath2747.json"},{"ref":"actor:vibhutikumar07","name":"vibhutikumar","json":"/actors/vibhutikumar07.json"},{"ref":"actor:yashmeet29","name":"yashmeet29","json":"/actors/yashmeet29.json"}],"explained_by":[{"ref":"content:use-sap-document-management-service-plugin-in-cap-nodejs","name":"Use SAP Document Management Service Plugin In CAP NODEJS Step by Step Guidance","json":"/content/use-sap-document-management-service-plugin-in-cap-nodejs.json"},{"ref":"content:consume-sap-document-management-using-cap-js-sdm","name":"Consume SAP Document Management using @cap-js/sdm plugin","json":"/content/consume-sap-document-management-using-cap-js-sdm.json"}],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}