{"nodes":[{"id":"domain:protocols-and-apis","kind":"domain","label":"Protocols & APIs","icon":"domain"},{"id":"domain:data-and-persistence","kind":"domain","label":"Data & Persistence","icon":"domain"},{"id":"domain:integration-and-messaging","kind":"domain","label":"Integration & Messaging","icon":"domain"},{"id":"domain:ai-and-agents","kind":"domain","label":"AI & Agents","icon":"domain"},{"id":"domain:security-and-compliance","kind":"domain","label":"Security & Compliance","icon":"domain"},{"id":"domain:operations-and-runtime","kind":"domain","label":"Operations & Runtime","icon":"domain"},{"id":"domain:developer-experience","kind":"domain","label":"Developer Experience","icon":"domain"},{"id":"domain:ui-and-frontend-bridge","kind":"domain","label":"UI & Frontend Bridge","icon":"domain"},{"id":"domain:process-and-workflow","kind":"domain","label":"Process & Workflow","icon":"domain"},{"id":"domain:learning-and-reference","kind":"domain","label":"Learning & Reference","icon":"domain"},{"id":"capability:abap-classic-ui","kind":"cap","label":"SAP GUI screens and lists","state":"core-and-community","homeEco":"abap","domain":"ui-and-frontend-bridge","href":"/capabilities/abap-classic-ui","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:abap-clean-code","kind":"cap","label":"Clean code conventions","state":"core-and-community","homeEco":"abap","domain":"learning-and-reference","href":"/capabilities/abap-clean-code","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:abap-cloud-readiness","kind":"cap","label":"ABAP Cloud readiness","state":"core-and-community","homeEco":"abap","domain":"operations-and-runtime","href":"/capabilities/abap-cloud-readiness","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:abap-code-formatting","kind":"cap","label":"Code formatting","state":"core-and-community","homeEco":"abap","domain":"developer-experience","href":"/capabilities/abap-code-formatting","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:abap-code-review","kind":"cap","label":"Code review","state":"core-and-community","homeEco":"abap","domain":"developer-experience","href":"/capabilities/abap-code-review","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:abap-data-browsing","kind":"cap","label":"Browsing table data","state":"core-and-community","homeEco":"abap","domain":"developer-experience","href":"/capabilities/abap-data-browsing","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:abap-extensibility","kind":"cap","label":"Extensibility","state":"core-and-community","homeEco":"abap","domain":"operations-and-runtime","href":"/capabilities/abap-extensibility","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:abap-service-testing","kind":"cap","label":"Calling a service by hand","state":"core-and-community","homeEco":"abap","domain":"developer-experience","href":"/capabilities/abap-service-testing","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:abap-source-control","kind":"cap","label":"Source control","state":"core-and-community","homeEco":"abap","domain":"developer-experience","href":"/capabilities/abap-source-control","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:abap-static-analysis","kind":"cap","label":"Static analysis","state":"core-and-community","homeEco":"abap","domain":"developer-experience","href":"/capabilities/abap-static-analysis","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:abap-transactional-model","kind":"cap","label":"Transactional model","state":"core-and-community","homeEco":"abap","domain":"data-and-persistence","href":"/capabilities/abap-transactional-model","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:abap-ui-from-abap","kind":"cap","label":"UI written in ABAP","state":"community-only","homeEco":"abap","domain":"ui-and-frontend-bridge","href":"/capabilities/abap-ui-from-abap","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:abap-unit-testing","kind":"cap","label":"Unit testing","state":"core-and-community","homeEco":"abap","domain":"developer-experience","href":"/capabilities/abap-unit-testing","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:accessibility","kind":"cap","label":"Accessibility","state":"core-and-community","homeEco":"ui5","domain":"ui-and-frontend-bridge","href":"/capabilities/accessibility","icon":"cap","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"capability:account-provisioning","kind":"cap","label":"Account provisioning","state":"core-and-community","homeEco":"btp","domain":"operations-and-runtime","href":"/capabilities/account-provisioning","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:agent-code-access","kind":"cap","label":"Agent access to your code","state":"core-and-community","domain":"ai-and-agents","doors":{"cap":{"state":"core-and-community","name":"Agent access to your code"},"abap":{"state":"core-and-community","name":"Agent access to ABAP code"},"ui5":{"state":"core-only","name":"Agent access to your Fiori app"},"btp":{"state":"core-and-community","name":"Agent access to your code"}},"href":"/capabilities/agent-code-access","icon":"cap","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"capability:agent-evals","kind":"cap","label":"Agent evals","state":"core-and-community","domain":"ai-and-agents","doors":{"cap":{"state":"core-and-community","name":"Agent evals"},"btp":{"state":"core-and-community","name":"Agent evals"},"abap":{"state":"community-only","name":"Agent evals"}},"href":"/capabilities/agent-evals","icon":"cap","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"capability:agent-guidance","kind":"cap","label":"Agent guidance","state":"core-and-community","domain":"ai-and-agents","doors":{"cap":{"state":"core-and-community","name":"Agent guidance"},"ui5":{"state":"core-and-community","name":"Agent guidance"},"btp":{"state":"core-and-community","name":"Agent guidance"},"abap":{"state":"core-and-community","name":"Agent guidance"},"commerce":{"state":"community-only","name":"Agent guidance"}},"href":"/capabilities/agent-guidance","icon":"cap","ecos":["cap","ui5","btp","abap","commerce"],"homeEcos":["cap","ui5","btp","abap","commerce"]},{"id":"capability:agent-systems-access","kind":"cap","label":"Agent access to your systems","state":"core-and-community","domain":"ai-and-agents","doors":{"btp":{"state":"core-and-community","name":"Agent access to your systems"},"abap":{"state":"community-only","name":"Agent access to your systems"},"cap":{"state":"community-only","name":"Agent access to your systems"},"commerce":{"state":"community-only","name":"Agent access to your systems"},"successfactors":{"state":"community-only","name":"Agent access to your systems"}},"href":"/capabilities/agent-systems-access","icon":"cap","ecos":["btp","abap","cap","commerce","successfactors"],"homeEcos":["btp","abap","cap","commerce","successfactors"]},{"id":"capability:agent-tooling","kind":"cap","label":"Agent tooling","state":"core-and-community","domain":"ai-and-agents","doors":{"cap":{"state":"core-and-community","name":"Agent tooling"},"btp":{"state":"core-only","name":"Agent tooling"}},"href":"/capabilities/agent-tooling","icon":"cap","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"capability:agent-workspaces","kind":"cap","label":"Agent workspaces","state":"core-only","homeEco":"btp","domain":"ai-and-agents","href":"/capabilities/agent-workspaces","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:analytic-modelling","kind":"cap","label":"Analytic modelling","state":"core-and-community","domain":"data-and-persistence","doors":{"btp":{"state":"core-and-community","name":"Analytic modelling"},"abap":{"state":"core-and-community","name":"Analytic modelling"}},"href":"/capabilities/analytic-modelling","icon":"cap","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"capability:analytical-models","kind":"cap","label":"Analytical models","state":"core-only","homeEco":"cap","domain":"protocols-and-apis","href":"/capabilities/analytical-models","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:analytical-queries","kind":"cap","label":"Analytical queries","state":"core-only","homeEco":"cap","domain":"data-and-persistence","href":"/capabilities/analytical-queries","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:app-hosting","kind":"cap","label":"App hosting","state":"core-only","domain":"ui-and-frontend-bridge","doors":{"btp":{"state":"core-only","name":"App hosting"},"ui5":{"state":"core-only","name":"App hosting"},"cap":{"state":"core-only","name":"App hosting"}},"href":"/capabilities/app-hosting","icon":"cap","ecos":["btp","ui5","cap"],"homeEcos":["btp","ui5","cap"]},{"id":"capability:application-runtimes","kind":"cap","label":"Application runtimes","state":"core-only","homeEco":"btp","domain":"operations-and-runtime","href":"/capabilities/application-runtimes","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:architecture-diagrams","kind":"cap","label":"Architecture diagrams","state":"core-and-community","homeEco":"btp","domain":"developer-experience","href":"/capabilities/architecture-diagrams","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:async-processing","kind":"cap","label":"Async processing","state":"core-and-community","domain":"integration-and-messaging","doors":{"cap":{"state":"core-and-community","name":"Async processing"},"abap":{"state":"core-and-community","name":"Async processing"},"btp":{"state":"core-only","name":"Async processing"}},"href":"/capabilities/async-processing","icon":"cap","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"capability:attachments","kind":"cap","label":"Attachments","state":"core-and-community","domain":"data-and-persistence","doors":{"cap":{"state":"core-and-community","name":"Attachments"},"ui5":{"state":"core-and-community","name":"Attachments"},"abap":{"state":"core-and-community","name":"Attachments"},"btp":{"state":"core-only","name":"Attachments"}},"href":"/capabilities/attachments","icon":"cap","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"capability:audit-logging","kind":"cap","label":"Audit logging","state":"core-only","domain":"security-and-compliance","doors":{"cap":{"state":"core-only","name":"Audit logging"},"btp":{"state":"core-only","name":"Audit logging"}},"href":"/capabilities/audit-logging","icon":"cap","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"capability:authentication","kind":"cap","label":"Authentication","state":"core-and-community","domain":"security-and-compliance","doors":{"cap":{"state":"core-and-community","name":"Authentication"},"btp":{"state":"core-and-community","name":"Authentication"},"abap":{"state":"core-and-community","name":"Authentication"},"ui5":{"state":"core-only","name":"Authentication"}},"href":"/capabilities/authentication","icon":"cap","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"capability:authorization","kind":"cap","label":"Authorization","state":"core-and-community","domain":"security-and-compliance","doors":{"cap":{"state":"core-and-community","name":"Authorization"},"btp":{"state":"core-only","name":"Authorization"},"abap":{"state":"core-and-community","name":"Authorization"}},"href":"/capabilities/authorization","icon":"cap","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"capability:b2b-message-mapping","kind":"cap","label":"B2B message mapping","state":"core-only","homeEco":"btp","domain":"integration-and-messaging","href":"/capabilities/b2b-message-mapping","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:caching","kind":"cap","label":"Caching","state":"core-and-community","domain":"data-and-persistence","doors":{"cap":{"state":"core-and-community","name":"Caching"},"btp":{"state":"core-only","name":"Caching"},"abap":{"state":"core-and-community","name":"Caching"}},"href":"/capabilities/caching","icon":"cap","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"capability:certificate-management","kind":"cap","label":"Certificate management","state":"core-and-community","domain":"security-and-compliance","doors":{"abap":{"state":"core-and-community","name":"Certificate management"},"btp":{"state":"core-only","name":"Certificate management"}},"href":"/capabilities/certificate-management","icon":"cap","ecos":["abap","btp"],"homeEcos":["abap","btp"]},{"id":"capability:change-promotion","kind":"cap","label":"Change promotion","state":"core-and-community","domain":"operations-and-runtime","doors":{"abap":{"state":"core-and-community","name":"Transport management"},"btp":{"state":"core-only","name":"Change promotion"},"cap":{"state":"core-only","name":"Change promotion"},"ui5":{"state":"core-only","name":"Change promotion"}},"href":"/capabilities/change-promotion","icon":"cap","ecos":["abap","btp","cap","ui5"],"homeEcos":["abap","btp","cap","ui5"]},{"id":"capability:change-tracking","kind":"cap","label":"Change tracking","state":"core-and-community","domain":"security-and-compliance","doors":{"cap":{"state":"core-and-community","name":"Change tracking"},"abap":{"state":"core-only","name":"Change tracking"}},"href":"/capabilities/change-tracking","icon":"cap","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"capability:ci-cd","kind":"cap","label":"CI/CD pipelines","state":"core-only","domain":"developer-experience","doors":{"btp":{"state":"core-only","name":"CI/CD pipelines"},"cap":{"state":"core-only","name":"CI/CD pipelines"}},"href":"/capabilities/ci-cd","icon":"cap","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"capability:code-metrics","kind":"cap","label":"Code metrics","state":"core-and-community","homeEco":"abap","domain":"developer-experience","href":"/capabilities/code-metrics","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:code-search","kind":"cap","label":"Searching code in a system","state":"core-and-community","homeEco":"abap","domain":"developer-experience","href":"/capabilities/code-search","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:concurrency-control","kind":"cap","label":"Concurrency control","state":"core-and-community","homeEco":"cap","domain":"data-and-persistence","href":"/capabilities/concurrency-control","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:configuration","kind":"cap","label":"Configuration","state":"core-only","domain":"operations-and-runtime","doors":{"cap":{"state":"core-only","name":"Configuration"},"abap":{"state":"core-and-community","name":"Configuration"}},"href":"/capabilities/configuration","icon":"cap","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"capability:consumption-monitoring","kind":"cap","label":"Consumption monitoring","state":"core-only","homeEco":"btp","domain":"operations-and-runtime","href":"/capabilities/consumption-monitoring","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:content-filtering","kind":"cap","label":"Content filtering","state":"core-only","domain":"ai-and-agents","doors":{"btp":{"state":"core-only","name":"Content filtering"},"cap":{"state":"core-only","name":"Content filtering"}},"href":"/capabilities/content-filtering","icon":"cap","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"capability:data-cataloguing","kind":"cap","label":"Cataloguing and lineage","state":"core-and-community","homeEco":"btp","domain":"data-and-persistence","href":"/capabilities/data-cataloguing","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:data-import-export","kind":"cap","label":"Importing and exporting table data","state":"core-and-community","domain":"data-and-persistence","doors":{"abap":{"state":"core-and-community","name":"Importing and exporting table data"},"ui5":{"state":"core-and-community","name":"Importing and exporting table data"},"cap":{"state":"community-only","name":"Importing and exporting table data"}},"href":"/capabilities/data-import-export","icon":"cap","ecos":["abap","ui5","cap"],"homeEcos":["abap","ui5","cap"]},{"id":"capability:data-masking","kind":"cap","label":"Data masking","state":"core-only","domain":"ai-and-agents","doors":{"btp":{"state":"core-only","name":"Data masking"},"cap":{"state":"core-and-community","name":"Data masking"}},"href":"/capabilities/data-masking","icon":"cap","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"capability:data-modelling","kind":"cap","label":"Data modelling","state":"core-and-community","domain":"data-and-persistence","doors":{"cap":{"state":"core-and-community","name":"Data modelling"},"abap":{"state":"core-and-community","name":"Data modelling"}},"href":"/capabilities/data-modelling","icon":"cap","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"capability:data-privacy","kind":"cap","label":"Data privacy","state":"core-only","domain":"security-and-compliance","doors":{"cap":{"state":"core-only","name":"Data privacy"},"abap":{"state":"core-and-community","name":"Data privacy"},"btp":{"state":"core-only","name":"Data privacy"}},"href":"/capabilities/data-privacy","icon":"cap","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"capability:database-administration","kind":"cap","label":"Database administration","state":"core-only","homeEco":"btp","domain":"data-and-persistence","href":"/capabilities/database-administration","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:database-connectors","kind":"cap","label":"Database connectors","state":"core-and-community","domain":"data-and-persistence","doors":{"cap":{"state":"core-and-community","name":"Database connectors"},"btp":{"state":"core-only","name":"Database connectors"},"abap":{"state":"core-only","name":"Database connectors"}},"href":"/capabilities/database-connectors","icon":"cap","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"capability:debugging","kind":"cap","label":"Debugging","state":"core-and-community","domain":"developer-experience","doors":{"cap":{"state":"core-and-community","name":"Debugging"},"abap":{"state":"core-and-community","name":"Debugging"}},"href":"/capabilities/debugging","icon":"cap","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"capability:dependency-injection","kind":"cap","label":"Dependency injection","state":"community-only","homeEco":"abap","domain":"developer-experience","href":"/capabilities/dependency-injection","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:deployment-operator","kind":"cap","label":"Deployment and operator","state":"core-only","domain":"operations-and-runtime","doors":{"cap":{"state":"core-only","name":"Deployment and operator"},"btp":{"state":"core-only","name":"Deployment and operator"}},"href":"/capabilities/deployment-operator","icon":"cap","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"capability:deployment","kind":"cap","label":"Deployment","state":"core-and-community","domain":"operations-and-runtime","doors":{"cap":{"state":"core-and-community","name":"Deployment"},"btp":{"state":"core-only","name":"Deployment"}},"href":"/capabilities/deployment","icon":"cap","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"capability:destinations","kind":"cap","label":"Destinations","state":"core-and-community","domain":"integration-and-messaging","doors":{"cap":{"state":"core-and-community","name":"Destinations"},"btp":{"state":"core-only","name":"Destinations"},"ui5":{"state":"core-only","name":"Destinations"}},"href":"/capabilities/destinations","icon":"cap","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp","ui5"]},{"id":"capability:document-extraction","kind":"cap","label":"Document extraction","state":"core-only","domain":"ai-and-agents","doors":{"btp":{"state":"core-only","name":"Document extraction"},"cap":{"state":"core-only","name":"Document extraction"},"ui5":{"state":"unmapped","name":"Document extraction"}},"href":"/capabilities/document-extraction","icon":"cap","ecos":["btp","cap","ui5"],"homeEcos":["btp","cap","ui5"]},{"id":"capability:document-output","kind":"cap","label":"Document output","state":"core-and-community","domain":"integration-and-messaging","doors":{"cap":{"state":"core-and-community","name":"Document output"},"abap":{"state":"core-and-community","name":"Document output"},"btp":{"state":"core-only","name":"Document output"}},"href":"/capabilities/document-output","icon":"cap","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"capability:documentation","kind":"cap","label":"Documentation","state":"core-and-community","domain":"learning-and-reference","doors":{"cap":{"state":"core-and-community","name":"Documentation"},"ui5":{"state":"core-and-community","name":"Documentation"},"btp":{"state":"community-only","name":"Documentation"},"abap":{"state":"core-and-community","name":"Documentation"}},"href":"/capabilities/documentation","icon":"cap","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"capability:draft-handling","kind":"cap","label":"Draft handling","state":"core-and-community","homeEco":"cap","domain":"ui-and-frontend-bridge","href":"/capabilities/draft-handling","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:editor-support","kind":"cap","label":"Editor support","state":"core-and-community","domain":"developer-experience","doors":{"cap":{"state":"core-and-community","name":"Editor support"},"abap":{"state":"core-and-community","name":"Editor support"},"btp":{"state":"core-and-community","name":"Editor support"},"ui5":{"state":"core-only","name":"Editor support"}},"href":"/capabilities/editor-support","icon":"cap","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"capability:encryption","kind":"cap","label":"Encryption and signing","state":"core-and-community","domain":"security-and-compliance","doors":{"abap":{"state":"core-and-community","name":"Encryption and signing"},"btp":{"state":"core-only","name":"Encryption and signing"}},"href":"/capabilities/encryption","icon":"cap","ecos":["abap","btp"],"homeEcos":["abap","btp"]},{"id":"capability:error-handling","kind":"cap","label":"Error handling","state":"core-and-community","domain":"protocols-and-apis","doors":{"cap":{"state":"core-and-community","name":"Error handling"},"abap":{"state":"core-and-community","name":"Error handling"}},"href":"/capabilities/error-handling","icon":"cap","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"capability:event-mesh","kind":"cap","label":"Event Mesh","state":"core-and-community","domain":"integration-and-messaging","doors":{"cap":{"state":"core-and-community","name":"Event Mesh"},"btp":{"state":"core-only","name":"Event Mesh"},"abap":{"state":"core-and-community","name":"Event Mesh"}},"href":"/capabilities/event-mesh","icon":"cap","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"capability:feature-toggles","kind":"cap","label":"Feature toggles","state":"core-and-community","domain":"operations-and-runtime","doors":{"cap":{"state":"core-and-community","name":"Feature toggles"},"btp":{"state":"core-only","name":"Feature toggles"},"abap":{"state":"core-and-community","name":"Feature toggles"}},"href":"/capabilities/feature-toggles","icon":"cap","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"capability:fiori-annotations","kind":"cap","label":"Fiori annotations","state":"core-and-community","domain":"ui-and-frontend-bridge","doors":{"cap":{"state":"core-and-community","name":"Fiori annotations"},"ui5":{"state":"core-and-community","name":"Fiori annotations"},"abap":{"state":"core-and-community","name":"Fiori annotations"}},"href":"/capabilities/fiori-annotations","icon":"cap","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"capability:frontend-boundary","kind":"cap","label":"Frontend boundary","state":"core-only","homeEco":"cap","domain":"ui-and-frontend-bridge","href":"/capabilities/frontend-boundary","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:frontend-performance","kind":"cap","label":"Frontend performance","state":"core-and-community","homeEco":"ui5","domain":"ui-and-frontend-bridge","href":"/capabilities/frontend-performance","icon":"cap","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"capability:generative-ui","kind":"cap","label":"Generative UI","state":"unmapped","domain":"ai-and-agents","doors":{"ui5":{"state":"unmapped","name":"Generative UI"},"cap":{"state":"unmapped","name":"Generative UI"}},"href":"/capabilities/generative-ui","icon":"cap","ecos":["ui5","cap"],"homeEcos":["ui5","cap"]},{"id":"capability:generators","kind":"cap","label":"Generators","state":"core-and-community","domain":"developer-experience","doors":{"cap":{"state":"core-and-community","name":"Generators"},"abap":{"state":"core-and-community","name":"Generators"},"ui5":{"state":"core-and-community","name":"Generators"}},"href":"/capabilities/generators","icon":"cap","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"capability:graphql","kind":"cap","label":"GraphQL","state":"core-only","homeEco":"cap","domain":"protocols-and-apis","href":"/capabilities/graphql","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:gui-automation","kind":"cap","label":"Driving the SAP GUI","state":"community-only","homeEco":"abap","domain":"developer-experience","href":"/capabilities/gui-automation","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:hana-native-artifacts","kind":"cap","label":"Native SAP HANA artifacts","state":"core-only","homeEco":"cap","domain":"data-and-persistence","href":"/capabilities/hana-native-artifacts","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:health-checks","kind":"cap","label":"Health checks","state":"core-only","homeEco":"cap","domain":"operations-and-runtime","href":"/capabilities/health-checks","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:health-data-interoperability","kind":"cap","label":"Health data interoperability","state":"core-only","homeEco":"btp","domain":"protocols-and-apis","href":"/capabilities/health-data-interoperability","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:http-clients","kind":"cap","label":"HTTP clients","state":"core-and-community","homeEco":"abap","domain":"protocols-and-apis","href":"/capabilities/http-clients","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:ide-provisioning","kind":"cap","label":"IDE provisioning","state":"core-and-community","homeEco":"abap","domain":"developer-experience","href":"/capabilities/ide-provisioning","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:identity-provisioning","kind":"cap","label":"Identity provisioning","state":"core-only","homeEco":"btp","domain":"security-and-compliance","href":"/capabilities/identity-provisioning","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:in-app-guidance","kind":"cap","label":"In-app guidance","state":"community-only","homeEco":"cap","domain":"ui-and-frontend-bridge","href":"/capabilities/in-app-guidance","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:input-validation","kind":"cap","label":"Input validation","state":"core-and-community","domain":"security-and-compliance","doors":{"cap":{"state":"core-and-community","name":"Input validation"},"abap":{"state":"core-and-community","name":"Input validation"},"ui5":{"state":"core-only","name":"Input validation"}},"href":"/capabilities/input-validation","icon":"cap","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"capability:integration-flows","kind":"cap","label":"Integration flows","state":"core-only","homeEco":"btp","domain":"integration-and-messaging","href":"/capabilities/integration-flows","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:integration-scenario-setup","kind":"cap","label":"Integration scenario setup","state":"core-only","homeEco":"btp","domain":"integration-and-messaging","href":"/capabilities/integration-scenario-setup","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:job-scheduling","kind":"cap","label":"Job scheduling","state":"core-only","domain":"operations-and-runtime","doors":{"btp":{"state":"core-only","name":"Job scheduling"},"cap":{"state":"core-and-community","name":"Job scheduling"},"abap":{"state":"core-only","name":"Job scheduling"}},"href":"/capabilities/job-scheduling","icon":"cap","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"capability:launchpad-content","kind":"cap","label":"Launchpad and site content","state":"core-only","domain":"ui-and-frontend-bridge","doors":{"btp":{"state":"core-only","name":"Launchpad and site content"},"ui5":{"state":"core-and-community","name":"Launchpad and site content"}},"href":"/capabilities/launchpad-content","icon":"cap","ecos":["btp","ui5"],"homeEcos":["btp","ui5"]},{"id":"capability:launchpad-plugins","kind":"cap","label":"Launchpad plugins","state":"core-and-community","domain":"ui-and-frontend-bridge","doors":{"ui5":{"state":"core-and-community","name":"Launchpad plugins"},"abap":{"state":"core-and-community","name":"Launchpad plugins"},"btp":{"state":"core-and-community","name":"Launchpad plugins"}},"href":"/capabilities/launchpad-plugins","icon":"cap","ecos":["ui5","abap","btp"],"homeEcos":["ui5","abap","btp"]},{"id":"capability:linting","kind":"cap","label":"Linting","state":"core-and-community","domain":"developer-experience","doors":{"cap":{"state":"core-and-community","name":"Linting"},"ui5":{"state":"core-and-community","name":"Linting"}},"href":"/capabilities/linting","icon":"cap","ecos":["cap","ui5"],"homeEcos":["cap","ui5"]},{"id":"capability:llm-integration","kind":"cap","label":"LLM integration","state":"core-and-community","domain":"ai-and-agents","doors":{"cap":{"state":"core-and-community","name":"LLM integration"},"ui5":{"state":"core-and-community","name":"LLM integration"},"btp":{"state":"core-only","name":"LLM integration"},"abap":{"state":"core-and-community","name":"LLM integration"}},"href":"/capabilities/llm-integration","icon":"cap","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"capability:local-development","kind":"cap","label":"Local development","state":"core-and-community","domain":"developer-experience","doors":{"cap":{"state":"core-and-community","name":"Local development"},"abap":{"state":"core-and-community","name":"Local development"}},"href":"/capabilities/local-development","icon":"cap","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"capability:localization","kind":"cap","label":"Localization","state":"core-only","domain":"ui-and-frontend-bridge","doors":{"cap":{"state":"core-only","name":"Localization"},"abap":{"state":"core-and-community","name":"Localization"},"btp":{"state":"core-only","name":"Localization"},"ui5":{"state":"core-and-community","name":"Localization"}},"href":"/capabilities/localization","icon":"cap","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"capability:location-services","kind":"cap","label":"Location services","state":"core-only","domain":"data-and-persistence","doors":{"btp":{"state":"core-only","name":"Location services"},"cap":{"state":"community-only","name":"Location services"}},"href":"/capabilities/location-services","icon":"cap","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"capability:logging","kind":"cap","label":"Logging","state":"core-only","domain":"operations-and-runtime","doors":{"cap":{"state":"core-only","name":"Logging"},"btp":{"state":"core-and-community","name":"Logging"},"abap":{"state":"core-and-community","name":"Logging"},"ui5":{"state":"core-and-community","name":"Logging"}},"href":"/capabilities/logging","icon":"cap","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"capability:low-code-apps","kind":"cap","label":"Low-code apps","state":"core-only","homeEco":"btp","domain":"developer-experience","href":"/capabilities/low-code-apps","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:malware-scanning","kind":"cap","label":"Malware scanning","state":"core-only","domain":"security-and-compliance","doors":{"btp":{"state":"core-only","name":"Malware scanning"},"cap":{"state":"core-only","name":"Malware scanning"}},"href":"/capabilities/malware-scanning","icon":"cap","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"capability:mcp-servers","kind":"cap","label":"Serve your application over MCP","state":"core-and-community","domain":"protocols-and-apis","doors":{"cap":{"state":"core-and-community","name":"Serve your application over MCP"},"btp":{"state":"core-and-community","name":"Serve your application over MCP"},"abap":{"state":"community-only","name":"Serve your application over MCP"}},"href":"/capabilities/mcp-servers","icon":"cap","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"capability:metadata-publishing","kind":"cap","label":"Metadata publishing","state":"core-and-community","homeEco":"cap","domain":"protocols-and-apis","href":"/capabilities/metadata-publishing","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:mobile-apps","kind":"cap","label":"Mobile apps","state":"core-and-community","homeEco":"btp","domain":"ui-and-frontend-bridge","href":"/capabilities/mobile-apps","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:model-visualisation","kind":"cap","label":"Model visualisation","state":"core-and-community","domain":"developer-experience","doors":{"cap":{"state":"core-and-community","name":"Model visualisation"},"abap":{"state":"core-and-community","name":"Model visualisation"}},"href":"/capabilities/model-visualisation","icon":"cap","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"capability:multi-model-data","kind":"cap","label":"Graph, spatial and document data","state":"core-only","homeEco":"btp","domain":"data-and-persistence","href":"/capabilities/multi-model-data","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:multitenancy","kind":"cap","label":"Multitenancy","state":"core-and-community","domain":"operations-and-runtime","doors":{"cap":{"state":"core-and-community","name":"Multitenancy"},"btp":{"state":"core-only","name":"Multitenancy"}},"href":"/capabilities/multitenancy","icon":"cap","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"capability:notifications","kind":"cap","label":"Notifications","state":"core-and-community","domain":"integration-and-messaging","doors":{"cap":{"state":"core-and-community","name":"Notifications"},"abap":{"state":"core-and-community","name":"Notifications"}},"href":"/capabilities/notifications","icon":"cap","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"capability:object-storage","kind":"cap","label":"Object storage","state":"core-only","homeEco":"btp","domain":"data-and-persistence","href":"/capabilities/object-storage","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:odata","kind":"cap","label":"OData","state":"core-and-community","domain":"protocols-and-apis","doors":{"cap":{"state":"core-and-community","name":"OData"},"abap":{"state":"core-and-community","name":"OData"}},"href":"/capabilities/odata","icon":"cap","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"capability:openapi","kind":"cap","label":"OpenAPI","state":"core-and-community","domain":"protocols-and-apis","doors":{"cap":{"state":"core-and-community","name":"OpenAPI"},"abap":{"state":"community-only","name":"OpenAPI"},"btp":{"state":"core-only","name":"OpenAPI"}},"href":"/capabilities/openapi","icon":"cap","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"capability:operations-automation","kind":"cap","label":"Operations automation","state":"core-only","homeEco":"btp","domain":"operations-and-runtime","href":"/capabilities/operations-automation","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:pagination-and-streaming","kind":"cap","label":"Pagination and streaming","state":"core-only","homeEco":"cap","domain":"protocols-and-apis","href":"/capabilities/pagination-and-streaming","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:parallel-processing","kind":"cap","label":"Parallel processing","state":"core-and-community","homeEco":"abap","domain":"operations-and-runtime","href":"/capabilities/parallel-processing","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:platform-migration","kind":"cap","label":"Platform migration","state":"core-and-community","domain":"operations-and-runtime","doors":{"btp":{"state":"core-and-community","name":"Platform migration"},"cap":{"state":"core-only","name":"Platform migration"}},"href":"/capabilities/platform-migration","icon":"cap","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"capability:plugin-authoring","kind":"cap","label":"Plugin authoring","state":"core-only","homeEco":"cap","domain":"developer-experience","href":"/capabilities/plugin-authoring","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:pod-plugins","kind":"cap","label":"POD plugins","state":"community-only","homeEco":"digital-manufacturing","domain":"ui-and-frontend-bridge","href":"/capabilities/pod-plugins","icon":"cap","ecos":["digital-manufacturing"],"homeEcos":["digital-manufacturing"]},{"id":"capability:predictive-models","kind":"cap","label":"Predictive models","state":"core-only","homeEco":"btp","domain":"ai-and-agents","href":"/capabilities/predictive-models","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:process-automation","kind":"cap","label":"Process automation","state":"core-only","homeEco":"btp","domain":"process-and-workflow","href":"/capabilities/process-automation","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:product-maintenance-status","kind":"cap","label":"Knowing the maintenance status of a release","state":"core-and-community","domain":"operations-and-runtime","doors":{"abap":{"state":"core-and-community","name":"Knowing the maintenance status of a release"},"cap":{"state":"core-only","name":"Knowing the maintenance status of a release"},"ui5":{"state":"core-and-community","name":"Knowing the maintenance status of a release"}},"href":"/capabilities/product-maintenance-status","icon":"cap","ecos":["abap","cap","ui5"],"homeEcos":["abap","cap","ui5"]},{"id":"capability:prompt-management","kind":"cap","label":"Prompt management","state":"core-only","domain":"ai-and-agents","doors":{"btp":{"state":"core-only","name":"Prompt management"},"cap":{"state":"core-and-community","name":"Prompt management"}},"href":"/capabilities/prompt-management","icon":"cap","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"capability:query-profiling","kind":"cap","label":"Query profiling","state":"unmapped","homeEco":"cap","domain":"data-and-persistence","href":"/capabilities/query-profiling","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:rate-limiting","kind":"cap","label":"Rate limiting","state":"core-and-community","domain":"security-and-compliance","doors":{"cap":{"state":"core-and-community","name":"Rate limiting"},"btp":{"state":"core-only","name":"Rate limiting"}},"href":"/capabilities/rate-limiting","icon":"cap","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"capability:reference-apps","kind":"cap","label":"Reference apps","state":"community-only","domain":"learning-and-reference","doors":{"cap":{"state":"community-only","name":"Reference apps"},"abap":{"state":"unmapped","name":"Reference apps"}},"href":"/capabilities/reference-apps","icon":"cap","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"capability:replication","kind":"cap","label":"Data federation","state":"core-and-community","domain":"data-and-persistence","doors":{"cap":{"state":"core-and-community","name":"Data federation"},"btp":{"state":"core-only","name":"Master data integration"}},"href":"/capabilities/replication","icon":"cap","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"capability:responsibility-assignment","kind":"cap","label":"Responsibility assignment","state":"core-only","homeEco":"btp","domain":"process-and-workflow","href":"/capabilities/responsibility-assignment","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:retrieval-augmented-generation","kind":"cap","label":"Retrieval-augmented generation","state":"core-and-community","domain":"ai-and-agents","doors":{"cap":{"state":"core-and-community","name":"RAG on CDS"},"abap":{"state":"core-and-community","name":"Retrieval-augmented generation"},"btp":{"state":"core-and-community","name":"Document grounding"}},"href":"/capabilities/retrieval-augmented-generation","icon":"cap","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"capability:rfc-connectivity","kind":"cap","label":"RFC connectivity","state":"core-and-community","domain":"integration-and-messaging","doors":{"cap":{"state":"core-and-community","name":"RFC connectivity"},"btp":{"state":"core-only","name":"RFC connectivity"},"abap":{"state":"core-and-community","name":"RFC connectivity"}},"href":"/capabilities/rfc-connectivity","icon":"cap","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"capability:schema-evolution","kind":"cap","label":"Schema evolution","state":"core-and-community","homeEco":"cap","domain":"data-and-persistence","href":"/capabilities/schema-evolution","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:search","kind":"cap","label":"Search","state":"core-and-community","domain":"data-and-persistence","doors":{"cap":{"state":"core-and-community","name":"Search"},"abap":{"state":"core-only","name":"Search"}},"href":"/capabilities/search","icon":"cap","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"capability:secrets-rotation","kind":"cap","label":"Secrets rotation","state":"core-only","domain":"security-and-compliance","doors":{"btp":{"state":"core-only","name":"Secrets rotation"},"cap":{"state":"core-only","name":"Secrets rotation"}},"href":"/capabilities/secrets-rotation","icon":"cap","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"capability:seed-data","kind":"cap","label":"Seed data","state":"core-and-community","domain":"developer-experience","doors":{"cap":{"state":"core-and-community","name":"Seed data"},"abap":{"state":"core-and-community","name":"Seed data"},"ui5":{"state":"core-only","name":"Seed data"}},"href":"/capabilities/seed-data","icon":"cap","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"capability:serialisation","kind":"cap","label":"Serialisation","state":"core-and-community","homeEco":"abap","domain":"protocols-and-apis","href":"/capabilities/serialisation","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:server-side-rendering","kind":"cap","label":"Server-side rendering","state":"community-only","domain":"ui-and-frontend-bridge","doors":{"cap":{"state":"community-only","name":"Server-side rendering"},"ui5":{"state":"unmapped","name":"Server-side rendering"}},"href":"/capabilities/server-side-rendering","icon":"cap","ecos":["cap","ui5"],"homeEcos":["cap","ui5"]},{"id":"capability:service-composition","kind":"cap","label":"Service composition","state":"core-only","homeEco":"cap","domain":"integration-and-messaging","href":"/capabilities/service-composition","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:service-integration","kind":"cap","label":"Service integration","state":"core-and-community","homeEco":"cap","domain":"integration-and-messaging","href":"/capabilities/service-integration","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:soft-delete","kind":"cap","label":"Soft delete","state":"community-only","homeEco":"cap","domain":"data-and-persistence","href":"/capabilities/soft-delete","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:statistical-analysis","kind":"cap","label":"Statistical analysis","state":"core-and-community","homeEco":"abap","domain":"data-and-persistence","href":"/capabilities/statistical-analysis","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:status-flows","kind":"cap","label":"Status flows","state":"core-only","homeEco":"cap","domain":"process-and-workflow","href":"/capabilities/status-flows","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:table-maintenance","kind":"cap","label":"Maintaining table entries","state":"core-and-community","homeEco":"abap","domain":"data-and-persistence","href":"/capabilities/table-maintenance","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:task-uis","kind":"cap","label":"Task and approval UIs","state":"core-only","domain":"ui-and-frontend-bridge","doors":{"btp":{"state":"core-only","name":"Task and approval UIs"},"ui5":{"state":"core-only","name":"Task and approval UIs"}},"href":"/capabilities/task-uis","icon":"cap","ecos":["btp","ui5"],"homeEcos":["btp","ui5"]},{"id":"capability:telemetry","kind":"cap","label":"Telemetry","state":"core-and-community","domain":"operations-and-runtime","doors":{"cap":{"state":"core-and-community","name":"Telemetry"},"abap":{"state":"core-and-community","name":"Telemetry"},"btp":{"state":"core-and-community","name":"Telemetry"}},"href":"/capabilities/telemetry","icon":"cap","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"capability:temporal-data","kind":"cap","label":"Temporal data","state":"core-only","homeEco":"cap","domain":"data-and-persistence","href":"/capabilities/temporal-data","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:tenant-extensibility","kind":"cap","label":"Tenant extensibility","state":"core-and-community","homeEco":"cap","domain":"operations-and-runtime","href":"/capabilities/tenant-extensibility","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:testing","kind":"cap","label":"Testing","state":"core-and-community","domain":"developer-experience","doors":{"cap":{"state":"core-and-community","name":"Testing"},"btp":{"state":"community-only","name":"Testing"},"digital-manufacturing":{"state":"unmapped","name":"Testing"}},"href":"/capabilities/testing","icon":"cap","ecos":["cap","btp","digital-manufacturing"],"homeEcos":["cap","btp","digital-manufacturing"]},{"id":"capability:third-party-connectors","kind":"cap","label":"Third-party connectors","state":"core-only","homeEco":"btp","domain":"integration-and-messaging","href":"/capabilities/third-party-connectors","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:tool-governance","kind":"cap","label":"Tool governance","state":"core-and-community","domain":"ai-and-agents","doors":{"cap":{"state":"core-and-community","name":"Tool governance"},"abap":{"state":"community-only","name":"Tool governance"},"btp":{"state":"core-and-community","name":"Tool governance"}},"href":"/capabilities/tool-governance","icon":"cap","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"capability:trading-partner-agreements","kind":"cap","label":"Trading partner agreements","state":"core-only","homeEco":"btp","domain":"integration-and-messaging","href":"/capabilities/trading-partner-agreements","icon":"cap","ecos":["btp"],"homeEcos":["btp"]},{"id":"capability:transaction-code-lookup","kind":"cap","label":"Finding a transaction code","state":"core-and-community","homeEco":"abap","domain":"developer-experience","href":"/capabilities/transaction-code-lookup","icon":"cap","ecos":["abap"],"homeEcos":["abap"]},{"id":"capability:transaction-management","kind":"cap","label":"Transaction management","state":"core-only","homeEco":"cap","domain":"data-and-persistence","href":"/capabilities/transaction-management","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:typescript-patterns","kind":"cap","label":"TypeScript patterns","state":"core-and-community","homeEco":"cap","domain":"developer-experience","href":"/capabilities/typescript-patterns","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:typing","kind":"cap","label":"Typing","state":"core-and-community","homeEco":"cap","domain":"developer-experience","href":"/capabilities/typing","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:ui5-build-tooling","kind":"cap","label":"Build and dev-server tooling","state":"core-and-community","homeEco":"ui5","domain":"developer-experience","href":"/capabilities/ui5-build-tooling","icon":"cap","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"capability:ui5-custom-controls","kind":"cap","label":"Custom controls and libraries","state":"core-and-community","homeEco":"ui5","domain":"ui-and-frontend-bridge","href":"/capabilities/ui5-custom-controls","icon":"cap","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"capability:ui5-data-binding","kind":"cap","label":"Data binding","state":"core-and-community","homeEco":"ui5","domain":"ui-and-frontend-bridge","href":"/capabilities/ui5-data-binding","icon":"cap","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"capability:ui5-dev-server","kind":"cap","label":"Integrated frontend dev server","state":"core-and-community","domain":"ui-and-frontend-bridge","doors":{"cap":{"state":"core-and-community","name":"UI5 dev server"},"ui5":{"state":"core-only","name":"Backend on the dev server"}},"href":"/capabilities/ui5-dev-server","icon":"cap","ecos":["cap","ui5"],"homeEcos":["cap","ui5"]},{"id":"capability:ui5-flexibility","kind":"cap","label":"Key-user adaptation","state":"core-only","domain":"ui-and-frontend-bridge","doors":{"ui5":{"state":"core-only","name":"Key-user adaptation"},"abap":{"state":"core-and-community","name":"Key-user adaptation"},"btp":{"state":"core-only","name":"Key-user adaptation"}},"href":"/capabilities/ui5-flexibility","icon":"cap","ecos":["ui5","abap","btp"],"homeEcos":["ui5","abap","btp"]},{"id":"capability:ui5-routing","kind":"cap","label":"Routing and navigation","state":"core-only","homeEco":"ui5","domain":"ui-and-frontend-bridge","href":"/capabilities/ui5-routing","icon":"cap","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"capability:ui5-testing","kind":"cap","label":"UI5 testing","state":"core-and-community","homeEco":"ui5","domain":"developer-experience","href":"/capabilities/ui5-testing","icon":"cap","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"capability:ui5-theming","kind":"cap","label":"Theming","state":"core-only","homeEco":"ui5","domain":"ui-and-frontend-bridge","href":"/capabilities/ui5-theming","icon":"cap","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"capability:ui5-touch-uis","kind":"cap","label":"Touch operation","state":"core-and-community","homeEco":"ui5","domain":"ui-and-frontend-bridge","href":"/capabilities/ui5-touch-uis","icon":"cap","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"capability:ui5-typescript","kind":"cap","label":"TypeScript support","state":"core-and-community","homeEco":"ui5","domain":"developer-experience","href":"/capabilities/ui5-typescript","icon":"cap","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"capability:ui5-web-components","kind":"cap","label":"Web Components interop","state":"core-and-community","homeEco":"ui5","domain":"ui-and-frontend-bridge","href":"/capabilities/ui5-web-components","icon":"cap","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"capability:value-normalisation","kind":"cap","label":"Value normalisation","state":"community-only","homeEco":"cap","domain":"data-and-persistence","href":"/capabilities/value-normalisation","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:vulnerability-scanning","kind":"cap","label":"Vulnerability scanning","state":"core-only","domain":"security-and-compliance","doors":{"btp":{"state":"core-only","name":"Vulnerability scanning"},"cap":{"state":"unmapped","name":"Vulnerability scanning"},"ui5":{"state":"unmapped","name":"Vulnerability scanning"}},"href":"/capabilities/vulnerability-scanning","icon":"cap","ecos":["btp","cap","ui5"],"homeEcos":["btp","cap","ui5"]},{"id":"capability:warehouse-loading","kind":"cap","label":"Loading a warehouse","state":"core-and-community","domain":"data-and-persistence","doors":{"btp":{"state":"core-and-community","name":"Loading a warehouse"},"abap":{"state":"core-and-community","name":"Loading a warehouse"}},"href":"/capabilities/warehouse-loading","icon":"cap","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"capability:websocket","kind":"cap","label":"WebSocket","state":"community-only","homeEco":"cap","domain":"protocols-and-apis","href":"/capabilities/websocket","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:workflow-integration","kind":"cap","label":"Workflow integration","state":"core-and-community","homeEco":"cap","domain":"process-and-workflow","href":"/capabilities/workflow-integration","icon":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"capability:xml-payloads","kind":"cap","label":"XML payloads","state":"community-only","domain":"protocols-and-apis","doors":{"cap":{"state":"community-only","name":"XML payloads"},"abap":{"state":"core-only","name":"XML payloads"}},"href":"/capabilities/xml-payloads","icon":"cap","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"artifact:1dsag-atc-best-practice-guide","kind":"art","label":"ATC-Best-Practice-Guide","ring":"independent","href":"/abap/artifacts/1dsag-atc-best-practice-guide","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:1dsag","kind":"actor","label":"DSAG","href":"/actors/1dsag","icon":"actor","initials":"D","ring":"independent","avatar":"/avatars/1dsag.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:1nbuc-mcp-integration-suite","kind":"art","label":"mcp-integration-suite","ring":"independent","href":"/btp/artifacts/1nbuc-mcp-integration-suite","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"actor:1nbuc","kind":"actor","label":"Noah Buchmann","href":"/actors/1nbuc","icon":"actor","initials":"NB","avatar":"/avatars/1nbuc.png","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"artifact:1nbuc-mcp-is-tpm","kind":"art","label":"mcp-is-tpm","ring":"independent","href":"/btp/artifacts/1nbuc-mcp-is-tpm","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:a2a-plugin","kind":"art","label":"a2a-plugin","ring":"independent","href":"/cap/artifacts/a2a-plugin","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:abap-adt-api","kind":"art","label":"abap-adt-api","ring":"independent","href":"/abap/artifacts/abap-adt-api","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:marcellourbani","kind":"actor","label":"Marcello Urbani","href":"/actors/marcellourbani","icon":"actor","initials":"MU","avatar":"/avatars/marcellourbani.png","ecos":["abap","btp"],"homeEcos":["abap","btp"]},{"id":"artifact:abap-ai-llm-client","kind":"art","label":"llm_client","ring":"independent","href":"/abap/artifacts/abap-ai-llm-client","icon":"package","homeEco":"abap","archived":true,"ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:abap-ai","kind":"actor","label":"ABAP-AI","href":"/actors/abap-ai","icon":"actor","initials":"AA","ring":"independent","avatar":"/avatars/abap-ai.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:abap-ai-mcp","kind":"art","label":"abap-ai/mcp","ring":"independent","href":"/abap/artifacts/abap-ai-mcp","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap-ai-mcp2","kind":"art","label":"abap-ai/mcp2","ring":"independent","href":"/abap/artifacts/abap-ai-mcp2","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap-cds","kind":"art","label":"ABAP CDS","ring":"sap-official","href":"/abap/artifacts/abap-cds","icon":"platform","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap-logger-abap-logger","kind":"art","label":"ABAP-Logger","ring":"independent","href":"/abap/artifacts/abap-logger-abap-logger","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:abap-logger","kind":"actor","label":"ABAP-Logger","href":"/actors/abap-logger","icon":"actor","initials":"AL","ring":"independent","avatar":"/avatars/abap-logger.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:abap-observability-tools-abap-log-exporter","kind":"art","label":"abap-log-exporter","ring":"independent","href":"/abap/artifacts/abap-observability-tools-abap-log-exporter","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:abap-observability-tools","kind":"actor","label":"abap-observability-tools","href":"/actors/abap-observability-tools","icon":"actor","initials":"AOT","ring":"independent","avatar":"/avatars/abap-observability-tools.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:abap-observability-tools-abap-metrics-provider","kind":"art","label":"abap-metrics-provider","ring":"independent","href":"/abap/artifacts/abap-observability-tools-abap-metrics-provider","icon":"app","homeEco":"abap","archived":true,"ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap-openapi-abap-openapi","kind":"art","label":"abap-openapi","ring":"independent","href":"/abap/artifacts/abap-openapi-abap-openapi","icon":"generator","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:abap-openapi","kind":"actor","label":"abap-openapi","href":"/actors/abap-openapi","icon":"actor","initials":"AO","ring":"independent","avatar":"/avatars/abap-openapi.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:abap2ui5-abap2ui5-local","kind":"art","label":"abap2UI5-local","ring":"community-org","href":"/abap/artifacts/abap2ui5-abap2ui5-local","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:abap2ui5","kind":"actor","label":"abap2UI5","href":"/actors/abap2ui5","icon":"actor","initials":"A","ring":"community-org","avatar":"/avatars/abap2ui5.png","ecos":["abap","ui5","btp","cap"],"homeEcos":["abap","ui5"]},{"id":"artifact:abap2ui5-abap2ui5","kind":"art","label":"abap2UI5","ring":"community-org","href":"/abap/artifacts/abap2ui5-abap2ui5","icon":"package","homeEco":"abap","ecos":["abap","ui5","btp","cap"],"homeEcos":["abap","ui5"]},{"id":"artifact:abap2ui5-addons-abap-agent-runtime","kind":"art","label":"abap-agent-runtime","ring":"community-org","href":"/abap/artifacts/abap2ui5-addons-abap-agent-runtime","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:abap2ui5-addons","kind":"actor","label":"abap2UI5-addons","href":"/actors/abap2ui5-addons","icon":"actor","initials":"AA","ring":"independent","avatar":"/avatars/abap2ui5-addons.png","ecos":["abap","ui5"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:abap2ui5-addons-abap-cloud-gui","kind":"art","label":"abap-cloud-gui","ring":"independent","href":"/abap/artifacts/abap2ui5-addons-abap-cloud-gui","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-addons-admin-cockpit","kind":"art","label":"admin-cockpit","ring":"community-org","href":"/abap/artifacts/abap2ui5-addons-admin-cockpit","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-addons-config-management","kind":"art","label":"config-management","ring":"community-org","href":"/abap/artifacts/abap2ui5-addons-config-management","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-addons-custom-controls-customer","kind":"art","label":"custom-controls-customer","ring":"community-org","href":"/abap/artifacts/abap2ui5-addons-custom-controls-customer","icon":"sample","homeEco":"abap","ecos":["abap","ui5"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-addons-custom-controls","kind":"art","label":"custom-controls","ring":"community-org","href":"/abap/artifacts/abap2ui5-addons-custom-controls","icon":"package","homeEco":"abap","ecos":["abap","ui5"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-addons-http-connector","kind":"art","label":"http-connector","ring":"community-org","href":"/abap/artifacts/abap2ui5-addons-http-connector","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-addons-launchpad-kpi","kind":"art","label":"launchpad-kpi","ring":"community-org","href":"/abap/artifacts/abap2ui5-addons-launchpad-kpi","icon":"package","homeEco":"abap","ecos":["abap","ui5"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-addons-layout-management","kind":"art","label":"layout-management","ring":"independent","href":"/abap/artifacts/abap2ui5-addons-layout-management","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-addons-lock-manager","kind":"art","label":"lock-manager","ring":"community-org","href":"/abap/artifacts/abap2ui5-addons-lock-manager","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-addons-office-addin","kind":"art","label":"abap2UI5 for Excel","ring":"community-org","href":"/abap/artifacts/abap2ui5-addons-office-addin","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-addons-open-source-libs","kind":"art","label":"abap2UI5-addons/open-source-libs","ring":"community-org","href":"/abap/artifacts/abap2ui5-addons-open-source-libs","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-addons-popups","kind":"art","label":"abap2UI5-addons/popups","ring":"community-org","href":"/abap/artifacts/abap2ui5-addons-popups","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-addons-rap-ext","kind":"art","label":"rap-ext","ring":"community-org","href":"/abap/artifacts/abap2ui5-addons-rap-ext","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-addons-rfc-connector","kind":"art","label":"rfc-connector","ring":"community-org","href":"/abap/artifacts/abap2ui5-addons-rfc-connector","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-addons-sapgui","kind":"art","label":"sapgui","ring":"independent","href":"/abap/artifacts/abap2ui5-addons-sapgui","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-addons-se16n","kind":"art","label":"se16n","ring":"independent","href":"/abap/artifacts/abap2ui5-addons-se16n","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-addons-selection-screen","kind":"art","label":"selection-screen","ring":"independent","href":"/abap/artifacts/abap2ui5-addons-selection-screen","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-addons-sql-console","kind":"art","label":"sql-console","ring":"independent","href":"/abap/artifacts/abap2ui5-addons-sql-console","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-addons-table-content-loader","kind":"art","label":"abap2UI5-addons/table-content-loader","ring":"independent","href":"/abap/artifacts/abap2ui5-addons-table-content-loader","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-addons-table-maintenance","kind":"art","label":"table-maintenance","ring":"independent","href":"/abap/artifacts/abap2ui5-addons-table-maintenance","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-app-template","kind":"art","label":"app-template","ring":"community-org","href":"/abap/artifacts/abap2ui5-app-template","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-embed-control","kind":"art","label":"@abap2ui5/embed-control","ring":"community-org","href":"/ui5/artifacts/abap2ui5-embed-control","icon":"package","homeEco":"ui5","ecos":["ui5","abap"],"homeEcos":["ui5"]},{"id":"actor:oblomov-dev","kind":"actor","label":"oblomov-dev","href":"/actors/oblomov-dev","icon":"actor","initials":"OD","avatar":"/avatars/oblomov-dev.png","ecos":["ui5","abap"],"homeEcos":["ui5","abap"]},{"id":"artifact:abap2ui5-frontend-webcomponent","kind":"art","label":"abap2UI5 frontend-webcomponent","ring":"community-org","href":"/abap/artifacts/abap2ui5-frontend-webcomponent","icon":"package","homeEco":"abap","ecos":["abap","ui5"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-frontend","kind":"art","label":"abap2UI5 frontend","ring":"community-org","href":"/abap/artifacts/abap2ui5-frontend","icon":"package","homeEco":"abap","ecos":["abap","ui5"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-headless-frontend","kind":"art","label":"abap2UI5 headless frontend","ring":"community-org","href":"/abap/artifacts/abap2ui5-headless-frontend","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-layout-editor","kind":"art","label":"abap2UI5 Layout Editor","ring":"community-org","href":"/abap/artifacts/abap2ui5-layout-editor","icon":"web-tool","homeEco":"abap","ecos":["abap","ui5"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-linter","kind":"art","label":"@abap2ui5/linter","ring":"community-org","href":"/abap/artifacts/abap2ui5-linter","icon":"cli","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-mcp-server","kind":"art","label":"@abap2ui5/mcp-server","ring":"community-org","href":"/abap/artifacts/abap2ui5-mcp-server","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-mobile-shell","kind":"art","label":"abap2UI5 mobile shell","ring":"community-org","href":"/abap/artifacts/abap2ui5-mobile-shell","icon":"desktop-app","homeEco":"abap","ecos":["abap","btp"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-playground","kind":"art","label":"abap2UI5 Playground","ring":"community-org","href":"/abap/artifacts/abap2ui5-playground","icon":"web-tool","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-protocol","kind":"art","label":"abap2UI5 protocol","ring":"community-org","href":"/abap/artifacts/abap2ui5-protocol","icon":"practice","homeEco":"abap","ecos":["abap","ui5","cap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-samples-controls","kind":"art","label":"abap2UI5/samples-controls","ring":"community-org","href":"/abap/artifacts/abap2ui5-samples-controls","icon":"sample","homeEco":"abap","ecos":["abap","ui5"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-samples-stack","kind":"art","label":"abap2UI5/samples-stack","ring":"community-org","href":"/abap/artifacts/abap2ui5-samples-stack","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-samples","kind":"art","label":"abap2UI5 samples","ring":"community-org","href":"/abap/artifacts/abap2ui5-samples","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-vscode-extension","kind":"art","label":"abap2UI5 for VS Code","ring":"community-org","href":"/abap/artifacts/abap2ui5-vscode-extension","icon":"ide-extension","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2ui5-web-abap2ui5","kind":"art","label":"web-abap2UI5","ring":"community-org","href":"/abap/artifacts/abap2ui5-web-abap2ui5","icon":"web-tool","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abap2xlsx-abap2xlsx","kind":"art","label":"abap2xlsx","ring":"independent","href":"/abap/artifacts/abap2xlsx-abap2xlsx","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:abap2xlsx","kind":"actor","label":"abap2xlsx","href":"/actors/abap2xlsx","icon":"actor","initials":"A","ring":"independent","avatar":"/avatars/abap2xlsx.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:abapcdsgrammar","kind":"art","label":"abapcdsgrammar","ring":"independent","href":"/abap/artifacts/abapcdsgrammar","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:esjewett","kind":"actor","label":"Ethan Jewett","href":"/actors/esjewett","icon":"actor","initials":"EJ","avatar":"/avatars/esjewett.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:abapchaoliu-abap-jwt-generator","kind":"art","label":"abap_jwt_generator","ring":"independent","href":"/abap/artifacts/abapchaoliu-abap-jwt-generator","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:abapchaoliu","kind":"actor","label":"Chao Liu","href":"/actors/abapchaoliu","icon":"actor","initials":"CL","avatar":"/avatars/abapchaoliu.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:abapgit-abapgit","kind":"art","label":"abapGit","ring":"community-org","href":"/abap/artifacts/abapgit-abapgit","icon":"app","homeEco":"abap","ecos":["abap","ui5","btp","cap"],"homeEcos":["abap"]},{"id":"actor:abapgit","kind":"actor","label":"abapGit","href":"/actors/abapgit","icon":"actor","initials":"A","ring":"community-org","avatar":"/avatars/abapgit.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:abapify-acds","kind":"art","label":"@abapify/acds","ring":"independent","href":"/abap/artifacts/abapify-acds","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:abapify","kind":"actor","label":"abapify","href":"/actors/abapify","icon":"actor","initials":"A","ring":"independent","avatar":"/avatars/abapify.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:abapify-assert","kind":"art","label":"assert","ring":"independent","href":"/abap/artifacts/abapify-assert","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abapify-codepage","kind":"art","label":"codepage","ring":"independent","href":"/abap/artifacts/abapify-codepage","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abapify-fetch-cloud","kind":"art","label":"abapify/fetch-cloud","ring":"independent","href":"/abap/artifacts/abapify-fetch-cloud","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abapify-fetch-legacy","kind":"art","label":"abapify/fetch-legacy","ring":"independent","href":"/abap/artifacts/abapify-fetch-legacy","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abapify-fetch","kind":"art","label":"abapify/fetch","ring":"independent","href":"/abap/artifacts/abapify-fetch","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abapify-json","kind":"art","label":"ABAP JSON API","ring":"independent","href":"/abap/artifacts/abapify-json","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abapify-promise","kind":"art","label":"abapify/promise","ring":"independent","href":"/abap/artifacts/abapify-promise","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abapify-throw","kind":"art","label":"throw","ring":"independent","href":"/abap/artifacts/abapify-throw","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abapinho-abak","kind":"art","label":"abaK","ring":"independent","href":"/abap/artifacts/abapinho-abak","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:abapinho","kind":"actor","label":"Abapinho","href":"/actors/abapinho","icon":"actor","initials":"A","ring":"independent","avatar":"/avatars/abapinho.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:abapinho-abaptimemachine","kind":"art","label":"abapTimeMachine","ring":"independent","href":"/abap/artifacts/abapinho-abaptimemachine","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abaplint-abaplint-sci-client","kind":"art","label":"abaplint-sci-client","ring":"community-org","href":"/abap/artifacts/abaplint-abaplint-sci-client","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:abaplint","kind":"actor","label":"abaplint","href":"/actors/abaplint","icon":"actor","initials":"A","ring":"community-org","avatar":"/avatars/abaplint.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:abaplint-abaplint","kind":"art","label":"abaplint","ring":"community-org","href":"/abap/artifacts/abaplint-abaplint","icon":"cli","homeEco":"abap","ecos":["abap","btp"],"homeEcos":["abap"]},{"id":"artifact:abaplint-transpiler","kind":"art","label":"@abaplint/transpiler","ring":"community-org","href":"/abap/artifacts/abaplint-transpiler","icon":"build-tool","homeEco":"abap","ecos":["abap","ui5"],"homeEcos":["abap"]},{"id":"actor:larshp","kind":"actor","label":"Lars Hvam","href":"/actors/larshp","icon":"actor","initials":"LH","avatar":"/avatars/larshp.png","ecos":["abap","cap","ui5","btp"],"homeEcos":["abap","cap","ui5","btp"]},{"id":"artifact:abaplint-vscode-tabl-ddic","kind":"art","label":"vscode-tabl-ddic","ring":"community-org","href":"/abap/artifacts/abaplint-vscode-tabl-ddic","icon":"ide-extension","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abappm-abap-strust","kind":"art","label":"abapPM/ABAP-Strust","ring":"independent","href":"/abap/artifacts/abappm-abap-strust","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:abappm","kind":"actor","label":"apm.to","href":"/actors/abappm","icon":"actor","initials":"A","ring":"independent","avatar":"/avatars/abappm.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:abaptools-abapdomcheck","kind":"art","label":"abapDomCheck","ring":"independent","href":"/abap/artifacts/abaptools-abapdomcheck","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:abaptools","kind":"actor","label":"abapTools","href":"/actors/abaptools","icon":"actor","initials":"A","ring":"independent","avatar":"/avatars/abaptools.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:abat-tao-arc-1-bopf-enh","kind":"art","label":"arc-1-bopf-enh","ring":"independent","href":"/abap/artifacts/abat-tao-arc-1-bopf-enh","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:abat-tao","kind":"actor","label":"abat-TAO","href":"/actors/abat-tao","icon":"actor","initials":"AT","avatar":"/avatars/abat-tao.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:abdulbasitg-cds-numberrange-plugin","kind":"art","label":"cds-numberrange-plugin","ring":"independent","href":"/cap/artifacts/abdulbasitg-cds-numberrange-plugin","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:abdulbasitg","kind":"actor","label":"Abdulbasıt Gülşen","href":"/actors/abdulbasitg","icon":"actor","initials":"AG","ring":"independent","avatar":"/avatars/abdulbasitg.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:abeljohny-zap","kind":"art","label":"abeljohny/ZAP","ring":"independent","href":"/abap/artifacts/abeljohny-zap","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:abinayaaa-sap-cx-developer-companion","kind":"art","label":"sap-cx-developer-companion","ring":"independent","href":"/commerce/artifacts/abinayaaa-sap-cx-developer-companion","icon":"skill","homeEco":"commerce","ecos":["commerce","cap","btp"],"homeEcos":["commerce"]},{"id":"actor:abinayaaa","kind":"actor","label":"Abinaya Srinivasan","href":"/actors/abinayaaa","icon":"actor","initials":"AS","avatar":"/avatars/abinayaaa.png","ecos":["commerce","cap","btp"],"homeEcos":["commerce"],"homeEco":"commerce"},{"id":"artifact:adam0thman-sap-basis-ops","kind":"art","label":"sap-basis-ops","ring":"independent","href":"/abap/artifacts/adam0thman-sap-basis-ops","icon":"skill","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:adam0thman","kind":"actor","label":"adam0thman","href":"/actors/adam0thman","icon":"actor","initials":"A","avatar":"/avatars/adam0thman.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:aditheos-applicationlogsnotificationtofiori","kind":"art","label":"aditheos/ApplicationLogsNotificationToFiori","ring":"independent","href":"/abap/artifacts/aditheos-applicationlogsnotificationtofiori","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:aditheos","kind":"actor","label":"Aditheos Solutions","href":"/actors/aditheos","icon":"actor","initials":"AS","avatar":"/avatars/aditheos.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:aditheos-attachmentcommentodataservice","kind":"art","label":"AttachmentCommentODataService","ring":"independent","href":"/abap/artifacts/aditheos-attachmentcommentodataservice","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:agiguere-scpmspushnotificationrest-api","kind":"art","label":"agiguere/SCPmsPushNotificationREST_API","ring":"independent","href":"/abap/artifacts/agiguere-scpmspushnotificationrest-api","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:agiguere","kind":"actor","label":"Alexandre Giguere","href":"/actors/agiguere","icon":"actor","initials":"AG","avatar":"/avatars/agiguere.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:agraeber-cdsanalyser","kind":"art","label":"cdsanalyser","ring":"independent","href":"/abap/artifacts/agraeber-cdsanalyser","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:agraeber","kind":"actor","label":"agraeber","href":"/actors/agraeber","icon":"actor","initials":"A","avatar":"/avatars/agraeber.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:aiadiguru-sf-mcp","kind":"art","label":"SF-MCP","ring":"independent","href":"/successfactors/artifacts/aiadiguru-sf-mcp","icon":"mcp-server","homeEco":"successfactors","ecos":["successfactors"],"homeEcos":["successfactors"]},{"id":"actor:aiadiguru2025","kind":"actor","label":"aiadiguru2025","href":"/actors/aiadiguru2025","icon":"actor","initials":"A","avatar":"/avatars/aiadiguru2025.png","ecos":["successfactors"],"homeEcos":["successfactors"],"homeEco":"successfactors"},{"id":"artifact:akatuoro-vite-plugin-cds","kind":"art","label":"vite-plugin-cds","ring":"independent","href":"/cap/artifacts/akatuoro-vite-plugin-cds","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:akatuoro","kind":"actor","label":"Johannes Vogt","href":"/actors/akatuoro","icon":"actor","initials":"JV","ring":"sap-official","avatar":"/avatars/akatuoro.png","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"artifact:alaible-dbg-value-statement","kind":"art","label":"dbg_value_statement","ring":"independent","href":"/abap/artifacts/alaible-dbg-value-statement","icon":"generator","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:alaible","kind":"actor","label":"Alex","href":"/actors/alaible","icon":"actor","initials":"A","avatar":"/avatars/alaible.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:albertmink-agentic-abap-evals","kind":"art","label":"agentic-abap-evals","ring":"independent","href":"/abap/artifacts/albertmink-agentic-abap-evals","icon":"cli","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:albertmink","kind":"actor","label":"Albert Mink","href":"/actors/albertmink","icon":"actor","initials":"AM","avatar":"/avatars/albertmink.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:alborghetti-abapfire","kind":"art","label":"ABAPFire","ring":"independent","href":"/abap/artifacts/alborghetti-abapfire","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:alborghetti","kind":"actor","label":"Francesco","href":"/actors/alborghetti","icon":"actor","initials":"F","avatar":"/avatars/alborghetti.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:alokm3hta-star-abap-offstack-testing","kind":"art","label":"abap-offstack-aunit","ring":"independent","href":"/abap/artifacts/alokm3hta-star-abap-offstack-testing","icon":"skill","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:alokm3hta-star","kind":"actor","label":"alokm3hta-star","href":"/actors/alokm3hta-star","icon":"actor","initials":"AS","avatar":"/avatars/alokm3hta-star.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:alwinvandeput-zscv-search-cds-views","kind":"art","label":"alwinvandeput/zscv_search_cds_views","ring":"independent","href":"/abap/artifacts/alwinvandeput-zscv-search-cds-views","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:alwinvandeput","kind":"actor","label":"Alwin van de Put","href":"/actors/alwinvandeput","icon":"actor","initials":"AVD","avatar":"/avatars/alwinvandeput.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:andre-schaerpf-hammer-core-services","kind":"art","label":"Hammer Core Services","ring":"independent","href":"/abap/artifacts/andre-schaerpf-hammer-core-services","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:andre-schaerpf-hammer","kind":"art","label":"Hammer","ring":"independent","href":"/abap/artifacts/andre-schaerpf-hammer","icon":"desktop-app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:andre-schaerpf","kind":"actor","label":"André Schärpf","href":"/actors/andre-schaerpf","icon":"actor","initials":"AS","ring":"independent","avatar":"/avatars/andre-schaerpf.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:andreescocard-hybris-mcp-lite","kind":"art","label":"hybris-mcp-lite","ring":"independent","href":"/commerce/artifacts/andreescocard-hybris-mcp-lite","icon":"mcp-server","homeEco":"commerce","ecos":["commerce"],"homeEcos":["commerce"]},{"id":"actor:andreescocard","kind":"actor","label":"André Escocard","href":"/actors/andreescocard","icon":"actor","initials":"AE","avatar":"/avatars/andreescocard.png","ecos":["commerce"],"homeEcos":["commerce"],"homeEco":"commerce"},{"id":"artifact:animb1996-cds-data-drift","kind":"art","label":"@animb1996/cds-data-drift","ring":"independent","href":"/cap/artifacts/animb1996-cds-data-drift","icon":"cli","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:abasu1996","kind":"actor","label":"Anim Basu","href":"/actors/abasu1996","icon":"actor","initials":"AB","avatar":"/avatars/abasu1996.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:anishk835-cds-eclipse-plugin","kind":"art","label":"cds-eclipse-plugin","ring":"independent","href":"/cap/artifacts/anishk835-cds-eclipse-plugin","icon":"ide-extension","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:anishk835","kind":"actor","label":"Anish Kumar","href":"/actors/anishk835","icon":"actor","initials":"AK","avatar":"/avatars/anishk835.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:antonsikidin-zcl-docx","kind":"art","label":"zcl_docx","ring":"independent","href":"/abap/artifacts/antonsikidin-zcl-docx","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:antonsikidin","kind":"actor","label":"AntonSikidin","href":"/actors/antonsikidin","icon":"actor","initials":"A","avatar":"/avatars/antonsikidin.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:appknight-dump-info","kind":"art","label":"dump_info","ring":"independent","href":"/abap/artifacts/appknight-dump-info","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:appknight","kind":"actor","label":"AppKnight","href":"/actors/appknight","icon":"actor","initials":"A","ring":"independent","avatar":"/avatars/appknight.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:arc-mcp-adt-ls","kind":"art","label":"@arc-mcp/adt-ls","ring":"independent","href":"/abap/artifacts/arc-mcp-adt-ls","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:arc-mcp","kind":"actor","label":"ARC MCP","href":"/actors/arc-mcp","icon":"actor","initials":"AM","ring":"independent","avatar":"/avatars/arc-mcp.png","ecos":["abap","btp"],"homeEcos":["abap","btp"]},{"id":"actor:marianfoo","kind":"actor","label":"Marian Zeis","href":"/actors/marianfoo","icon":"actor","initials":"MZ","avatar":"/avatars/marianfoo.png","ecos":["abap","btp","cap","ui5","digital-manufacturing"],"homeEcos":["abap","btp","cap","ui5","digital-manufacturing"]},{"id":"artifact:arc-mcp-arc-1-extension-sample","kind":"art","label":"arc-1-extension-sample","ring":"independent","href":"/abap/artifacts/arc-mcp-arc-1-extension-sample","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:arc-mcp-arc-1-lsp","kind":"art","label":"arc-1-lsp","ring":"independent","href":"/abap/artifacts/arc-mcp-arc-1-lsp","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:arc-mcp-arc-1-skills","kind":"art","label":"ARC-1 Skills","ring":"independent","href":"/abap/artifacts/arc-mcp-arc-1-skills","icon":"skill","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:arc-mcp-arc-1","kind":"art","label":"arc-1","ring":"independent","href":"/abap/artifacts/arc-mcp-arc-1","icon":"mcp-server","homeEco":"abap","ecos":["abap","btp","cap"],"homeEcos":["abap","btp"]},{"id":"artifact:arc-mcp-arc1-abap-bridge","kind":"art","label":"arc1-abap-bridge","ring":"independent","href":"/abap/artifacts/arc-mcp-arc1-abap-bridge","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:arc-mcp-arc1-adt-ext","kind":"art","label":"arc1-adt-abap-mcp-ext","ring":"independent","href":"/abap/artifacts/arc-mcp-arc1-adt-ext","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:arc-mcp-hub","kind":"art","label":"arc-mcp-hub","ring":"independent","href":"/btp/artifacts/arc-mcp-hub","icon":"mcp-server","homeEco":"btp","archived":true,"ecos":["btp","abap"],"homeEcos":["btp"]},{"id":"artifact:arc-mcp-xsuaa-auth","kind":"art","label":"@arc-mcp/xsuaa-auth","ring":"independent","href":"/btp/artifacts/arc-mcp-xsuaa-auth","icon":"package","homeEco":"btp","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"artifact:architecture-center","kind":"art","label":"SAP/architecture-center","ring":"sap-official","href":"/btp/artifacts/architecture-center","icon":"doc-source","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"actor:sap","kind":"actor","label":"SAP","href":"/actors/sap","icon":"actor","initials":"S","ring":"sap-official","avatar":"/avatars/sap.png","ecos":["btp","abap","cap","ui5","commerce","successfactors"],"homeEcos":["btp","ui5","abap","cap","commerce","successfactors"]},{"id":"actor:sap-architecture-center","kind":"actor","label":"SAP Architecture Center","href":"/actors/sap-architecture-center","icon":"actor","initials":"SAC","ring":"sap-official","avatar":"/avatars/sap-architecture-center.png","ecos":["btp","cap","abap","ui5","digital-manufacturing"],"homeEcos":["btp","cap","abap","ui5","digital-manufacturing"]},{"id":"artifact:arnaudbuchholz-ui5-test-runner","kind":"art","label":"ui5-test-runner","ring":"independent","href":"/ui5/artifacts/arnaudbuchholz-ui5-test-runner","icon":"cli","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:arnaudbuchholz","kind":"actor","label":"Arnaud Buchholz","href":"/actors/arnaudbuchholz","icon":"actor","initials":"AB","avatar":"/avatars/arnaudbuchholz.png","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"artifact:attilaberencsi-abaprapunmanaged","kind":"art","label":"abaprapunmanaged","ring":"independent","href":"/abap/artifacts/attilaberencsi-abaprapunmanaged","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:attilaberencsi","kind":"actor","label":"Attila Berencsi","href":"/actors/attilaberencsi","icon":"actor","initials":"AB","avatar":"/avatars/attilaberencsi.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:attilaberencsi-abaprapunmanagedsave","kind":"art","label":"abaprapunmanagedsave","ring":"independent","href":"/abap/artifacts/attilaberencsi-abaprapunmanagedsave","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:attilaberencsi-abapthemes","kind":"art","label":"abapthemes","ring":"independent","href":"/abap/artifacts/attilaberencsi-abapthemes","icon":"ide-extension","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:attilaberencsi-abapwulu","kind":"art","label":"abapwulu","ring":"independent","href":"/abap/artifacts/attilaberencsi-abapwulu","icon":"cli","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:attilaberencsi-sapskills","kind":"art","label":"sapskills","ring":"independent","href":"/abap/artifacts/attilaberencsi-sapskills","icon":"skill","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:atudor2-abap-pwnedpasswords","kind":"art","label":"abap-pwnedpasswords","ring":"independent","href":"/abap/artifacts/atudor2-abap-pwnedpasswords","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:atudor2","kind":"actor","label":"Alistair Tudor","href":"/actors/atudor2","icon":"actor","initials":"AT","avatar":"/avatars/atudor2.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:automatizatodo-capforge","kind":"art","label":"capforge","ring":"independent","href":"/cap/artifacts/automatizatodo-capforge","icon":"mcp-server","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:automatizatodo","kind":"actor","label":"automatizatodo","href":"/actors/automatizatodo","icon":"actor","initials":"A","avatar":"/avatars/automatizatodo.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:aws-abap-accelerator","kind":"art","label":"ABAP Accelerator MCP Server","ring":"partner","href":"/abap/artifacts/aws-abap-accelerator","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:aws-solutions-library-samples","kind":"actor","label":"aws-solutions-library-samples","href":"/actors/aws-solutions-library-samples","icon":"actor","initials":"ASL","ring":"independent","avatar":"/avatars/aws-solutions-library-samples.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:aws-modernization-agents-for-sap","kind":"art","label":"Modernization Agents for SAP on AWS","ring":"partner","href":"/abap/artifacts/aws-modernization-agents-for-sap","icon":"app","homeEco":"abap","ecos":["abap","btp"],"homeEcos":["abap"]},{"id":"actor:aws-for-sap","kind":"actor","label":"AWS for SAP","href":"/actors/aws-for-sap","icon":"actor","initials":"AFS","ring":"independent","avatar":"/avatars/aws-for-sap.png","ecos":["abap","btp"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:aydin-ozcan-generator-ui5-react-nest","kind":"art","label":"generator-ui5-react-nest","ring":"independent","href":"/ui5/artifacts/aydin-ozcan-generator-ui5-react-nest","icon":"generator","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:aydin-ozcan","kind":"actor","label":"Aydin Ozcan","href":"/actors/aydin-ozcan","icon":"actor","initials":"AO","avatar":"/avatars/aydin-ozcan.png","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"artifact:b-tocs-abap-btocs-core","kind":"art","label":"B-Tocs ABAP SDK","ring":"independent","href":"/abap/artifacts/b-tocs-abap-btocs-core","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:b-tocs","kind":"actor","label":"B-Tocs.org Community","href":"/actors/b-tocs","icon":"actor","initials":"BTC","avatar":"/avatars/b-tocs.png","ecos":["abap","btp"],"homeEcos":["abap","btp"]},{"id":"artifact:b-tocs-abap-btocs-deepl","kind":"art","label":"abap_btocs_deepl","ring":"independent","href":"/abap/artifacts/b-tocs-abap-btocs-deepl","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:b-tocs-abap-btocs-libtrl","kind":"art","label":"abap_btocs_libtrl","ring":"independent","href":"/abap/artifacts/b-tocs-abap-btocs-libtrl","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:b-tocs-abap-btocs-ollama","kind":"art","label":"abap_btocs_ollama","ring":"independent","href":"/abap/artifacts/b-tocs-abap-btocs-ollama","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:b-tocs-pyapi4abap","kind":"art","label":"pyapi4abap","ring":"independent","href":"/abap/artifacts/b-tocs-pyapi4abap","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:b-tocs-scec","kind":"art","label":"scec","ring":"independent","href":"/btp/artifacts/b-tocs-scec","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:babamba2-abap-mcp-adt-powerup","kind":"art","label":"@mcp-abap-adt/core","ring":"independent","href":"/abap/artifacts/babamba2-abap-mcp-adt-powerup","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:babamba2","kind":"actor","label":"paek seunghyun","href":"/actors/babamba2","icon":"actor","initials":"PS","avatar":"/avatars/babamba2.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"actor:fr0ster","kind":"actor","label":"Oleksii Kyslytsia","href":"/actors/fr0ster","icon":"actor","initials":"OK","avatar":"/avatars/fr0ster.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:babamba2-superclaude-for-sap","kind":"art","label":"SuperClaude for SAP","ring":"independent","href":"/abap/artifacts/babamba2-superclaude-for-sap","icon":"skill","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:benjaminweisheit-abap-2-code-charta","kind":"art","label":"BenjaminWeisheit/ABAP-2-CODE-CHARTA","ring":"independent","href":"/abap/artifacts/benjaminweisheit-abap-2-code-charta","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:benjaminweisheit","kind":"actor","label":"Benjamin Weisheit","href":"/actors/benjaminweisheit","icon":"actor","initials":"BW","avatar":"/avatars/benjaminweisheit.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:beraadim-zcl-pdf","kind":"art","label":"zcl_pdf","ring":"independent","href":"/abap/artifacts/beraadim-zcl-pdf","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:beraadim","kind":"actor","label":"Bjørn Espen Raadim","href":"/actors/beraadim","icon":"actor","initials":"BER","avatar":"/avatars/beraadim.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:biberm-abapparallelizationservice","kind":"art","label":"ABAPParallelizationService","ring":"independent","href":"/abap/artifacts/biberm-abapparallelizationservice","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:biberm","kind":"actor","label":"Michael Biber","href":"/actors/biberm","icon":"actor","initials":"MB","avatar":"/avatars/biberm.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:bizhuka-aqo","kind":"art","label":"aqo","ring":"independent","href":"/abap/artifacts/bizhuka-aqo","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:bizhuka","kind":"actor","label":"Birzhan Moldabayev","href":"/actors/bizhuka","icon":"actor","initials":"BM","avatar":"/avatars/bizhuka.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:bizhuka-xtt","kind":"art","label":"XTT","ring":"independent","href":"/abap/artifacts/bizhuka-xtt","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:bluefunda-abap-odata-test","kind":"art","label":"abap-odata-test","ring":"independent","href":"/abap/artifacts/bluefunda-abap-odata-test","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:bluefunda","kind":"actor","label":"BlueFunda","href":"/actors/bluefunda","icon":"actor","initials":"B","ring":"independent","avatar":"/avatars/bluefunda.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:blumenkuebel-sap-dm-pod2-mcp-server","kind":"art","label":"sap-dm-pod2-mcp-server","ring":"independent","href":"/digital-manufacturing/artifacts/blumenkuebel-sap-dm-pod2-mcp-server","icon":"mcp-server","homeEco":"digital-manufacturing","ecos":["digital-manufacturing"],"homeEcos":["digital-manufacturing"]},{"id":"actor:blumenkuebel","kind":"actor","label":"Philipp Domschke","href":"/actors/blumenkuebel","icon":"actor","initials":"PD","avatar":"/avatars/blumenkuebel.png","ecos":["digital-manufacturing"],"homeEcos":["digital-manufacturing"],"homeEco":"digital-manufacturing"},{"id":"artifact:bothzoli-abap-ioc-container","kind":"art","label":"bothzoli/ABAP-IoC-Container","ring":"independent","href":"/abap/artifacts/bothzoli-abap-ioc-container","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:bothzoli","kind":"actor","label":"Zoltan Both","href":"/actors/bothzoli","icon":"actor","initials":"ZB","avatar":"/avatars/bothzoli.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:boy0korea-abap2json","kind":"art","label":"boy0korea/abap2json","ring":"independent","href":"/abap/artifacts/boy0korea-abap2json","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:boy0korea","kind":"actor","label":"Derby","href":"/actors/boy0korea","icon":"actor","initials":"D","avatar":"/avatars/boy0korea.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:boy0korea-abap2xlsx-helper","kind":"art","label":"boy0korea/ABAP2XLSX_HELPER","ring":"independent","href":"/abap/artifacts/boy0korea-abap2xlsx-helper","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:boy0korea-zfpm-tools","kind":"art","label":"ZFPM_TOOLS","ring":"independent","href":"/abap/artifacts/boy0korea-zfpm-tools","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:boy0korea-zwd-calendar-vh","kind":"art","label":"ZWD_CALENDAR_VH","ring":"independent","href":"/abap/artifacts/boy0korea-zwd-calendar-vh","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:boy0korea-zwd-code-scanner","kind":"art","label":"boy0korea/ZWD_CODE_SCANNER","ring":"independent","href":"/abap/artifacts/boy0korea-zwd-code-scanner","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:brandeis-consulting-abap-prc","kind":"art","label":"ABAP-PRC","ring":"independent","href":"/abap/artifacts/brandeis-consulting-abap-prc","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:brandeis-consulting","kind":"actor","label":"Brandeis Consulting","href":"/actors/brandeis-consulting","icon":"actor","initials":"BC","ring":"independent","avatar":"/avatars/brandeis-consulting.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:bryanmcain-zcode-scanner","kind":"art","label":"bryanmcain/zcode_scanner","ring":"independent","href":"/abap/artifacts/bryanmcain-zcode-scanner","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:bryanmcain","kind":"actor","label":"bryanmcain","href":"/actors/bryanmcain","icon":"actor","initials":"B","avatar":"/avatars/bryanmcain.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:btc-ag-featuretoggle","kind":"art","label":"Featuretoggle","ring":"independent","href":"/abap/artifacts/btc-ag-featuretoggle","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:btc-ag","kind":"actor","label":"BTC Business Technology Consulting AG","href":"/actors/btc-ag","icon":"actor","initials":"BBT","ring":"independent","avatar":"/avatars/btc-ag.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:btp-abap-environment","kind":"art","label":"SAP BTP ABAP environment","ring":"sap-official","href":"/btp/artifacts/btp-abap-environment","icon":"service","homeEco":"btp","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"artifact:btp-advanced-event-mesh","kind":"art","label":"SAP Integration Suite, advanced event mesh","ring":"sap-official","href":"/btp/artifacts/btp-advanced-event-mesh","icon":"service","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"artifact:btp-agentry","kind":"art","label":"Agentry","ring":"sap-official","href":"/btp/artifacts/btp-agentry","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-ai-core","kind":"art","label":"SAP AI Core","ring":"sap-official","href":"/btp/artifacts/btp-ai-core","icon":"service","homeEco":"btp","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"artifact:btp-ai-launchpad","kind":"art","label":"SAP AI Launchpad","ring":"sap-official","href":"/btp/artifacts/btp-ai-launchpad","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-alert-notification","kind":"art","label":"SAP Alert Notification service for SAP BTP","ring":"sap-official","href":"/btp/artifacts/btp-alert-notification","icon":"service","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"artifact:btp-analytics-cloud","kind":"art","label":"SAP Analytics Cloud","ring":"sap-official","href":"/btp/artifacts/btp-analytics-cloud","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-api-composition","kind":"art","label":"API Composition","ring":"sap-official","href":"/btp/artifacts/btp-api-composition","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-api-management","kind":"art","label":"API Management","ring":"sap-official","href":"/btp/artifacts/btp-api-management","icon":"service","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp"]},{"id":"artifact:btp-application-autoscaler","kind":"art","label":"Application Autoscaler","ring":"sap-official","href":"/btp/artifacts/btp-application-autoscaler","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-application-frontend","kind":"art","label":"SAP Application Frontend service","ring":"sap-official","href":"/btp/artifacts/btp-application-frontend","icon":"service","homeEco":"btp","ecos":["btp","cap","ui5"],"homeEcos":["btp"]},{"id":"artifact:btp-application-logging","kind":"art","label":"SAP Application Logging service for SAP BTP","ring":"sap-official","href":"/btp/artifacts/btp-application-logging","icon":"service","homeEco":"btp","ecos":["btp","cap","abap"],"homeEcos":["btp","abap","cap"]},{"id":"artifact:btp-application-vulnerability-report","kind":"art","label":"Application Vulnerability Report","ring":"sap-official","href":"/btp/artifacts/btp-application-vulnerability-report","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-ase","kind":"art","label":"SAP ASE Service","ring":"sap-official","href":"/btp/artifacts/btp-ase","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-audit-log","kind":"art","label":"SAP Audit Log service","ring":"sap-official","href":"/btp/artifacts/btp-audit-log","icon":"service","homeEco":"btp","ecos":["btp","cap","abap"],"homeEcos":["btp","abap","cap"]},{"id":"artifact:btp-authorization-and-trust-management","kind":"art","label":"SAP Authorization and Trust Management service","ring":"sap-official","href":"/btp/artifacts/btp-authorization-and-trust-management","icon":"service","homeEco":"btp","ecos":["btp","cap","abap","ui5","digital-manufacturing"],"homeEcos":["btp","abap","cap","ui5","digital-manufacturing"]},{"id":"artifact:btp-automation-pilot","kind":"art","label":"SAP Automation Pilot","ring":"sap-official","href":"/btp/artifacts/btp-automation-pilot","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-build-apps","kind":"art","label":"SAP Build Apps","ring":"sap-official","href":"/btp/artifacts/btp-build-apps","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-build-code","kind":"art","label":"SAP Build Code","ring":"sap-official","href":"/btp/artifacts/btp-build-code","icon":"service","homeEco":"btp","ecos":["btp","cap","ui5"],"homeEcos":["btp"]},{"id":"artifact:btp-build-process-automation","kind":"art","label":"SAP Build Process Automation","ring":"sap-official","href":"/btp/artifacts/btp-build-process-automation","icon":"service","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"artifact:btp-build-work-zone-advanced","kind":"art","label":"SAP Build Work Zone, advanced edition","ring":"sap-official","href":"/btp/artifacts/btp-build-work-zone-advanced","icon":"service","homeEco":"btp","ecos":["btp","cap","ui5"],"homeEcos":["btp"]},{"id":"artifact:btp-build-work-zone-standard","kind":"art","label":"SAP Build Work Zone, standard edition","ring":"sap-official","href":"/btp/artifacts/btp-build-work-zone-standard","icon":"service","homeEco":"btp","ecos":["btp","cap","ui5"],"homeEcos":["btp","cap"]},{"id":"artifact:btp-business-application-studio","kind":"art","label":"SAP Business Application Studio","ring":"sap-official","href":"/btp/artifacts/btp-business-application-studio","icon":"service","homeEco":"btp","ecos":["btp","abap","ui5","cap"],"homeEcos":["btp","abap","ui5","cap"]},{"id":"artifact:btp-business-data-cloud","kind":"art","label":"SAP Business Data Cloud","ring":"sap-official","href":"/btp/artifacts/btp-business-data-cloud","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-cloud-application-event-hub","kind":"art","label":"SAP Cloud Application Event Hub","ring":"sap-official","href":"/btp/artifacts/btp-cloud-application-event-hub","icon":"service","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"artifact:btp-cloud-foundry-runtime","kind":"art","label":"SAP BTP, Cloud Foundry Runtime","ring":"sap-official","href":"/btp/artifacts/btp-cloud-foundry-runtime","icon":"service","homeEco":"btp","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","abap","cap"]},{"id":"artifact:btp-cloud-identity-services","kind":"art","label":"Cloud Identity Services","ring":"sap-official","href":"/btp/artifacts/btp-cloud-identity-services","icon":"service","homeEco":"btp","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap","ui5"]},{"id":"artifact:btp-cloud-integration-automation","kind":"art","label":"Cloud Integration Automation","ring":"sap-official","href":"/btp/artifacts/btp-cloud-integration-automation","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-cloud-integration","kind":"art","label":"Cloud Integration","ring":"sap-official","href":"/btp/artifacts/btp-cloud-integration","icon":"service","homeEco":"btp","ecos":["btp","digital-manufacturing","ui5"],"homeEcos":["btp","digital-manufacturing"]},{"id":"artifact:btp-cloud-logging","kind":"art","label":"SAP Cloud Logging","ring":"sap-official","href":"/btp/artifacts/btp-cloud-logging","icon":"service","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"artifact:btp-cloud-management","kind":"art","label":"SAP Cloud Management Service for SAP BTP","ring":"sap-official","href":"/btp/artifacts/btp-cloud-management","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-cloud-portal","kind":"art","label":"SAP Cloud Portal Service","ring":"sap-official","href":"/btp/artifacts/btp-cloud-portal","icon":"service","homeEco":"btp","ecos":["btp","ui5","cap"],"homeEcos":["btp","cap"]},{"id":"artifact:btp-cloud-transport-management","kind":"art","label":"SAP Cloud Transport Management","ring":"sap-official","href":"/btp/artifacts/btp-cloud-transport-management","icon":"service","homeEco":"btp","ecos":["btp","abap"],"homeEcos":["btp"]},{"id":"artifact:btp-connectivity","kind":"art","label":"SAP Connectivity service","ring":"sap-official","href":"/btp/artifacts/btp-connectivity","icon":"service","homeEco":"btp","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","abap","cap","ui5"]},{"id":"artifact:btp-content-agent","kind":"art","label":"SAP Content Agent Service","ring":"sap-official","href":"/btp/artifacts/btp-content-agent","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-continuous-integration-and-delivery","kind":"art","label":"SAP Continuous Integration and Delivery","ring":"sap-official","href":"/btp/artifacts/btp-continuous-integration-and-delivery","icon":"service","homeEco":"btp","ecos":["btp","cap","ui5"],"homeEcos":["btp"]},{"id":"artifact:btp-credential-store","kind":"art","label":"SAP Credential Store","ring":"sap-official","href":"/btp/artifacts/btp-credential-store","icon":"service","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp"]},{"id":"artifact:btp-custom-domain","kind":"art","label":"SAP Custom Domain Service","ring":"sap-official","href":"/btp/artifacts/btp-custom-domain","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-customer-identity-and-access-management","kind":"art","label":"SAP Customer Identity and Access Management for B2C","ring":"sap-official","href":"/btp/artifacts/btp-customer-identity-and-access-management","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-data-attribute-recommendation","kind":"art","label":"Data Attribute Recommendation","ring":"sap-official","href":"/btp/artifacts/btp-data-attribute-recommendation","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-data-privacy-integration","kind":"art","label":"SAP Data Privacy Integration","ring":"sap-official","href":"/btp/artifacts/btp-data-privacy-integration","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-data-quality-management-location-data","kind":"art","label":"SAP Data Quality Management, microservices for location data","ring":"sap-official","href":"/btp/artifacts/btp-data-quality-management-location-data","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-data-retention-manager","kind":"art","label":"SAP Data Retention Manager","ring":"sap-official","href":"/btp/artifacts/btp-data-retention-manager","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-datasphere","kind":"art","label":"SAP Datasphere","ring":"sap-official","href":"/btp/artifacts/btp-datasphere","icon":"service","homeEco":"btp","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"artifact:btp-destination","kind":"art","label":"SAP Destination service","ring":"sap-official","href":"/btp/artifacts/btp-destination","icon":"service","homeEco":"btp","ecos":["btp","cap","abap","ui5","digital-manufacturing"],"homeEcos":["btp","abap","cap","ui5","digital-manufacturing"]},{"id":"artifact:btp-document-ai","kind":"art","label":"SAP Document AI","ring":"sap-official","href":"/btp/artifacts/btp-document-ai","icon":"service","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp"]},{"id":"artifact:btp-document-management-application","kind":"art","label":"SAP Document Management service, application option","ring":"sap-official","href":"/btp/artifacts/btp-document-management-application","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-document-management-integration","kind":"art","label":"SAP Document Management service, integration option","ring":"sap-official","href":"/btp/artifacts/btp-document-management-integration","icon":"service","homeEco":"btp","ecos":["btp","ui5","cap"],"homeEcos":["btp","cap"]},{"id":"artifact:btp-dynatrace-agent-activation","kind":"art","label":"Agent Activation for Dynatrace Service for SAP BTP","ring":"sap-official","href":"/btp/artifacts/btp-dynatrace-agent-activation","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-event-mesh","kind":"art","label":"Event Mesh","ring":"sap-official","href":"/btp/artifacts/btp-event-mesh","icon":"service","homeEco":"btp","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"artifact:btp-feature-flags","kind":"art","label":"SAP Feature Flags service","ring":"sap-official","href":"/btp/artifacts/btp-feature-flags","icon":"service","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp"]},{"id":"artifact:btp-forms-service-by-adobe","kind":"art","label":"SAP Forms Service by Adobe","ring":"sap-official","href":"/btp/artifacts/btp-forms-service-by-adobe","icon":"service","homeEco":"btp","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"artifact:btp-hana-cloud","kind":"art","label":"SAP HANA Cloud","ring":"sap-official","href":"/btp/artifacts/btp-hana-cloud","icon":"service","homeEco":"btp","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"artifact:btp-hana-service","kind":"art","label":"SAP HANA Service (SAP Regions) for SAP BTP","ring":"sap-official","href":"/btp/artifacts/btp-hana-service","icon":"service","homeEco":"btp","ecos":["btp","cap","ui5"],"homeEcos":["btp","cap"]},{"id":"artifact:btp-hana-spatial-services","kind":"art","label":"SAP HANA Spatial Services for SAP BTP","ring":"sap-official","href":"/btp/artifacts/btp-hana-spatial-services","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-health-data-services-for-fhir","kind":"art","label":"SAP Health Data Services for FHIR","ring":"sap-official","href":"/btp/artifacts/btp-health-data-services-for-fhir","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-html5-application-repository","kind":"art","label":"SAP HTML5 Application Repository service for SAP BTP","ring":"sap-official","href":"/btp/artifacts/btp-html5-application-repository","icon":"service","homeEco":"btp","ecos":["btp","cap","ui5","abap"],"homeEcos":["btp","cap","ui5","abap"]},{"id":"artifact:btp-identity-provisioning","kind":"art","label":"SAP Cloud Identity Services - Identity Provisioning","ring":"sap-official","href":"/btp/artifacts/btp-identity-provisioning","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-integration-advisor","kind":"art","label":"Integration Advisor","ring":"sap-official","href":"/btp/artifacts/btp-integration-advisor","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-integration-suite-event-mesh","kind":"art","label":"SAP Integration Suite, Event Mesh","ring":"sap-official","href":"/btp/artifacts/btp-integration-suite-event-mesh","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-integration-suite","kind":"art","label":"SAP Integration Suite","ring":"sap-official","href":"/btp/artifacts/btp-integration-suite","icon":"service","homeEco":"btp","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"artifact:btp-intelligent-situation-automation","kind":"art","label":"Intelligent Situation Automation","ring":"sap-official","href":"/btp/artifacts/btp-intelligent-situation-automation","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-job-scheduling","kind":"art","label":"SAP Job Scheduling service","ring":"sap-official","href":"/btp/artifacts/btp-job-scheduling","icon":"service","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"artifact:btp-keystore","kind":"art","label":"SAP Keystore Service","ring":"sap-official","href":"/btp/artifacts/btp-keystore","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-kyma-runtime","kind":"art","label":"SAP BTP, Kyma runtime","ring":"sap-official","href":"/btp/artifacts/btp-kyma-runtime","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-malware-scanning","kind":"art","label":"SAP Malware Scanning service","ring":"sap-official","href":"/btp/artifacts/btp-malware-scanning","icon":"service","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"artifact:btp-master-data-integration","kind":"art","label":"SAP Master Data Integration","ring":"sap-official","href":"/btp/artifacts/btp-master-data-integration","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-mobile-services","kind":"art","label":"SAP Mobile Services","ring":"sap-official","href":"/btp/artifacts/btp-mobile-services","icon":"service","homeEco":"btp","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"artifact:btp-monitoring","kind":"art","label":"SAP Monitoring Service for SAP BTP","ring":"sap-official","href":"/btp/artifacts/btp-monitoring","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-oauth","kind":"art","label":"OAuth 2.0 on SAP BTP","ring":"sap-official","href":"/btp/artifacts/btp-oauth","icon":"service","homeEco":"btp","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"artifact:btp-object-store","kind":"art","label":"Object Store on SAP BTP","ring":"sap-official","href":"/btp/artifacts/btp-object-store","icon":"service","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"artifact:btp-open-connectors","kind":"art","label":"Open Connectors","ring":"sap-official","href":"/btp/artifacts/btp-open-connectors","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-personal-data-manager","kind":"art","label":"SAP Personal Data Manager","ring":"sap-official","href":"/btp/artifacts/btp-personal-data-manager","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-personalized-recommendation","kind":"art","label":"Personalized Recommendation","ring":"sap-official","href":"/btp/artifacts/btp-personalized-recommendation","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-postgresql-hyperscaler","kind":"art","label":"PostgreSQL on SAP BTP, hyperscaler option","ring":"sap-official","href":"/btp/artifacts/btp-postgresql-hyperscaler","icon":"service","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"artifact:btp-print","kind":"art","label":"SAP Print service","ring":"sap-official","href":"/btp/artifacts/btp-print","icon":"service","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"artifact:btp-private-link-service","kind":"art","label":"SAP Private Link Service","ring":"sap-official","href":"/btp/artifacts/btp-private-link-service","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-redis","kind":"art","label":"Redis on SAP BTP, hyperscaler option","ring":"sap-official","href":"/btp/artifacts/btp-redis","icon":"service","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"artifact:btp-responsibility-management","kind":"art","label":"SAP Responsibility Management service","ring":"sap-official","href":"/btp/artifacts/btp-responsibility-management","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-saas-provisioning","kind":"art","label":"SAP Software-as-a-Service Provisioning service","ring":"sap-official","href":"/btp/artifacts/btp-saas-provisioning","icon":"service","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp"]},{"id":"artifact:btp-service-manager","kind":"art","label":"SAP Service Manager","ring":"sap-official","href":"/btp/artifacts/btp-service-manager","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-solution-lifecycle-management","kind":"art","label":"SAP Solution Lifecycle Management service for SAP BTP","ring":"sap-official","href":"/btp/artifacts/btp-solution-lifecycle-management","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-task-center","kind":"art","label":"SAP Task Center","ring":"sap-official","href":"/btp/artifacts/btp-task-center","icon":"service","homeEco":"btp","ecos":["btp","cap","ui5"],"homeEcos":["btp"]},{"id":"artifact:btp-trading-partner-management","kind":"art","label":"Trading Partner Management","ring":"sap-official","href":"/btp/artifacts/btp-trading-partner-management","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-translation-hub","kind":"art","label":"SAP Translation Hub","ring":"sap-official","href":"/btp/artifacts/btp-translation-hub","icon":"service","homeEco":"btp","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"artifact:btp-ui-flexibility","kind":"art","label":"UI flexibility service","ring":"sap-official","href":"/btp/artifacts/btp-ui-flexibility","icon":"service","homeEco":"btp","ecos":["btp","ui5"],"homeEcos":["btp"]},{"id":"artifact:btp-usage-data-management","kind":"art","label":"SAP Usage Data Management Service for SAP BTP","ring":"sap-official","href":"/btp/artifacts/btp-usage-data-management","icon":"service","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:btp-web-ide-full-stack","kind":"art","label":"SAP Web IDE Full-Stack","ring":"sap-official","href":"/btp/artifacts/btp-web-ide-full-stack","icon":"service","homeEco":"btp","ecos":["btp","ui5"],"homeEcos":["btp"]},{"id":"artifact:bunysae-abap-db-preparator","kind":"art","label":"abap_db_preparator","ring":"independent","href":"/abap/artifacts/bunysae-abap-db-preparator","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:bunysae","kind":"actor","label":"Bunyanuch Saengnet","href":"/actors/bunysae","icon":"actor","initials":"BS","avatar":"/avatars/bunysae.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:cap-attachments-plus","kind":"art","label":"cap-attachments-plus","ring":"independent","href":"/cap/artifacts/cap-attachments-plus","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-handler-generator","kind":"art","label":"@cap-handler/generator","ring":"independent","href":"/cap/artifacts/cap-handler-generator","icon":"generator","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-adapter-agent","kind":"art","label":"com.sap.cds:cds-adapter-agent","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-adapter-agent","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-adapter-mcp","kind":"art","label":"com.sap.cds:cds-adapter-mcp","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-adapter-mcp","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-adapter-odata-v2","kind":"art","label":"com.sap.cds:cds-adapter-odata-v2","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-adapter-odata-v2","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-adapter-odata-v4","kind":"art","label":"com.sap.cds:cds-adapter-odata-v4","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-adapter-odata-v4","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-ai","kind":"art","label":"cap-java/cds-ai","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-ai","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:cap-java","kind":"actor","label":"CAP","href":"/actors/cap-java","icon":"actor","initials":"C","ring":"independent","avatar":"/avatars/cap-java.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:cap-java-cds-feature-advanced-event-mesh","kind":"art","label":"com.sap.cds:cds-feature-advanced-event-mesh","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-advanced-event-mesh","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-attachments","kind":"art","label":"com.sap.cds:cds-feature-attachments","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-attachments","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-auditlog-ng","kind":"art","label":"com.sap.cds:cds-feature-auditlog-ng","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-auditlog-ng","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-auditlog-v2","kind":"art","label":"com.sap.cds:cds-feature-auditlog-v2","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-auditlog-v2","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-change-tracking","kind":"art","label":"com.sap.cds:cds-feature-change-tracking","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-change-tracking","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-cloudfoundry","kind":"art","label":"com.sap.cds:cds-feature-cloudfoundry","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-cloudfoundry","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-console","kind":"art","label":"com.sap.cds:cds-feature-console","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-console","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-dev-dashboard","kind":"art","label":"com.sap.cds:cds-feature-dev-dashboard","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-dev-dashboard","icon":"app","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-enterprise-messaging","kind":"art","label":"com.sap.cds:cds-feature-enterprise-messaging","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-enterprise-messaging","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-event-hub","kind":"art","label":"com.sap.cds:cds-feature-event-hub","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-event-hub","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-flow","kind":"art","label":"com.sap.cds:cds-feature-flow","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-flow","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-hana","kind":"art","label":"com.sap.cds:cds-feature-hana","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-hana","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-identity","kind":"art","label":"com.sap.cds:cds-feature-identity","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-identity","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-jdbc","kind":"art","label":"com.sap.cds:cds-feature-jdbc","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-jdbc","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-k8s","kind":"art","label":"com.sap.cds:cds-feature-k8s","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-k8s","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-kafka","kind":"art","label":"com.sap.cds:cds-feature-kafka","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-kafka","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-mt","kind":"art","label":"com.sap.cds:cds-feature-mt","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-mt","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-n8n","kind":"art","label":"com.sap.cds:cds-feature-n8n","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-n8n","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-notifications","kind":"art","label":"com.sap.cds:cds-feature-notifications","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-notifications","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-ord","kind":"art","label":"com.sap.cds:cds-feature-ord","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-ord","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-postgresql","kind":"art","label":"com.sap.cds:cds-feature-postgresql","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-postgresql","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-redis","kind":"art","label":"com.sap.cds:cds-feature-redis","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-redis","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-remote-odata","kind":"art","label":"com.sap.cds:cds-feature-remote-odata","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-remote-odata","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-feature-xsuaa","kind":"art","label":"com.sap.cds:cds-feature-xsuaa","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-feature-xsuaa","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-integration-cloud-sdk","kind":"art","label":"com.sap.cds:cds-integration-cloud-sdk","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-integration-cloud-sdk","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-maven-plugin","kind":"art","label":"com.sap.cds:cds-maven-plugin","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-maven-plugin","icon":"build-tool","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-services-archetype","kind":"art","label":"com.sap.cds:cds-services-archetype","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-services-archetype","icon":"generator","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-cds-services-bom","kind":"art","label":"com.sap.cds:cds-services-bom","ring":"sap-official","href":"/cap/artifacts/cap-java-cds-services-bom","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-java-sdm","kind":"art","label":"com.sap.cds:sdm","ring":"sap-official","href":"/cap/artifacts/cap-java-sdm","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-advanced-event-mesh","kind":"art","label":"@cap-js/advanced-event-mesh","ring":"sap-official","href":"/cap/artifacts/cap-js-advanced-event-mesh","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:cap-js","kind":"actor","label":"SAP Cloud Application Programming Model","href":"/actors/cap-js","icon":"actor","initials":"SCA","ring":"sap-official","avatar":"/avatars/cap-js.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:cap-js-agents","kind":"art","label":"@cap-js/agents","ring":"sap-official","href":"/cap/artifacts/cap-js-agents","icon":"cds-plugin","homeEco":"cap","ecos":["cap","ui5","abap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-ai","kind":"art","label":"@cap-js/ai","ring":"sap-official","href":"/cap/artifacts/cap-js-ai","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-asyncapi","kind":"art","label":"@cap-js/asyncapi","ring":"sap-official","href":"/cap/artifacts/cap-js-asyncapi","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-attachments","kind":"art","label":"@cap-js/attachments","ring":"sap-official","href":"/cap/artifacts/cap-js-attachments","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-audit-logging","kind":"art","label":"@cap-js/audit-logging","ring":"sap-official","href":"/cap/artifacts/cap-js-audit-logging","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-cap-operator-plugin","kind":"art","label":"@cap-js/cap-operator-plugin","ring":"sap-official","href":"/cap/artifacts/cap-js-cap-operator-plugin","icon":"generator","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-cds-dbs","kind":"art","label":"@cap-js/cds-dbs","ring":"sap-official","href":"/cap/artifacts/cap-js-cds-dbs","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-cds-federation-synonyms","kind":"art","label":"cds-federation-synonyms","ring":"sap-official","href":"/cap/artifacts/cap-js-cds-federation-synonyms","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-cds-intellij","kind":"art","label":"cds-intellij","ring":"sap-official","href":"/cap/artifacts/cap-js-cds-intellij","icon":"ide-extension","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-cds-test","kind":"art","label":"@cap-js/cds-test","ring":"sap-official","href":"/cap/artifacts/cap-js-cds-test","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-cds-typer","kind":"art","label":"@cap-js/cds-typer","ring":"sap-official","href":"/cap/artifacts/cap-js-cds-typer","icon":"build-tool","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-cds-types","kind":"art","label":"@cap-js/cds-types","ring":"sap-official","href":"/cap/artifacts/cap-js-cds-types","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-cf-setup","kind":"art","label":"cf-setup","ring":"sap-official","href":"/cap/artifacts/cap-js-cf-setup","icon":"build-tool","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-change-tracking","kind":"art","label":"@cap-js/change-tracking","ring":"sap-official","href":"/cap/artifacts/cap-js-change-tracking","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-community-business-metrics","kind":"art","label":"@cap-js-community/business-metrics","ring":"community-org","href":"/cap/artifacts/cap-js-community-business-metrics","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:cap-js-community","kind":"actor","label":"cap-js-community","href":"/actors/cap-js-community","icon":"actor","initials":"CJC","ring":"community-org","avatar":"/avatars/cap-js-community.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:cap-js-community-cds-cucumber","kind":"art","label":"cds-cucumber","ring":"community-org","href":"/cap/artifacts/cap-js-community-cds-cucumber","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-community-common","kind":"art","label":"@cap-js-community/common","ring":"community-org","href":"/cap/artifacts/cap-js-community-common","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:oklemenz2","kind":"actor","label":"Oliver Klemenz","href":"/actors/oklemenz2","icon":"actor","initials":"OK","avatar":"/avatars/oklemenz2.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:cap-js-community-event-queue","kind":"art","label":"@cap-js-community/event-queue","ring":"community-org","href":"/cap/artifacts/cap-js-community-event-queue","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-community-feature-toggle-library","kind":"art","label":"@cap-js-community/feature-toggle-library","ring":"community-org","href":"/cap/artifacts/cap-js-community-feature-toggle-library","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-community-mtx-tool","kind":"art","label":"@cap-js-community/mtx-tool","ring":"community-org","href":"/cap/artifacts/cap-js-community-mtx-tool","icon":"cli","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-community-odata-v2-adapter","kind":"art","label":"@cap-js-community/odata-v2-adapter","ring":"community-org","href":"/cap/artifacts/cap-js-community-odata-v2-adapter","icon":"cds-plugin","homeEco":"cap","ecos":["cap","ui5"],"homeEcos":["cap"]},{"id":"artifact:cap-js-community-repository-template","kind":"art","label":"repository-template","ring":"community-org","href":"/cap/artifacts/cap-js-community-repository-template","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-community-sap-afc-sdk","kind":"art","label":"@cap-js-community/sap-afc-sdk","ring":"community-org","href":"/cap/artifacts/cap-js-community-sap-afc-sdk","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-community-websocket","kind":"art","label":"@cap-js-community/websocket","ring":"community-org","href":"/cap/artifacts/cap-js-community-websocket","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-console","kind":"art","label":"@cap-js/console","ring":"sap-official","href":"/cap/artifacts/cap-js-console","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-data-inspector","kind":"art","label":"@cap-js/data-inspector","ring":"sap-official","href":"/cap/artifacts/cap-js-data-inspector","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-data-privacy","kind":"art","label":"@cap-js/data-privacy","ring":"sap-official","href":"/cap/artifacts/cap-js-data-privacy","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-db-service","kind":"art","label":"@cap-js/db-service","ring":"sap-official","href":"/cap/artifacts/cap-js-db-service","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-event-broker","kind":"art","label":"@cap-js/event-broker","ring":"sap-official","href":"/cap/artifacts/cap-js-event-broker","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-graphql","kind":"art","label":"@cap-js/graphql","ring":"sap-official","href":"/cap/artifacts/cap-js-graphql","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-hana","kind":"art","label":"@cap-js/hana","ring":"sap-official","href":"/cap/artifacts/cap-js-hana","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-mcp-server","kind":"art","label":"@cap-js/mcp-server","ring":"sap-official","href":"/cap/artifacts/cap-js-mcp-server","icon":"mcp-server","homeEco":"cap","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp"]},{"id":"artifact:cap-js-mcp","kind":"art","label":"@cap-js/mcp","ring":"sap-official","href":"/cap/artifacts/cap-js-mcp","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-n8n","kind":"art","label":"@cap-js/n8n","ring":"sap-official","href":"/cap/artifacts/cap-js-n8n","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-notifications","kind":"art","label":"@cap-js/notifications","ring":"sap-official","href":"/cap/artifacts/cap-js-notifications","icon":"cds-plugin","homeEco":"cap","ecos":["cap","ui5","abap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-openapi","kind":"art","label":"@cap-js/openapi","ring":"sap-official","href":"/cap/artifacts/cap-js-openapi","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-ord","kind":"art","label":"@cap-js/ord","ring":"sap-official","href":"/cap/artifacts/cap-js-ord","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-postgres","kind":"art","label":"@cap-js/postgres","ring":"sap-official","href":"/cap/artifacts/cap-js-postgres","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-print","kind":"art","label":"@cap-js/print","ring":"sap-official","href":"/cap/artifacts/cap-js-print","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-process","kind":"art","label":"@cap-js/process","ring":"sap-official","href":"/cap/artifacts/cap-js-process","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-sdm","kind":"art","label":"@cap-js/sdm","ring":"sap-official","href":"/cap/artifacts/cap-js-sdm","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-js-sqlite","kind":"art","label":"@cap-js/sqlite","ring":"sap-official","href":"/cap/artifacts/cap-js-sqlite","icon":"cds-plugin","homeEco":"cap","ecos":["cap","ui5"],"homeEcos":["cap"]},{"id":"artifact:cap-js-telemetry","kind":"art","label":"@cap-js/telemetry","ring":"sap-official","href":"/cap/artifacts/cap-js-telemetry","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-llm-plugin","kind":"art","label":"cap-llm-plugin","ring":"independent","href":"/cap/artifacts/cap-llm-plugin","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-postgres-btp-connectivity","kind":"art","label":"cap-postgres-btp-connectivity","ring":"independent","href":"/cap/artifacts/cap-postgres-btp-connectivity","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cap-rp-notifications","kind":"art","label":"@cap-rp/notifications","ring":"independent","href":"/cap/artifacts/cap-rp-notifications","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:rohtash","kind":"actor","label":"Rohtash Poonia","href":"/actors/rohtash","icon":"actor","initials":"RP","avatar":"/avatars/rohtash.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:capire-bookshop-java","kind":"art","label":"bookshop-java","ring":"sap-official","href":"/cap/artifacts/capire-bookshop-java","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:capire","kind":"actor","label":"Capire Docs & Samples","href":"/actors/capire","icon":"actor","initials":"CD&","ring":"sap-official","avatar":"/avatars/capire.png","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"artifact:capire-bookshop","kind":"art","label":"capire/bookshop","ring":"sap-official","href":"/cap/artifacts/capire-bookshop","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:capire-bookstore-java","kind":"art","label":"bookstore-java","ring":"sap-official","href":"/cap/artifacts/capire-bookstore-java","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:capire-bookstore","kind":"art","label":"capire/bookstore","ring":"sap-official","href":"/cap/artifacts/capire-bookstore","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:capire-common","kind":"art","label":"common","ring":"sap-official","href":"/cap/artifacts/capire-common","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:capire-data-viewer","kind":"art","label":"@capire/data-viewer","ring":"sap-official","href":"/cap/artifacts/capire-data-viewer","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:capire-docs","kind":"art","label":"capire/docs","ring":"sap-official","href":"/cap/artifacts/capire-docs","icon":"doc-source","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:capire-incidents-app","kind":"art","label":"capire/incidents-app","ring":"sap-official","href":"/cap/artifacts/capire-incidents-app","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:capire-orders-java","kind":"art","label":"orders-java","ring":"sap-official","href":"/cap/artifacts/capire-orders-java","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:capire-orders","kind":"art","label":"orders","ring":"sap-official","href":"/cap/artifacts/capire-orders","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:capire-reviews-java","kind":"art","label":"reviews-java","ring":"sap-official","href":"/cap/artifacts/capire-reviews-java","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:capire-reviews","kind":"art","label":"reviews","ring":"sap-official","href":"/cap/artifacts/capire-reviews","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:capire-s4","kind":"art","label":"capire/s4","ring":"sap-official","href":"/cap/artifacts/capire-s4","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:capire-shared-db-java","kind":"art","label":"shared-db-java","ring":"sap-official","href":"/cap/artifacts/capire-shared-db-java","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:capire-shared-db","kind":"art","label":"shared-db","ring":"sap-official","href":"/cap/artifacts/capire-shared-db","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:capire-skills","kind":"art","label":"capire/skills","ring":"sap-official","href":"/cap/artifacts/capire-skills","icon":"skill","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:capire-xflights-java","kind":"art","label":"xflights-java","ring":"sap-official","href":"/cap/artifacts/capire-xflights-java","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:capire-xflights","kind":"art","label":"xflights","ring":"sap-official","href":"/cap/artifacts/capire-xflights","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:capire-xtravels-java","kind":"art","label":"xtravels-java","ring":"sap-official","href":"/cap/artifacts/capire-xtravels-java","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:capire-xtravels","kind":"art","label":"xtravels","ring":"sap-official","href":"/cap/artifacts/capire-xtravels","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:carlosorozco88-ui5-tools","kind":"art","label":"UI5 Tools","ring":"independent","href":"/ui5/artifacts/carlosorozco88-ui5-tools","icon":"ide-extension","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:carlosorozco88","kind":"actor","label":"Carlos Orozco","href":"/actors/carlosorozco88","icon":"actor","initials":"CO","avatar":"/avatars/carlosorozco88.png","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"artifact:catafeidi-abap-transport-review","kind":"art","label":"abap-transport-review","ring":"independent","href":"/abap/artifacts/catafeidi-abap-transport-review","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:catafeidi","kind":"actor","label":"catafeidi","href":"/actors/catafeidi","icon":"actor","initials":"C","avatar":"/avatars/catafeidi.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:cbs-consulting-cds-eslint","kind":"art","label":"@cbs-consulting/cds-eslint","ring":"independent","href":"/cap/artifacts/cbs-consulting-cds-eslint","icon":"build-tool","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cbs-consulting-tools","kind":"art","label":"@cbs-consulting/tools","ring":"independent","href":"/cap/artifacts/cbs-consulting-tools","icon":"build-tool","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cch-engineering-sap-cloud-integration-pipeline-concept-skill","kind":"art","label":"sap-cloud-integration-pipeline-assistant","ring":"independent","href":"/btp/artifacts/cch-engineering-sap-cloud-integration-pipeline-concept-skill","icon":"skill","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"actor:cch-engineering","kind":"actor","label":"cch-engineering","href":"/actors/cch-engineering","icon":"actor","initials":"CE","avatar":"/avatars/cch-engineering.png","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"artifact:cds-caching","kind":"art","label":"cds-caching","ring":"independent","href":"/cap/artifacts/cds-caching","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:mike-zaschka","kind":"actor","label":"Mike Zaschka","href":"/actors/mike-zaschka","icon":"actor","initials":"MZ","ring":"independent","avatar":"/avatars/mike-zaschka.png","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"artifact:cds-error-outbox","kind":"art","label":"cds-error-outbox","ring":"independent","href":"/cap/artifacts/cds-error-outbox","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cds-kafka","kind":"art","label":"cds-kafka","ring":"independent","href":"/cap/artifacts/cds-kafka","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cds-mongodb","kind":"art","label":"cds-mongodb","ring":"independent","href":"/cap/artifacts/cds-mongodb","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cds-pgroll-postgres","kind":"art","label":"@cds-pgroll/postgres","ring":"independent","href":"/cap/artifacts/cds-pgroll-postgres","icon":"cli","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:medelkouch98","kind":"actor","label":"Medelkouch98","href":"/actors/medelkouch98","icon":"actor","initials":"M","avatar":"/avatars/medelkouch98.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:cdse","kind":"art","label":"cdse","ring":"independent","href":"/cap/artifacts/cdse","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:jcailan","kind":"actor","label":"Jhodel Cailan","href":"/actors/jcailan","icon":"actor","initials":"JC","avatar":"/avatars/jcailan.png","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"artifact:cdsmbt01","kind":"art","label":"cdsmbt01","ring":"independent","href":"/cap/artifacts/cdsmbt01","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:cesar-sap-abap-fm-json","kind":"art","label":"abap_fm_json","ring":"independent","href":"/abap/artifacts/cesar-sap-abap-fm-json","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:cesar-sap","kind":"actor","label":"Cesar Martin","href":"/actors/cesar-sap","icon":"actor","initials":"CM","avatar":"/avatars/cesar-sap.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:cesar-sap-abap-kafka-rest-proxy","kind":"art","label":"cesar-sap/abap_kafka_rest_proxy","ring":"independent","href":"/abap/artifacts/cesar-sap-abap-kafka-rest-proxy","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:chandrashekhar-mahajan-abap-mcp-server","kind":"art","label":"chandrashekhar-mahajan/abap-mcp-server","ring":"independent","href":"/abap/artifacts/chandrashekhar-mahajan-abap-mcp-server","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:chgeo-cds-swagger-ui-express","kind":"art","label":"cds-swagger-ui-express","ring":"independent","href":"/cap/artifacts/chgeo-cds-swagger-ui-express","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:chgeo","kind":"actor","label":"Christian Georgi","href":"/actors/chgeo","icon":"actor","initials":"CG","ring":"sap-official","avatar":"/avatars/chgeo.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:christianguenter2-abap-deepl-client","kind":"art","label":"ABAP_DeepL_client","ring":"independent","href":"/abap/artifacts/christianguenter2-abap-deepl-client","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:christianguenter2","kind":"actor","label":"Christian Günter","href":"/actors/christianguenter2","icon":"actor","initials":"CG","avatar":"/avatars/christianguenter2.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:chuckberrry-cds-event-monitoring","kind":"art","label":"cds-event-monitoring","ring":"independent","href":"/cap/artifacts/chuckberrry-cds-event-monitoring","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:chuckberrry","kind":"actor","label":"Armin Hatting","href":"/actors/chuckberrry","icon":"actor","initials":"AH","avatar":"/avatars/chuckberrry.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:clementringot-lisa","kind":"art","label":"LISA","ring":"independent","href":"/abap/artifacts/clementringot-lisa","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:clementringot","kind":"actor","label":"Clément Ringot","href":"/actors/clementringot","icon":"actor","initials":"CR","avatar":"/avatars/clementringot.png","ecos":["abap","btp"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:clementringot-rosa","kind":"art","label":"ROSA","ring":"independent","href":"/abap/artifacts/clementringot-rosa","icon":"mcp-server","homeEco":"abap","ecos":["abap","btp"],"homeEcos":["abap"]},{"id":"artifact:cogniac-sap-pod-extension","kind":"art","label":"Cogniac SAP DM POD 2.0 Extension","ring":"independent","href":"/digital-manufacturing/artifacts/cogniac-sap-pod-extension","icon":"package","homeEco":"digital-manufacturing","ecos":["digital-manufacturing"],"homeEcos":["digital-manufacturing"]},{"id":"actor:cogniac","kind":"actor","label":"Cogniac","href":"/actors/cogniac","icon":"actor","initials":"C","ring":"independent","avatar":"/avatars/cogniac.png","ecos":["digital-manufacturing"],"homeEcos":["digital-manufacturing"],"homeEco":"digital-manufacturing"},{"id":"artifact:concircle-i18n-ai-translator","kind":"art","label":"@concircle/i18n-ai-translator","ring":"independent","href":"/ui5/artifacts/concircle-i18n-ai-translator","icon":"cli","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:concircle","kind":"actor","label":"Concircle","href":"/actors/concircle","icon":"actor","initials":"C","ring":"independent","avatar":"/avatars/concircle.png","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"actor:hkaintz","kind":"actor","label":"Herbert Kaintz","href":"/actors/hkaintz","icon":"actor","initials":"HK","avatar":"/avatars/hkaintz.png","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"artifact:consetto-calmcp","kind":"art","label":"calmcp","ring":"independent","href":"/btp/artifacts/consetto-calmcp","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"actor:consetto","kind":"actor","label":"Consetto","href":"/actors/consetto","icon":"actor","initials":"C","ring":"independent","avatar":"/avatars/consetto.png","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"actor:michaelconsetto","kind":"actor","label":"Michael Scharf","href":"/actors/michaelconsetto","icon":"actor","initials":"MS","avatar":"/avatars/michaelconsetto.png","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"artifact:consetto-cloudalmlink","kind":"art","label":"Cloud ALM Link for ADT","ring":"independent","href":"/abap/artifacts/consetto-cloudalmlink","icon":"ide-extension","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:coreline-zddic-finder","kind":"art","label":"coreline/ZDDIC_FINDER","ring":"independent","href":"/abap/artifacts/coreline-zddic-finder","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:coreline","kind":"actor","label":"coreline","href":"/actors/coreline","icon":"actor","initials":"C","avatar":"/avatars/coreline.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:coreline-zuml-diagram","kind":"art","label":"ZUML_DIAGRAM","ring":"independent","href":"/abap/artifacts/coreline-zuml-diagram","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:costinggeek-sap-mcp","kind":"art","label":"CostingGeek/sap-mcp","ring":"independent","href":"/btp/artifacts/costinggeek-sap-mcp","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"actor:costinggeek","kind":"actor","label":"CostingGeek","href":"/actors/costinggeek","icon":"actor","initials":"C","avatar":"/avatars/costinggeek.png","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"artifact:coveles-claude-abap-dev","kind":"art","label":"claude-abap-dev","ring":"independent","href":"/abap/artifacts/coveles-claude-abap-dev","icon":"skill","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:coveles","kind":"actor","label":"CoVeles","href":"/actors/coveles","icon":"actor","initials":"C","avatar":"/avatars/coveles.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:dankromp-skilloverflow","kind":"art","label":"DanKromp/skillOverflow","ring":"independent","href":"/cap/artifacts/dankromp-skilloverflow","icon":"skill","homeEco":"cap","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap"]},{"id":"actor:dankromp","kind":"actor","label":"DanKromp","href":"/actors/dankromp","icon":"actor","initials":"D","avatar":"/avatars/dankromp.png","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:dassianinc-dassian-adt","kind":"art","label":"dassian-adt","ring":"independent","href":"/abap/artifacts/dassianinc-dassian-adt","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:dassianinc","kind":"actor","label":"Dassian Inc.","href":"/actors/dassianinc","icon":"actor","initials":"DI","ring":"independent","avatar":"/avatars/dassianinc.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:datazoode-erpl-adt","kind":"art","label":"erpl-adt","ring":"independent","href":"/abap/artifacts/datazoode-erpl-adt","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:datazoode","kind":"actor","label":"DataZoo GmbH","href":"/actors/datazoode","icon":"actor","initials":"DG","ring":"independent","avatar":"/avatars/datazoode.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:datazoode-erpl-node-rfc","kind":"art","label":"erpl-node-rfc","ring":"independent","href":"/abap/artifacts/datazoode-erpl-node-rfc","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:datazoode-erpl","kind":"art","label":"ERPL","ring":"independent","href":"/abap/artifacts/datazoode-erpl","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:derekvincent-mcp-sap-focusedrun","kind":"art","label":"mcp-sap-focusedrun","ring":"independent","href":"/btp/artifacts/derekvincent-mcp-sap-focusedrun","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"actor:derekvincent","kind":"actor","label":"Derek Vincent","href":"/actors/derekvincent","icon":"actor","initials":"DV","avatar":"/avatars/derekvincent.png","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"artifact:dergutewolf-abap-translation-hub","kind":"art","label":"ABAP_TRANSLATION_HUB","ring":"independent","href":"/abap/artifacts/dergutewolf-abap-translation-hub","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:dergutewolf","kind":"actor","label":"DerGuteWolf","href":"/actors/dergutewolf","icon":"actor","initials":"D","avatar":"/avatars/dergutewolf.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:devepos-abap-call-hierarchy-ui","kind":"art","label":"ABAP Call Hierarchy","ring":"independent","href":"/abap/artifacts/devepos-abap-call-hierarchy-ui","icon":"ide-extension","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:devepos","kind":"actor","label":"DevEpos","href":"/actors/devepos","icon":"actor","initials":"D","ring":"independent","avatar":"/avatars/devepos.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"actor:stockbal","kind":"actor","label":"Ludwig Stockbauer-Muhr","href":"/actors/stockbal","icon":"actor","initials":"LSM","avatar":"/avatars/stockbal.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:devepos-abap-call-hierarchy","kind":"art","label":"abap-call-hierarchy","ring":"independent","href":"/abap/artifacts/devepos-abap-call-hierarchy","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:devepos-abap-code-search-tools","kind":"art","label":"abap-code-search-tools","ring":"independent","href":"/abap/artifacts/devepos-abap-code-search-tools","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:devepos-abap-code-search-ui","kind":"art","label":"ABAP Code Search","ring":"independent","href":"/abap/artifacts/devepos-abap-code-search-ui","icon":"ide-extension","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:devepos-abap-db-browser","kind":"art","label":"abap-db-browser","ring":"independent","href":"/abap/artifacts/devepos-abap-db-browser","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:devepos-abap-search-tools-ui","kind":"art","label":"ABAP Search and Analysis Tools","ring":"independent","href":"/abap/artifacts/devepos-abap-search-tools-ui","icon":"ide-extension","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:devepos-abap-search-tools","kind":"art","label":"abap-search-tools","ring":"independent","href":"/abap/artifacts/devepos-abap-search-tools","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:devepos-abap-tags-backend","kind":"art","label":"abap-tags-backend","ring":"independent","href":"/abap/artifacts/devepos-abap-tags-backend","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:devepos-abap-tags-ui","kind":"art","label":"ABAP Tags","ring":"independent","href":"/abap/artifacts/devepos-abap-tags-ui","icon":"ide-extension","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:devepos-abap-ui-toolbox","kind":"art","label":"abap-ui-toolbox","ring":"independent","href":"/abap/artifacts/devepos-abap-ui-toolbox","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:devepos-eclipsadt-o-mat","kind":"art","label":"eclipsADT-o-mat","ring":"independent","href":"/abap/artifacts/devepos-eclipsadt-o-mat","icon":"cli","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:dnic-dev-bw-modeling-mcp","kind":"art","label":"bw-modeling-mcp","ring":"independent","href":"/btp/artifacts/dnic-dev-bw-modeling-mcp","icon":"mcp-server","homeEco":"btp","ecos":["btp","abap"],"homeEcos":["btp"]},{"id":"actor:dnic-dev","kind":"actor","label":"dnic-dev","href":"/actors/dnic-dev","icon":"actor","initials":"DD","avatar":"/avatars/dnic-dev.png","ecos":["btp","abap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"artifact:dominikpanzer-cacamber-bdd-for-abap","kind":"art","label":"cacamber-BDD-for-ABAP","ring":"independent","href":"/abap/artifacts/dominikpanzer-cacamber-bdd-for-abap","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:dominikpanzer","kind":"actor","label":"Dominik Panzer","href":"/actors/dominikpanzer","icon":"actor","initials":"DP","avatar":"/avatars/dominikpanzer.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:dominikpanzer-result-for-abap","kind":"art","label":"RESULT-for-ABAP","ring":"independent","href":"/abap/artifacts/dominikpanzer-result-for-abap","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:dongitran-sapbruno","kind":"art","label":"sapbruno","ring":"independent","href":"/cap/artifacts/dongitran-sapbruno","icon":"cli","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:dong-tran","kind":"actor","label":"Đông Trần","href":"/actors/dong-tran","icon":"actor","initials":"ĐT","ring":"independent","avatar":"/avatars/dong-tran.png","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"artifact:drydumbhead-easyhtmlemail","kind":"art","label":"DryDumbHead/easyHtmlEmail","ring":"independent","href":"/abap/artifacts/drydumbhead-easyhtmlemail","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:drydumbhead","kind":"actor","label":"NitinKumar Gupta","href":"/actors/drydumbhead","icon":"actor","initials":"NG","avatar":"/avatars/drydumbhead.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:dxfrontier-cds-ts-dispatcher","kind":"art","label":"@dxfrontier/cds-ts-dispatcher","ring":"independent","href":"/cap/artifacts/dxfrontier-cds-ts-dispatcher","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:dxfrontier","kind":"actor","label":"dx frontier GmbH","href":"/actors/dxfrontier","icon":"actor","initials":"DFG","ring":"independent","avatar":"/avatars/dxfrontier.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:dxfrontier-cds-ts-repository","kind":"art","label":"@dxfrontier/cds-ts-repository","ring":"independent","href":"/cap/artifacts/dxfrontier-cds-ts-repository","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:emenowicz-sap-commerce-skill","kind":"art","label":"sap-commerce-skill","ring":"independent","href":"/commerce/artifacts/emenowicz-sap-commerce-skill","icon":"skill","homeEco":"commerce","ecos":["commerce"],"homeEcos":["commerce"]},{"id":"actor:emenowicz","kind":"actor","label":"Dawid Michałowicz","href":"/actors/emenowicz","icon":"actor","initials":"DM","avatar":"/avatars/emenowicz.png","ecos":["commerce"],"homeEcos":["commerce"],"homeEco":"commerce"},{"id":"artifact:endresshauser-infoserve-abap-utesthelp","kind":"art","label":"abap-utesthelp","ring":"independent","href":"/abap/artifacts/endresshauser-infoserve-abap-utesthelp","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:endresshauser-infoserve","kind":"actor","label":"Endress+Hauser InfoServe GmbH+Co. KG","href":"/actors/endresshauser-infoserve","icon":"actor","initials":"EIG","ring":"independent","avatar":"/avatars/endresshauser-infoserve.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:erhan-epod-adt-mcp-server","kind":"art","label":"EPOD ADT MCP Server","ring":"independent","href":"/abap/artifacts/erhan-epod-adt-mcp-server","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:etosin-arc-draw","kind":"art","label":"ARC-DRAW","ring":"independent","href":"/btp/artifacts/etosin-arc-draw","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"actor:etosin","kind":"actor","label":"Emerson Tosin","href":"/actors/etosin","icon":"actor","initials":"ET","ring":"independent","avatar":"/avatars/etosin.png","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"artifact:expertum-cap-email-plugin","kind":"art","label":"@expertum/cap-email-plugin","ring":"independent","href":"/cap/artifacts/expertum-cap-email-plugin","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:expertum-net","kind":"actor","label":"Expertum","href":"/actors/expertum-net","icon":"actor","initials":"E","ring":"independent","avatar":"/avatars/expertum-net.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"actor:stijnme","kind":"actor","label":"Stijn Mertens","href":"/actors/stijnme","icon":"actor","initials":"SM","avatar":"/avatars/stijnme.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:eyupbaycol-cap-toolkit","kind":"art","label":"cap-toolkit","ring":"independent","href":"/cap/artifacts/eyupbaycol-cap-toolkit","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:eyupbaycol","kind":"actor","label":"Eyüp Bayçöl","href":"/actors/eyupbaycol","icon":"actor","initials":"EB","avatar":"/avatars/eyupbaycol.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:f-wer-zarc1-extension-forms","kind":"art","label":"ZARC1_EXTENSION_FORMS","ring":"independent","href":"/abap/artifacts/f-wer-zarc1-extension-forms","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:f-wer","kind":"actor","label":"F-Wer","href":"/actors/f-wer","icon":"actor","initials":"FW","avatar":"/avatars/f-wer.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:fabianlupa-abap-log","kind":"art","label":"abap-log","ring":"independent","href":"/abap/artifacts/fabianlupa-abap-log","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:fabianlupa","kind":"actor","label":"Fabian Lupa","href":"/actors/fabianlupa","icon":"actor","initials":"FL","avatar":"/avatars/fabianlupa.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:fatihpense-zcl-mdp-json","kind":"art","label":"zcl_mdp_json","ring":"independent","href":"/abap/artifacts/fatihpense-zcl-mdp-json","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:fatihpense","kind":"actor","label":"Fatih Pense","href":"/actors/fatihpense","icon":"actor","initials":"FP","avatar":"/avatars/fatihpense.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:fermeregali-cap-mtx-scaffold","kind":"art","label":"cap-mtx-scaffold","ring":"independent","href":"/cap/artifacts/fermeregali-cap-mtx-scaffold","icon":"skill","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:fermeregali","kind":"actor","label":"Fernando Meregali Xavier","href":"/actors/fermeregali","icon":"actor","initials":"FMX","avatar":"/avatars/fermeregali.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:fgalastri-mcp-abap","kind":"art","label":"fgalastri/MCP_ABAP","ring":"independent","href":"/abap/artifacts/fgalastri-mcp-abap","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:fgalastri","kind":"actor","label":"fgalastri","href":"/actors/fgalastri","icon":"actor","initials":"F","avatar":"/avatars/fgalastri.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:fidley-json2abaptype","kind":"art","label":"JSON2ABAPType","ring":"independent","href":"/abap/artifacts/fidley-json2abaptype","icon":"generator","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:fidley","kind":"actor","label":"Łukasz Pęgiel","href":"/actors/fidley","icon":"actor","initials":"ŁP","avatar":"/avatars/fidley.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:fr0ster-mcp-abap-adt","kind":"art","label":"fr0ster/mcp-abap-adt","ring":"independent","href":"/abap/artifacts/fr0ster-mcp-abap-adt","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:franzreitmayer-abap-logging","kind":"art","label":"ABAP_LOGGING","ring":"independent","href":"/abap/artifacts/franzreitmayer-abap-logging","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:franzreitmayer","kind":"actor","label":"franzreitmayer","href":"/actors/franzreitmayer","icon":"actor","initials":"F","avatar":"/avatars/franzreitmayer.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:freight-art-abapsmith","kind":"art","label":"abapsmith","ring":"independent","href":"/abap/artifacts/freight-art-abapsmith","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:freight-art","kind":"actor","label":"Freight Art","href":"/actors/freight-art","icon":"actor","initials":"FA","ring":"independent","avatar":"/avatars/freight-art.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:furkanaksy838-cap-mcp-guard","kind":"art","label":"cap-mcp-guard","ring":"independent","href":"/cap/artifacts/furkanaksy838-cap-mcp-guard","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:furkanaksy838","kind":"actor","label":"Furkan Aksoy","href":"/actors/furkanaksy838","icon":"actor","initials":"FA","avatar":"/avatars/furkanaksy838.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:furkancosgun-abap-cache-box","kind":"art","label":"ABAP-CACHE-BOX","ring":"independent","href":"/abap/artifacts/furkancosgun-abap-cache-box","icon":"generator","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:furkancosgun","kind":"actor","label":"Furkan COSGUN","href":"/actors/furkancosgun","icon":"actor","initials":"FC","avatar":"/avatars/furkancosgun.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:furkancosgun-abap-database-manager","kind":"art","label":"ABAP_DATABASE_MANAGER","ring":"independent","href":"/abap/artifacts/furkancosgun-abap-database-manager","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:furkancosgun-coroutines4abap","kind":"art","label":"COROUTINES4ABAP","ring":"independent","href":"/abap/artifacts/furkancosgun-coroutines4abap","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:furkancosgun-either-for-abap","kind":"art","label":"EITHER-FOR-ABAP","ring":"independent","href":"/abap/artifacts/furkancosgun-either-for-abap","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:furkancosgun-transport-management-tool","kind":"art","label":"furkancosgun/Transport-Management-Tool","ring":"independent","href":"/abap/artifacts/furkancosgun-transport-management-tool","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:furkancosgun-zwarp","kind":"art","label":"furkancosgun/ZWARP","ring":"independent","href":"/abap/artifacts/furkancosgun-zwarp","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:gavdi-cap-mcp","kind":"art","label":"@gavdi/cap-mcp","ring":"independent","href":"/cap/artifacts/gavdi-cap-mcp","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:gavdilabs","kind":"actor","label":"Gavdi Labs","href":"/actors/gavdilabs","icon":"actor","initials":"GL","ring":"independent","avatar":"/avatars/gavdilabs.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:geert-janklaps-abap-openapi-ui","kind":"art","label":"ABAP OpenAPI UI","ring":"independent","href":"/abap/artifacts/geert-janklaps-abap-openapi-ui","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:geert-janklaps","kind":"actor","label":"Geert-Jan Klaps","href":"/actors/geert-janklaps","icon":"actor","initials":"GJK","avatar":"/avatars/geert-janklaps.png","ecos":["abap","cap","ui5","btp"],"homeEcos":["abap","cap","ui5","btp"]},{"id":"artifact:geert-janklaps-cds-launchpad-plugin","kind":"art","label":"cds-launchpad-plugin","ring":"independent","href":"/cap/artifacts/geert-janklaps-cds-launchpad-plugin","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:geertjanklaps-cds-toon-ai-protocol-adapter","kind":"art","label":"@geertjanklaps/cds-toon-ai-protocol-adapter","ring":"independent","href":"/cap/artifacts/geertjanklaps-cds-toon-ai-protocol-adapter","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:germanysources-regression-test","kind":"art","label":"regression_test","ring":"independent","href":"/abap/artifacts/germanysources-regression-test","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:germanysources","kind":"actor","label":"Johannes Gerbershagen","href":"/actors/germanysources","icon":"actor","initials":"JG","avatar":"/avatars/germanysources.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:gprs555-abap-soql-query","kind":"art","label":"abap-soql-query","ring":"independent","href":"/abap/artifacts/gprs555-abap-soql-query","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:gprs555","kind":"actor","label":"Mark Saks","href":"/actors/gprs555","icon":"actor","initials":"MS","avatar":"/avatars/gprs555.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:grahamrobbo-building-gateway-services","kind":"art","label":"building_gateway_services","ring":"independent","href":"/abap/artifacts/grahamrobbo-building-gateway-services","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:grahamrobbo","kind":"actor","label":"Graham Robinson","href":"/actors/grahamrobbo","icon":"actor","initials":"GR","avatar":"/avatars/grahamrobbo.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:gregorwolf-abapoauthazure","kind":"art","label":"abapOAuthAzure","ring":"independent","href":"/abap/artifacts/gregorwolf-abapoauthazure","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:gregorwolf","kind":"actor","label":"Gregor Wolf","href":"/actors/gregorwolf","icon":"actor","initials":"GW","ring":"independent","avatar":"/avatars/gregorwolf.png","ecos":["abap","cap","btp","ui5"],"homeEcos":["abap","cap","btp","ui5"]},{"id":"artifact:gregorwolf-aws-sns4abap","kind":"art","label":"gregorwolf/AWS_SNS4ABAP","ring":"independent","href":"/abap/artifacts/gregorwolf-aws-sns4abap","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:gregorwolf-bookshop-ams","kind":"art","label":"bookshop-ams","ring":"independent","href":"/cap/artifacts/gregorwolf-bookshop-ams","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:gregorwolf-bookshop-demo","kind":"art","label":"bookshop-demo","ring":"independent","href":"/cap/artifacts/gregorwolf-bookshop-demo","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:gregorwolf-cap-azure-ad-b2c","kind":"art","label":"cap-azure-ad-b2c","ring":"independent","href":"/cap/artifacts/gregorwolf-cap-azure-ad-b2c","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:gregorwolf-cap-replication-demo","kind":"art","label":"cap-replication-demo","ring":"independent","href":"/cap/artifacts/gregorwolf-cap-replication-demo","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:gregorwolf-cap-rfc","kind":"art","label":"cap-rfc","ring":"independent","href":"/cap/artifacts/gregorwolf-cap-rfc","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:gregorwolf-cap-sflight-hierarchy","kind":"art","label":"cap-sflight-hierarchy","ring":"independent","href":"/cap/artifacts/gregorwolf-cap-sflight-hierarchy","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:gregorwolf-cap-typescript","kind":"art","label":"cap-typescript","ring":"independent","href":"/cap/artifacts/gregorwolf-cap-typescript","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:gregorwolf-cap-websockets","kind":"art","label":"cap-websockets","ring":"independent","href":"/cap/artifacts/gregorwolf-cap-websockets","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:gregorwolf-cloud-alm-itsm-mcp","kind":"art","label":"cloud-alm-itsm-mcp","ring":"independent","href":"/btp/artifacts/gregorwolf-cloud-alm-itsm-mcp","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:gregorwolf-mtxs-reviews","kind":"art","label":"mtxs-reviews","ring":"independent","href":"/cap/artifacts/gregorwolf-mtxs-reviews","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:gregorwolf-pg-beershop","kind":"art","label":"pg-beershop","ring":"independent","href":"/cap/artifacts/gregorwolf-pg-beershop","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:gregorwolf-sap-npm-api-collection","kind":"art","label":"SAP-NPM-API-collection","ring":"independent","href":"/cap/artifacts/gregorwolf-sap-npm-api-collection","icon":"doc-source","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:greltel-abap-cloud-logger","kind":"art","label":"abap-cloud-logger","ring":"independent","href":"/abap/artifacts/greltel-abap-cloud-logger","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:greltel","kind":"actor","label":"George Drakos","href":"/actors/greltel","icon":"actor","initials":"GD","avatar":"/avatars/greltel.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:greltel-abap-dynamic-assignment","kind":"art","label":"abap-dynamic-assignment","ring":"independent","href":"/abap/artifacts/greltel-abap-dynamic-assignment","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:greltel-abap-form-translator","kind":"art","label":"abap-form-translator","ring":"independent","href":"/abap/artifacts/greltel-abap-form-translator","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:greltel-abap-point-gate","kind":"art","label":"abap-point-gate","ring":"independent","href":"/abap/artifacts/greltel-abap-point-gate","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:grknylmz-sap-ai-dev-toolkit","kind":"art","label":"sap-ai-dev-toolkit","ring":"independent","href":"/abap/artifacts/grknylmz-sap-ai-dev-toolkit","icon":"mcp-server","homeEco":"abap","ecos":["abap","btp"],"homeEcos":["abap"]},{"id":"actor:grknylmz","kind":"actor","label":"Gurkan Yilmaz","href":"/actors/grknylmz","icon":"actor","initials":"GY","avatar":"/avatars/grknylmz.png","ecos":["abap","btp"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:hasanciftci26-ui5-antares","kind":"art","label":"ui5-antares","ring":"independent","href":"/ui5/artifacts/hasanciftci26-ui5-antares","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:hasanciftci26","kind":"actor","label":"Hasan Çiftçi","href":"/actors/hasanciftci26","icon":"actor","initials":"HÇ","avatar":"/avatars/hasanciftci26.png","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"artifact:hatrigt-hana-mcp-server","kind":"art","label":"hana-mcp-server","ring":"independent","href":"/btp/artifacts/hatrigt-hana-mcp-server","icon":"mcp-server","homeEco":"btp","ecos":["btp","cap","ui5","abap"],"homeEcos":["btp"]},{"id":"actor:hatrigt","kind":"actor","label":"AjeethKumar R","href":"/actors/hatrigt","icon":"actor","initials":"AR","avatar":"/avatars/hatrigt.png","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"artifact:hatrigt-sap-cap-debugger","kind":"art","label":"sap-cap-debugger","ring":"independent","href":"/cap/artifacts/hatrigt-sap-cap-debugger","icon":"cli","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:hdb","kind":"art","label":"hdb","ring":"sap-official","href":"/btp/artifacts/hdb","icon":"package","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"actor:alexpenev-s","kind":"actor","label":"Alexander Penev","href":"/actors/alexpenev-s","icon":"actor","initials":"AP","avatar":"/avatars/alexpenev-s.png","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"actor:holgerkoser","kind":"actor","label":"Holger Koser","href":"/actors/holgerkoser","icon":"actor","initials":"HK","avatar":"/avatars/holgerkoser.png","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"actor:jeffalbion","kind":"actor","label":"Jeff Albion","href":"/actors/jeffalbion","icon":"actor","initials":"JA","avatar":"/avatars/jeffalbion.png","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"artifact:heliconialabs-abap-opentelemetry","kind":"art","label":"abap-opentelemetry","ring":"independent","href":"/abap/artifacts/heliconialabs-abap-opentelemetry","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:heliconialabs","kind":"actor","label":"Heliconia Labs","href":"/actors/heliconialabs","icon":"actor","initials":"HL","ring":"independent","avatar":"/avatars/heliconialabs.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:heliconialabs-abap-protobuf","kind":"art","label":"abap-protobuf","ring":"independent","href":"/abap/artifacts/heliconialabs-abap-protobuf","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:hhelibeb-abap-data-validator","kind":"art","label":"abap-data-validator","ring":"independent","href":"/abap/artifacts/hhelibeb-abap-data-validator","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:hhelibeb","kind":"actor","label":"He H","href":"/actors/hhelibeb","icon":"actor","initials":"HH","avatar":"/avatars/hhelibeb.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:hhelibeb-abap-fm-logger","kind":"art","label":"abap-fm-logger","ring":"independent","href":"/abap/artifacts/hhelibeb-abap-fm-logger","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:hhelibeb-blowfish-abap","kind":"art","label":"hhelibeb/blowfish-abap","ring":"independent","href":"/abap/artifacts/hhelibeb-blowfish-abap","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:hochfrequenz-aibap-mcp","kind":"art","label":"aibap.mcp","ring":"independent","href":"/abap/artifacts/hochfrequenz-aibap-mcp","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:hochfrequenz-sapgui-mcp","kind":"art","label":"sapgui.mcp","ring":"independent","href":"/abap/artifacts/hochfrequenz-sapgui-mcp","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:htammen-ui5-cc-timerbutton","kind":"art","label":"ui5-cc-timerbutton","ring":"independent","href":"/ui5/artifacts/htammen-ui5-cc-timerbutton","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:htammen","kind":"actor","label":"Helmut Tammen","href":"/actors/htammen","icon":"actor","initials":"HT","avatar":"/avatars/htammen.png","ecos":["ui5","cap","abap","btp"],"homeEcos":["ui5","cap","abap","btp"]},{"id":"artifact:i562693-vkn-scaffold-fiori-ai-bridge","kind":"art","label":"scaffold-fiori-ai-bridge","ring":"independent","href":"/ui5/artifacts/i562693-vkn-scaffold-fiori-ai-bridge","icon":"skill","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:i562693-vkn","kind":"actor","label":"Vinay K N","href":"/actors/i562693-vkn","icon":"actor","initials":"VKN","avatar":"/avatars/i562693-vkn.png","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"artifact:ibm-abap-sdk-nwas-x","kind":"art","label":"abap-sdk-nwas-x","ring":"independent","href":"/abap/artifacts/ibm-abap-sdk-nwas-x","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:ibm","kind":"actor","label":"International Business Machines","href":"/actors/ibm","icon":"actor","initials":"IBM","ring":"independent","avatar":"/avatars/ibm.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:iljapostnovs-ui5plugin-linter","kind":"art","label":"ui5plugin-linter","ring":"independent","href":"/ui5/artifacts/iljapostnovs-ui5plugin-linter","icon":"cli","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:iljapostnovs","kind":"actor","label":"Ilja Postnovs","href":"/actors/iljapostnovs","icon":"actor","initials":"IP","avatar":"/avatars/iljapostnovs.png","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"artifact:iljapostnovs-ui5plugin-parser","kind":"art","label":"ui5plugin-parser","ring":"independent","href":"/ui5/artifacts/iljapostnovs-ui5plugin-parser","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:iljapostnovs-ui5plugin","kind":"art","label":"ui5plugin","ring":"independent","href":"/ui5/artifacts/iljapostnovs-ui5plugin","icon":"ide-extension","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:invixo-abapmq","kind":"art","label":"INVIXO/abapMQ","ring":"independent","href":"/abap/artifacts/invixo-abapmq","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:invixo","kind":"actor","label":"INVIXO Consulting Group A/S","href":"/actors/invixo","icon":"actor","initials":"ICG","ring":"independent","avatar":"/avatars/invixo.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:irodrigob-alv-utilities","kind":"art","label":"alv_utilities","ring":"independent","href":"/abap/artifacts/irodrigob-alv-utilities","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:irodrigob","kind":"actor","label":"Iván Rodrigo","href":"/actors/irodrigob","icon":"actor","initials":"IR","avatar":"/avatars/irodrigob.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:irumudipriyan-sap-tcode-runner","kind":"art","label":"SAP TCode Runner","ring":"independent","href":"/abap/artifacts/irumudipriyan-sap-tcode-runner","icon":"ide-extension","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:ivanfemia-abap2gapps","kind":"art","label":"abap2gapps","ring":"independent","href":"/abap/artifacts/ivanfemia-abap2gapps","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:ivanfemia","kind":"actor","label":"Ivan","href":"/actors/ivanfemia","icon":"actor","initials":"I","avatar":"/avatars/ivanfemia.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:ivanfemia-abap2oauth2","kind":"art","label":"abap2oauth2","ring":"independent","href":"/abap/artifacts/ivanfemia-abap2oauth2","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:jchirk-ui5-i18n-excel-converter","kind":"art","label":"ui5-i18n-excel-converter","ring":"independent","href":"/ui5/artifacts/jchirk-ui5-i18n-excel-converter","icon":"cli","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:jchirk","kind":"actor","label":"jchirk","href":"/actors/jchirk","icon":"actor","initials":"J","avatar":"/avatars/jchirk.png","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"artifact:jerome-benoit-sap-ai-provider","kind":"art","label":"@jerome-benoit/sap-ai-provider","ring":"independent","href":"/cap/artifacts/jerome-benoit-sap-ai-provider","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:jerome-benoit","kind":"actor","label":"Jérôme Benoit","href":"/actors/jerome-benoit","icon":"actor","initials":"JB","avatar":"/avatars/jerome-benoit.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:jfilak-sapcli-claude-plugin","kind":"art","label":"sapcli Claude Code Plugin","ring":"independent","href":"/abap/artifacts/jfilak-sapcli-claude-plugin","icon":"skill","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:jfilak","kind":"actor","label":"Jakub Filak","href":"/actors/jfilak","icon":"actor","initials":"JF","avatar":"/avatars/jfilak.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:jrgkraus-abap-alv-struc-viewer","kind":"art","label":"abap-alv-struc-viewer","ring":"independent","href":"/abap/artifacts/jrgkraus-abap-alv-struc-viewer","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:jrgkraus","kind":"actor","label":"Jörg Krause","href":"/actors/jrgkraus","icon":"actor","initials":"JK","avatar":"/avatars/jrgkraus.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:jrgkraus-abap-gencust","kind":"art","label":"abap-gencust","ring":"independent","href":"/abap/artifacts/jrgkraus-abap-gencust","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:jrgkraus-abap-ui-tools","kind":"art","label":"abap-ui-tools","ring":"independent","href":"/abap/artifacts/jrgkraus-abap-ui-tools","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:jrgkraus-tool-bi","kind":"art","label":"tool-bi","ring":"independent","href":"/abap/artifacts/jrgkraus-tool-bi","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:jrgkraus-zotr-utility","kind":"art","label":"ZOTR_UTILITY","ring":"independent","href":"/abap/artifacts/jrgkraus-zotr-utility","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:jrodriguez-rc-abap-tasks-tracker","kind":"art","label":"abap-tasks-tracker","ring":"independent","href":"/abap/artifacts/jrodriguez-rc-abap-tasks-tracker","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:jrodriguez-rc","kind":"actor","label":"Jaime Rodriguez Capote","href":"/actors/jrodriguez-rc","icon":"actor","initials":"JRC","avatar":"/avatars/jrodriguez-rc.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:jumenengels-sac-mcp","kind":"art","label":"sap_analytics_cloud_mcp","ring":"independent","href":"/btp/artifacts/jumenengels-sac-mcp","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"actor:jumenengels","kind":"actor","label":"Jumen Engels","href":"/actors/jumenengels","icon":"actor","initials":"JE","avatar":"/avatars/jumenengels.png","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"artifact:kallolchakraborty-cap-guardian","kind":"art","label":"CAP Guardian","ring":"independent","href":"/cap/artifacts/kallolchakraborty-cap-guardian","icon":"skill","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:kamilkov-supply-chain-rescue","kind":"art","label":"Supply Chain Rescue","ring":"independent","href":"/cap/artifacts/kamilkov-supply-chain-rescue","icon":"sample","homeEco":"cap","ecos":["cap","ui5","abap"],"homeEcos":["cap"]},{"id":"actor:kamilkov","kind":"actor","label":"Kamil Kováč","href":"/actors/kamilkov","icon":"actor","initials":"KK","avatar":"/avatars/kamilkov.png","ecos":["cap","ui5","abap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:kamlendra-search-vocab","kind":"art","label":"@kamlendra/search-vocab","ring":"independent","href":"/cap/artifacts/kamlendra-search-vocab","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:kamlendra-urp-vocab","kind":"art","label":"urp-vocab","ring":"independent","href":"/cap/artifacts/kamlendra-urp-vocab","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:kaszub09-abapdatatotableimport","kind":"art","label":"abapDataToTableImport","ring":"independent","href":"/abap/artifacts/kaszub09-abapdatatotableimport","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:kaszub09","kind":"actor","label":"Marcin Kaszuba","href":"/actors/kaszub09","icon":"actor","initials":"MK","avatar":"/avatars/kaszub09.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:kaszub09-abapeasyalv","kind":"art","label":"abapEasyALV","ring":"independent","href":"/abap/artifacts/kaszub09-abapeasyalv","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:kaszub09-abaptoc","kind":"art","label":"abapToC","ring":"independent","href":"/abap/artifacts/kaszub09-abaptoc","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:kaszub09-zabap-sap-enhancements","kind":"art","label":"ZABAP_SAP_ENHANCEMENTS","ring":"independent","href":"/abap/artifacts/kaszub09-zabap-sap-enhancements","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:kaszub09-zabap-table-edit","kind":"art","label":"ZABAP_TABLE_EDIT","ring":"independent","href":"/abap/artifacts/kaszub09-zabap-table-edit","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:kaszub09-zabap-translations","kind":"art","label":"ZABAP_TRANSLATIONS","ring":"independent","href":"/abap/artifacts/kaszub09-zabap-translations","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:keelside-mcp-sap-cpi","kind":"art","label":"mcp-sap-cpi","ring":"independent","href":"/btp/artifacts/keelside-mcp-sap-cpi","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"actor:keelside","kind":"actor","label":"Keelside","href":"/actors/keelside","icon":"actor","initials":"K","ring":"independent","avatar":"/avatars/keelside.png","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"artifact:khalidmh-capx","kind":"art","label":"@khalidmh/capx","ring":"independent","href":"/cap/artifacts/khalidmh-capx","icon":"generator","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:khalidmh","kind":"actor","label":"Khalid Marhoum","href":"/actors/khalidmh","icon":"actor","initials":"KM","avatar":"/avatars/khalidmh.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:krish469-sap-cap-mongodb","kind":"art","label":"sap-cap-mongodb","ring":"independent","href":"/cap/artifacts/krish469-sap-cap-mongodb","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:krish469","kind":"actor","label":"krish469","href":"/actors/krish469","icon":"actor","initials":"K","ring":"independent","avatar":"/avatars/krish469.png","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"artifact:kseretis-abap-metrics","kind":"art","label":"abap-metrics","ring":"independent","href":"/abap/artifacts/kseretis-abap-metrics","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:kseretis","kind":"actor","label":"Seretis Kleanthis","href":"/actors/kseretis","icon":"actor","initials":"SK","avatar":"/avatars/kseretis.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:ktaubmann-bella","kind":"art","label":"Bella","ring":"independent","href":"/abap/artifacts/ktaubmann-bella","icon":"ide-extension","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:ktaubmann","kind":"actor","label":"Kilian Taubmann","href":"/actors/ktaubmann","icon":"actor","initials":"KT","avatar":"/avatars/ktaubmann.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:kts982-mcp-sap-gui","kind":"art","label":"kts982/mcp-sap-gui","ring":"independent","href":"/abap/artifacts/kts982-mcp-sap-gui","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:kts982","kind":"actor","label":"Kostas T.","href":"/actors/kts982","icon":"actor","initials":"KT","avatar":"/avatars/kts982.png","ecos":["abap","btp","ui5"],"homeEcos":["abap","btp"]},{"id":"artifact:kts982-sap-odata-explorer","kind":"art","label":"sap-odata-explorer","ring":"independent","href":"/btp/artifacts/kts982-sap-odata-explorer","icon":"desktop-app","homeEco":"btp","ecos":["btp","abap","ui5"],"homeEcos":["btp"]},{"id":"artifact:larshp-abap-object-visualizer","kind":"art","label":"ABAP-Object-Visualizer","ring":"independent","href":"/abap/artifacts/larshp-abap-object-visualizer","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:larshp-abap-swagger","kind":"art","label":"ABAP-Swagger","ring":"independent","href":"/abap/artifacts/larshp-abap-swagger","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:larshp-abapcov","kind":"art","label":"abapCov","ring":"independent","href":"/abap/artifacts/larshp-abapcov","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:larshp-abapgitserver","kind":"art","label":"abapGitServer","ring":"independent","href":"/abap/artifacts/larshp-abapgitserver","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:larshp-abapntlm","kind":"art","label":"abapNTLM","ring":"independent","href":"/abap/artifacts/larshp-abapntlm","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:larshp-abapopenchecks","kind":"art","label":"abapOpenChecks","ring":"independent","href":"/abap/artifacts/larshp-abapopenchecks","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:larshp-abapopenreview","kind":"art","label":"abapOpenReview","ring":"independent","href":"/abap/artifacts/larshp-abapopenreview","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:larshp-abappgp","kind":"art","label":"abapPGP","ring":"independent","href":"/abap/artifacts/larshp-abappgp","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:larshp-formfactor","kind":"art","label":"FORMfactor","ring":"independent","href":"/abap/artifacts/larshp-formfactor","icon":"generator","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:larshp-updownci","kind":"art","label":"upDOWNci","ring":"independent","href":"/abap/artifacts/larshp-updownci","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:larshp-vscode-abap","kind":"art","label":"ABAP Syntax Highlighting","ring":"independent","href":"/abap/artifacts/larshp-vscode-abap","icon":"ide-extension","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:lemaiwo-ai-core-mcp-server","kind":"art","label":"AI Core MCP Server","ring":"independent","href":"/btp/artifacts/lemaiwo-ai-core-mcp-server","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"actor:lemaiwo","kind":"actor","label":"Wouter Lemaire","href":"/actors/lemaiwo","icon":"actor","initials":"WL","ring":"independent","avatar":"/avatars/lemaiwo.png","ecos":["btp","cap","ui5","abap"],"homeEcos":["btp","cap","ui5","abap"]},{"id":"artifact:lemaiwo-btp-agent","kind":"art","label":"btp-agent","ring":"independent","href":"/cap/artifacts/lemaiwo-btp-agent","icon":"sample","homeEco":"cap","ecos":["cap","btp","ui5"],"homeEcos":["cap"]},{"id":"artifact:lemaiwo-btp-application-vulnerability-report-ui","kind":"art","label":"btpvulnerabilityreport","ring":"independent","href":"/cap/artifacts/lemaiwo-btp-application-vulnerability-report-ui","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:lemaiwo-btp-cf-mcp-server","kind":"art","label":"BTP CF MCP Server","ring":"independent","href":"/btp/artifacts/lemaiwo-btp-cf-mcp-server","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:lemaiwo-btp-drawio-skill","kind":"art","label":"btp-solution-diagram-generator","ring":"independent","href":"/btp/artifacts/lemaiwo-btp-drawio-skill","icon":"skill","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:lemaiwo-btp-mcp-server","kind":"art","label":"BTP MCP Server","ring":"independent","href":"/btp/artifacts/lemaiwo-btp-mcp-server","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:lemaiwo-btp-sap-odata-to-mcp-server","kind":"art","label":"btp-sap-odata-to-mcp-server","ring":"independent","href":"/btp/artifacts/lemaiwo-btp-sap-odata-to-mcp-server","icon":"mcp-server","homeEco":"btp","ecos":["btp","abap"],"homeEcos":["btp"]},{"id":"artifact:lemaiwo-cap-agent-ui5-webui-sample","kind":"art","label":"cap-agent-ui5-webui-sample","ring":"independent","href":"/cap/artifacts/lemaiwo-cap-agent-ui5-webui-sample","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:lemaiwo-cap-agent-ui5-webui","kind":"art","label":"cap-agent-ui5-webui","ring":"independent","href":"/cap/artifacts/lemaiwo-cap-agent-ui5-webui","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:lemaiwo-cds-plugin-handlers","kind":"art","label":"cds-plugin-handlers","ring":"independent","href":"/cap/artifacts/lemaiwo-cds-plugin-handlers","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:lemaiwo-ci-mcp-server","kind":"art","label":"CI MCP Server","ring":"independent","href":"/btp/artifacts/lemaiwo-ci-mcp-server","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:lemaiwo-odata-mcp-proxy","kind":"art","label":"odata-mcp-proxy","ring":"independent","href":"/btp/artifacts/lemaiwo-odata-mcp-proxy","icon":"mcp-server","homeEco":"btp","ecos":["btp","cap","ui5"],"homeEcos":["btp","cap"]},{"id":"artifact:lemaiwo-ui5-ai-features-demo","kind":"art","label":"ui5-ai-features-demo","ring":"independent","href":"/cap/artifacts/lemaiwo-ui5-ai-features-demo","icon":"sample","homeEco":"cap","ecos":["cap","ui5"],"homeEcos":["cap"]},{"id":"artifact:lemaiwo-ui5-cap-ai-features","kind":"art","label":"ui5-cap-ai-features","ring":"independent","href":"/cap/artifacts/lemaiwo-ui5-cap-ai-features","icon":"cds-plugin","homeEco":"cap","ecos":["cap","ui5"],"homeEcos":["cap"]},{"id":"artifact:lemaiwo-ui5-cap-serverside-rendering-demo","kind":"art","label":"ui5-cap-serverside-rendering-demo","ring":"independent","href":"/cap/artifacts/lemaiwo-ui5-cap-serverside-rendering-demo","icon":"sample","homeEco":"cap","ecos":["cap","ui5"],"homeEcos":["cap"]},{"id":"artifact:lemaiwo-ui5-cap-serverside-rendering-plugin","kind":"art","label":"ui5-cap-serverside-rendering-plugin","ring":"independent","href":"/cap/artifacts/lemaiwo-ui5-cap-serverside-rendering-plugin","icon":"cds-plugin","homeEco":"cap","ecos":["cap","ui5"],"homeEcos":["cap"]},{"id":"artifact:lemaiwo-ui5-control-generator","kind":"art","label":"ui5-control-generator","ring":"independent","href":"/ui5/artifacts/lemaiwo-ui5-control-generator","icon":"generator","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:lemaiwo-ui5-middleware-route-proxy","kind":"art","label":"ui5-middleware-route-proxy","ring":"independent","href":"/ui5/artifacts/lemaiwo-ui5-middleware-route-proxy","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:lemaiwo-ui5-space-webcomponent-library","kind":"art","label":"ui5-space-webcomponent-library","ring":"independent","href":"/ui5/artifacts/lemaiwo-ui5-space-webcomponent-library","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:lemaiwo-ui5-space-webcomponent-package","kind":"art","label":"ui5-space-webcomponent-package","ring":"independent","href":"/ui5/artifacts/lemaiwo-ui5-space-webcomponent-package","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:lemaiwo-ui5-task-cachebuster-indexing","kind":"art","label":"ui5-task-cachebuster-indexing","ring":"independent","href":"/ui5/artifacts/lemaiwo-ui5-task-cachebuster-indexing","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:lemaiwo-ui5-task-transpile-gen","kind":"art","label":"ui5-task-transpile-gen","ring":"independent","href":"/ui5/artifacts/lemaiwo-ui5-task-transpile-gen","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:likweitan-abap-skills","kind":"art","label":"abap-skills","ring":"independent","href":"/abap/artifacts/likweitan-abap-skills","icon":"skill","homeEco":"abap","ecos":["abap","btp"],"homeEcos":["abap"]},{"id":"actor:likweitan","kind":"actor","label":"Lik Wei","href":"/actors/likweitan","icon":"actor","initials":"LW","avatar":"/avatars/likweitan.png","ecos":["abap","btp"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:lofond-drawio-skill-sap","kind":"art","label":"drawio-skill-sap","ring":"independent","href":"/btp/artifacts/lofond-drawio-skill-sap","icon":"skill","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"actor:lofond","kind":"actor","label":"lofonD","href":"/actors/lofond","icon":"actor","initials":"L","avatar":"/avatars/lofond.png","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"artifact:logalitech-sap-mdk-apps","kind":"art","label":"sap-mdk-apps","ring":"independent","href":"/btp/artifacts/logalitech-sap-mdk-apps","icon":"skill","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"actor:logalitech","kind":"actor","label":"Logali Tech","href":"/actors/logalitech","icon":"actor","initials":"LT","ring":"independent","avatar":"/avatars/logalitech.png","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"artifact:lopezmas-sap-pi-mcp-server","kind":"art","label":"sap-pi-mcp-server","ring":"independent","href":"/btp/artifacts/lopezmas-sap-pi-mcp-server","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"actor:lopezmas","kind":"actor","label":"Pablo Lopez","href":"/actors/lopezmas","icon":"actor","initials":"PL","avatar":"/avatars/lopezmas.png","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"artifact:lorenzobigs-cap-utils","kind":"art","label":"cap-utils","ring":"independent","href":"/cap/artifacts/lorenzobigs-cap-utils","icon":"generator","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:lorenzobigs","kind":"actor","label":"lorenzobigs","href":"/actors/lorenzobigs","icon":"actor","initials":"L","avatar":"/avatars/lorenzobigs.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:magpasulke-abap-string-interpreter","kind":"art","label":"ZASIS","ring":"independent","href":"/abap/artifacts/magpasulke-abap-string-interpreter","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:magpasulke","kind":"actor","label":"Philipp Dölker","href":"/actors/magpasulke","icon":"actor","initials":"PD","avatar":"/avatars/magpasulke.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:maherd18-sap-mcp-server","kind":"art","label":"Maherd18/sap-mcp-server","ring":"independent","href":"/abap/artifacts/maherd18-sap-mcp-server","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:maherd18","kind":"actor","label":"Maher Darweesh","href":"/actors/maherd18","icon":"actor","initials":"MD","avatar":"/avatars/maherd18.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:marc-bernard-tools-abap-tools-for-abapgit","kind":"art","label":"Tools for abapGit","ring":"independent","href":"/abap/artifacts/marc-bernard-tools-abap-tools-for-abapgit","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:marc-bernard-tools","kind":"actor","label":"Marc Bernard Tools","href":"/actors/marc-bernard-tools","icon":"actor","initials":"MBT","ring":"independent","avatar":"/avatars/marc-bernard-tools.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:marc-bernard-tools-abaplint-ext-for-abapgit","kind":"art","label":"abaplint-Ext-for-abapGit","ring":"independent","href":"/abap/artifacts/marc-bernard-tools-abaplint-ext-for-abapgit","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:marc-bernard-tools-mbt-logical-object-lister","kind":"art","label":"MBT Logical Object Lister","ring":"independent","href":"/abap/artifacts/marc-bernard-tools-mbt-logical-object-lister","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:marcellourbani-abap-cloud-platform","kind":"art","label":"abap_cloud_platform","ring":"independent","href":"/btp/artifacts/marcellourbani-abap-cloud-platform","icon":"package","homeEco":"btp","ecos":["btp","abap"],"homeEcos":["btp"]},{"id":"artifact:marcellourbani-abap-debugger-object-graph-extension","kind":"art","label":"abap_debugger_object_graph_extension","ring":"independent","href":"/abap/artifacts/marcellourbani-abap-debugger-object-graph-extension","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:marcellourbani-abap-trial-docker","kind":"art","label":"abap_trial_docker","ring":"independent","href":"/abap/artifacts/marcellourbani-abap-trial-docker","icon":"cli","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:marcellourbani-abapfs-extensions","kind":"art","label":"abapfs_extensions","ring":"independent","href":"/abap/artifacts/marcellourbani-abapfs-extensions","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:marcellourbani-abapgraph","kind":"art","label":"abapgraph","ring":"independent","href":"/abap/artifacts/marcellourbani-abapgraph","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:marcellourbani-abappretty","kind":"art","label":"abapPretty","ring":"independent","href":"/abap/artifacts/marcellourbani-abappretty","icon":"cli","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:marcellourbani-decodesapsso2","kind":"art","label":"decodesapsso2","ring":"independent","href":"/abap/artifacts/marcellourbani-decodesapsso2","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:marcellourbani-graphviz-browser","kind":"art","label":"Graphviz-browser","ring":"independent","href":"/abap/artifacts/marcellourbani-graphviz-browser","icon":"web-tool","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:marcellourbani-personal-application-studio","kind":"art","label":"personal-application-studio","ring":"independent","href":"/abap/artifacts/marcellourbani-personal-application-studio","icon":"desktop-app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:marcellourbani-sapdumpmcp","kind":"art","label":"sapdumpmcp","ring":"independent","href":"/abap/artifacts/marcellourbani-sapdumpmcp","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:marcellourbani-urbani-saplink","kind":"art","label":"urbani-saplink","ring":"independent","href":"/abap/artifacts/marcellourbani-urbani-saplink","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:marcellourbani-vscode-abap-remote-fs","kind":"art","label":"ABAP remote filesystem","ring":"independent","href":"/abap/artifacts/marcellourbani-vscode-abap-remote-fs","icon":"ide-extension","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:marcellourbani-vscode-activecontrol","kind":"art","label":"ActiveControl Transport form creator","ring":"independent","href":"/abap/artifacts/marcellourbani-vscode-activecontrol","icon":"ide-extension","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:marianfoo-abap-docs","kind":"art","label":"abap-docs","ring":"independent","href":"/abap/artifacts/marianfoo-abap-docs","icon":"doc-source","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:marianfoo-btp-cf-mcp","kind":"art","label":"btp-cf-mcp","ring":"independent","href":"/btp/artifacts/marianfoo-btp-cf-mcp","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:marianfoo-btp-drawio-skill","kind":"art","label":"sap-architecture","ring":"independent","href":"/btp/artifacts/marianfoo-btp-drawio-skill","icon":"skill","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:marianfoo-cap-materialbom-graph","kind":"art","label":"cap-materialbom-graph","ring":"independent","href":"/cap/artifacts/marianfoo-cap-materialbom-graph","icon":"sample","homeEco":"cap","ecos":["cap","ui5"],"homeEcos":["cap"]},{"id":"artifact:marianfoo-custom-llm-client","kind":"art","label":"custom-llm-client","ring":"independent","href":"/cap/artifacts/marianfoo-custom-llm-client","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:marianfoo-fiori-table-maintenance","kind":"art","label":"fiori-table-maintenance","ring":"independent","href":"/cap/artifacts/marianfoo-fiori-table-maintenance","icon":"sample","homeEco":"cap","ecos":["cap","ui5"],"homeEcos":["cap"]},{"id":"artifact:marianfoo-llm-benchmark-abap-code-generation","kind":"art","label":"LLM-Benchmark-ABAP-Code-Generation","ring":"independent","href":"/abap/artifacts/marianfoo-llm-benchmark-abap-code-generation","icon":"cli","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:marianfoo-local-llm-client-for-sap-consultants-librechat","kind":"art","label":"local-llm-client-for-sap-consultants-librechat","ring":"independent","href":"/abap/artifacts/marianfoo-local-llm-client-for-sap-consultants-librechat","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:marianfoo-mcp-sap-docs","kind":"art","label":"mcp-sap-docs","ring":"independent","href":"/cap/artifacts/marianfoo-mcp-sap-docs","icon":"mcp-server","homeEco":"cap","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","btp"]},{"id":"artifact:marianfoo-open-rfc","kind":"art","label":"open-rfc","ring":"independent","href":"/cap/artifacts/marianfoo-open-rfc","icon":"package","homeEco":"cap","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"artifact:marianfoo-sap-api-hub-mcp","kind":"art","label":"sap-api-hub-mcp","ring":"independent","href":"/btp/artifacts/marianfoo-sap-api-hub-mcp","icon":"mcp-server","homeEco":"btp","ecos":["btp","abap","cap"],"homeEcos":["btp"]},{"id":"artifact:marianfoo-sap-api-policy-skill","kind":"art","label":"SAP API Policy Evidence Skill","ring":"independent","href":"/btp/artifacts/marianfoo-sap-api-policy-skill","icon":"skill","homeEco":"btp","ecos":["btp","abap","cap"],"homeEcos":["btp"]},{"id":"artifact:marianfoo-sap-mcp-auth","kind":"art","label":"@marianfoo/sap-mcp-auth","ring":"independent","href":"/btp/artifacts/marianfoo-sap-mcp-auth","icon":"package","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:marianfoo-sap-note-search-mcp","kind":"art","label":"sap-note-search-mcp","ring":"independent","href":"/btp/artifacts/marianfoo-sap-note-search-mcp","icon":"mcp-server","homeEco":"btp","ecos":["btp","abap","cap"],"homeEcos":["btp"]},{"id":"artifact:marianfoo-sap-roadmap-mcp","kind":"art","label":"sap-roadmap-mcp","ring":"independent","href":"/btp/artifacts/marianfoo-sap-roadmap-mcp","icon":"mcp-server","homeEco":"btp","ecos":["btp","abap","cap"],"homeEcos":["btp"]},{"id":"artifact:marianfoo-ui5-call-action","kind":"art","label":"ui5-call-action","ring":"independent","href":"/cap/artifacts/marianfoo-ui5-call-action","icon":"sample","homeEco":"cap","ecos":["cap","ui5"],"homeEcos":["cap","ui5"]},{"id":"artifact:marianfoo-ui5-cc-dayjs","kind":"art","label":"@marianfoo/ui5-cc-dayjs","ring":"independent","href":"/ui5/artifacts/marianfoo-ui5-cc-dayjs","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:marianfoo-ui5-cc-pdfviewer","kind":"art","label":"ui5-cc-pdfviewer","ring":"independent","href":"/ui5/artifacts/marianfoo-ui5-cc-pdfviewer","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:marianfoo-ui5-errorhandler-sample","kind":"art","label":"ui5-errorhandler-sample","ring":"independent","href":"/ui5/artifacts/marianfoo-ui5-errorhandler-sample","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:marianfoo-ui5-fe-mockserver-tutorial","kind":"art","label":"ui5-fe-mockserver-tutorial","ring":"independent","href":"/ui5/artifacts/marianfoo-ui5-fe-mockserver-tutorial","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:marianfoo-ui5-lib-diff","kind":"art","label":"ui5-lib-diff","ring":"independent","href":"/ui5/artifacts/marianfoo-ui5-lib-diff","icon":"web-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:marianfoo-ui5-middleware-odata-recorder","kind":"art","label":"ui5-middleware-odata-recorder","ring":"independent","href":"/ui5/artifacts/marianfoo-ui5-middleware-odata-recorder","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:marianfoo-ui5-plugin-loader","kind":"art","label":"ui5-plugin-loader","ring":"independent","href":"/ui5/artifacts/marianfoo-ui5-plugin-loader","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:marianfoo-ui5con-2026-mcpapps","kind":"art","label":"UI5con_2026_MCPApps","ring":"independent","href":"/ui5/artifacts/marianfoo-ui5con-2026-mcpapps","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:marianfoo-ui5con24-dev-env","kind":"art","label":"ui5con24-dev-env","ring":"independent","href":"/ui5/artifacts/marianfoo-ui5con24-dev-env","icon":"sample","homeEco":"ui5","ecos":["ui5","cap"],"homeEcos":["ui5"]},{"id":"artifact:marianfoo-werkbank","kind":"art","label":"Werkbank","ring":"independent","href":"/artifacts/marianfoo-werkbank","icon":"desktop-app","ecos":["abap","cap","ui5"]},{"id":"artifact:marianfoo-ztoad","kind":"art","label":"ztoad","ring":"independent","href":"/abap/artifacts/marianfoo-ztoad","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:mario-andreschak-mcp-abap-adt-api","kind":"art","label":"mcp-abap-abap-adt-api","ring":"independent","href":"/abap/artifacts/mario-andreschak-mcp-abap-adt-api","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:mario-andreschak","kind":"actor","label":"mario-andreschak","href":"/actors/mario-andreschak","icon":"actor","initials":"MA","avatar":"/avatars/mario-andreschak.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:mario-andreschak-mcp-abap-adt","kind":"art","label":"mcp-abap-adt","ring":"independent","href":"/abap/artifacts/mario-andreschak-mcp-abap-adt","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:mario-andreschak-mcp-sap-gui","kind":"art","label":"mcp-sap-gui","ring":"independent","href":"/abap/artifacts/mario-andreschak-mcp-sap-gui","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:mariodefelipe-datasphere-plugin","kind":"art","label":"SAP Datasphere Plugin for Claude","ring":"independent","href":"/btp/artifacts/mariodefelipe-datasphere-plugin","icon":"skill","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"actor:mariodefelipe","kind":"actor","label":"MarioDeFelipe","href":"/actors/mariodefelipe","icon":"actor","initials":"M","avatar":"/avatars/mariodefelipe.png","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"artifact:mariodefelipe-sap-bdc-mcp-server","kind":"art","label":"sap-bdc-mcp-server","ring":"independent","href":"/btp/artifacts/mariodefelipe-sap-bdc-mcp-server","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:mariodefelipe-sap-datasphere-mcp","kind":"art","label":"@mariodefe/sap-datasphere-mcp","ring":"independent","href":"/btp/artifacts/mariodefelipe-sap-datasphere-mcp","icon":"mcp-server","homeEco":"btp","ecos":["btp","cap","ui5","abap"],"homeEcos":["btp"]},{"id":"artifact:mariokernich-abap-doc","kind":"art","label":"abap-doc","ring":"independent","href":"/abap/artifacts/mariokernich-abap-doc","icon":"cli","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:mariokernich","kind":"actor","label":"Mario Kernich","href":"/actors/mariokernich","icon":"actor","initials":"MK","ring":"independent","avatar":"/avatars/mariokernich.png","ecos":["abap","ui5","btp","cap"],"homeEcos":["abap","ui5","cap","btp"]},{"id":"artifact:mariokernich-abapconf2026-custom-entities","kind":"art","label":"abapconf2026-custom-entities","ring":"independent","href":"/abap/artifacts/mariokernich-abapconf2026-custom-entities","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:mariokernich-fiori-fullscreen-plugin","kind":"art","label":"fiori-fullscreen-plugin","ring":"independent","href":"/ui5/artifacts/mariokernich-fiori-fullscreen-plugin","icon":"sample","homeEco":"ui5","ecos":["ui5","abap","btp"],"homeEcos":["ui5"]},{"id":"artifact:mariokernich-odapu-abap","kind":"art","label":"ODAPU","ring":"independent","href":"/abap/artifacts/mariokernich-odapu-abap","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:mariokernich-ui5-cap-todo","kind":"art","label":"ui5-cap-todo","ring":"independent","href":"/cap/artifacts/mariokernich-ui5-cap-todo","icon":"sample","homeEco":"cap","ecos":["cap","ui5"],"homeEcos":["cap"]},{"id":"artifact:mariokernich-ui5-monorepo-showcase","kind":"art","label":"ui5-monorepo-showcase","ring":"independent","href":"/ui5/artifacts/mariokernich-ui5-monorepo-showcase","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:mariokernich-ui5-tcode-finder","kind":"art","label":"ui5-tcode-finder","ring":"independent","href":"/abap/artifacts/mariokernich-ui5-tcode-finder","icon":"web-tool","homeEco":"abap","ecos":["abap","ui5"],"homeEcos":["abap"]},{"id":"artifact:mariokernich-ui5-touch-controls","kind":"art","label":"ui5-touch-controls","ring":"independent","href":"/ui5/artifacts/mariokernich-ui5-touch-controls","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:markwury168-sap-mcp","kind":"art","label":"MarkWuRY168/SAP_MCP","ring":"independent","href":"/abap/artifacts/markwury168-sap-mcp","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:markwury168","kind":"actor","label":"MarkWuRY168","href":"/actors/markwury168","icon":"actor","initials":"M","avatar":"/avatars/markwury168.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:martinpankraz-az-private-linky-cap","kind":"art","label":"az-private-linky-cap","ring":"independent","href":"/cap/artifacts/martinpankraz-az-private-linky-cap","icon":"sample","homeEco":"cap","ecos":["cap","btp"],"homeEcos":["cap"]},{"id":"actor:martinpankraz","kind":"actor","label":"Martin Pankraz","href":"/actors/martinpankraz","icon":"actor","initials":"MP","ring":"independent","avatar":"/avatars/martinpankraz.png","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"artifact:matt1as-claude-abap-skills","kind":"art","label":"claude-abap-skills","ring":"independent","href":"/abap/artifacts/matt1as-claude-abap-skills","icon":"skill","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:matt1as","kind":"actor","label":"Mattias Johansson","href":"/actors/matt1as","icon":"actor","initials":"MJ","avatar":"/avatars/matt1as.png","ecos":["abap","cap","ui5","btp"],"homeEcos":["abap","cap","ui5"]},{"id":"artifact:mauriciolauffer-cap-js-mockdata","kind":"art","label":"cap-js-mockdata","ring":"independent","href":"/cap/artifacts/mauriciolauffer-cap-js-mockdata","icon":"generator","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:mauriciolauffer","kind":"actor","label":"Mauricio Lauffer","href":"/actors/mauriciolauffer","icon":"actor","initials":"ML","ring":"independent","avatar":"/avatars/mauriciolauffer.png","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"artifact:mauriciolauffer-eslint-plugin-better-cap-config","kind":"art","label":"eslint-plugin-better-cap-config","ring":"independent","href":"/cap/artifacts/mauriciolauffer-eslint-plugin-better-cap-config","icon":"build-tool","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:mauriciolauffer-jest-environment-ui5","kind":"art","label":"jest-environment-ui5","ring":"independent","href":"/ui5/artifacts/mauriciolauffer-jest-environment-ui5","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:mauriciolauffer-openui5-error-collector","kind":"art","label":"openui5-error-collector","ring":"independent","href":"/ui5/artifacts/mauriciolauffer-openui5-error-collector","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:mauriciolauffer-openui5-model-json-crud","kind":"art","label":"openui5-model-json-crud","ring":"independent","href":"/ui5/artifacts/mauriciolauffer-openui5-model-json-crud","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:mauriciolauffer-openui5-model-odata-v2-odatapromise","kind":"art","label":"openui5-model-odata-v2-odatapromise","ring":"independent","href":"/ui5/artifacts/mauriciolauffer-openui5-model-odata-v2-odatapromise","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:mauriciolauffer-openui5-password","kind":"art","label":"openui5-password","ring":"independent","href":"/ui5/artifacts/mauriciolauffer-openui5-password","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:mauriciolauffer-openui5-smart-mockserver","kind":"art","label":"openui5-smart-mockserver","ring":"independent","href":"/ui5/artifacts/mauriciolauffer-openui5-smart-mockserver","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:mauriciolauffer-openui5-tour","kind":"art","label":"openui5-tour","ring":"independent","href":"/ui5/artifacts/mauriciolauffer-openui5-tour","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:mauriciolauffer-openui5-validator","kind":"art","label":"openui5-validator","ring":"independent","href":"/ui5/artifacts/mauriciolauffer-openui5-validator","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:mauriciolauffer-sap-cap-validator-plugin","kind":"art","label":"sap-cap-validator-plugin","ring":"independent","href":"/cap/artifacts/mauriciolauffer-sap-cap-validator-plugin","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:mauriciolauffer-ui5-deployer","kind":"art","label":"ui5-deployer","ring":"independent","href":"/ui5/artifacts/mauriciolauffer-ui5-deployer","icon":"cli","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:mauriciolauffer-ui5-task-dts-generator","kind":"art","label":"ui5-task-dts-generator","ring":"independent","href":"/ui5/artifacts/mauriciolauffer-ui5-task-dts-generator","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:mauriciolauffer-ui5-task-minifier","kind":"art","label":"ui5-task-minifier","ring":"independent","href":"/ui5/artifacts/mauriciolauffer-ui5-task-minifier","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:mauriciolauffer-vitest-environment-ui5","kind":"art","label":"vitest-environment-ui5","ring":"independent","href":"/ui5/artifacts/mauriciolauffer-vitest-environment-ui5","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:mauriciolauffer-wdio-qunit-service","kind":"art","label":"wdio-qunit-service","ring":"independent","href":"/ui5/artifacts/mauriciolauffer-wdio-qunit-service","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:maxi1555-ui5-middleware-oidc","kind":"art","label":"ui5-middleware-oidc","ring":"independent","href":"/ui5/artifacts/maxi1555-ui5-middleware-oidc","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:maxi1555","kind":"actor","label":"maxi1555","href":"/actors/maxi1555","icon":"actor","initials":"M","avatar":"/avatars/maxi1555.png","ecos":["ui5","cap","btp"],"homeEcos":["ui5","cap","btp"]},{"id":"artifact:mdjoerg-adele","kind":"art","label":"ADELE RFC API","ring":"independent","href":"/abap/artifacts/mdjoerg-adele","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:mdjoerg","kind":"actor","label":"MDJoerg","href":"/actors/mdjoerg","icon":"actor","initials":"M","avatar":"/avatars/mdjoerg.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:mdjoerg-mqba","kind":"art","label":"MQBA","ring":"independent","href":"/abap/artifacts/mdjoerg-mqba","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:mertsap-capval","kind":"art","label":"capval","ring":"independent","href":"/cap/artifacts/mertsap-capval","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:mertsap","kind":"actor","label":"MattBrightman","href":"/actors/mertsap","icon":"actor","initials":"M","ring":"independent","avatar":"/avatars/mertsap.png","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"artifact:mfigueir-sap-power","kind":"art","label":"SAP Power for Kiro","ring":"independent","href":"/btp/artifacts/mfigueir-sap-power","icon":"skill","homeEco":"btp","ecos":["btp","cap","ui5","abap"],"homeEcos":["btp"]},{"id":"actor:mfigueir","kind":"actor","label":"mfigueir","href":"/actors/mfigueir","icon":"actor","initials":"M","avatar":"/avatars/mfigueir.png","ecos":["btp","cap","ui5","abap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"artifact:mi8y-cap-agents-aicore-vectorstore","kind":"art","label":"@mi8y/cap-agents-aicore-vectorstore","ring":"independent","href":"/cap/artifacts/mi8y-cap-agents-aicore-vectorstore","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:anselm94","kind":"actor","label":"Merbin J Anselm","href":"/actors/anselm94","icon":"actor","initials":"MJA","avatar":"/avatars/anselm94.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"actor:mi8y","kind":"actor","label":"Mi8Y Technologies","href":"/actors/mi8y","icon":"actor","initials":"MT","ring":"independent","avatar":"/avatars/mi8y.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:mi8y-cap-agents-cds-vectorstore","kind":"art","label":"@mi8y/cap-agents-cds-vectorstore","ring":"independent","href":"/cap/artifacts/mi8y-cap-agents-cds-vectorstore","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:mi8y-cap-agents-memory","kind":"art","label":"@mi8y/cap-agents-memory","ring":"independent","href":"/cap/artifacts/mi8y-cap-agents-memory","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:mi8y-cap-agents-sdm-backend","kind":"art","label":"@mi8y/cap-agents-sdm-backend","ring":"independent","href":"/cap/artifacts/mi8y-cap-agents-sdm-backend","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:mi8y-cap-agents-sdm-reports-assistant","kind":"art","label":"Reports Assistant with SAP Document Management","ring":"independent","href":"/cap/artifacts/mi8y-cap-agents-sdm-reports-assistant","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:mi8y-cds-langgraph-persistence","kind":"art","label":"@mi8y/cds-langgraph-persistence","ring":"independent","href":"/cap/artifacts/mi8y-cds-langgraph-persistence","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:microsoft-abap-sdk-for-azure","kind":"art","label":"ABAP SDK for Azure","ring":"partner","href":"/abap/artifacts/microsoft-abap-sdk-for-azure","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:microsoft","kind":"actor","label":"Microsoft","href":"/actors/microsoft","icon":"actor","initials":"M","avatar":"/avatars/microsoft.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:microsoft-aisdkforsapabap","kind":"art","label":"Microsoft AI SDK for SAP","ring":"partner","href":"/abap/artifacts/microsoft-aisdkforsapabap","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:midasol-sap-mcp-server","kind":"art","label":"midasol/sap-mcp-server","ring":"independent","href":"/btp/artifacts/midasol-sap-mcp-server","icon":"mcp-server","homeEco":"btp","ecos":["btp","abap"],"homeEcos":["btp"]},{"id":"actor:midasol","kind":"actor","label":"Sanggyu Lee","href":"/actors/midasol","icon":"actor","initials":"SL","avatar":"/avatars/midasol.png","ecos":["btp","abap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"artifact:miggi92-odata-fw","kind":"art","label":"odata-fw","ring":"independent","href":"/abap/artifacts/miggi92-odata-fw","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:miggi92","kind":"actor","label":"Miguel","href":"/actors/miggi92","icon":"actor","initials":"M","avatar":"/avatars/miggi92.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:mikezaschka-cap-ui5-gpt-chat","kind":"art","label":"cap-ui5-gpt-chat","ring":"independent","href":"/cap/artifacts/mikezaschka-cap-ui5-gpt-chat","icon":"sample","homeEco":"cap","ecos":["cap","ui5"],"homeEcos":["cap"]},{"id":"artifact:mikezaschka-cds-data-federation","kind":"art","label":"cds-data-federation","ring":"independent","href":"/cap/artifacts/mikezaschka-cds-data-federation","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:mikezaschka-cds-data-pipeline","kind":"art","label":"cds-data-pipeline","ring":"independent","href":"/cap/artifacts/mikezaschka-cds-data-pipeline","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:mikezaschka-cds-dbm","kind":"art","label":"cds-dbm","ring":"independent","href":"/cap/artifacts/mikezaschka-cds-dbm","icon":"build-tool","homeEco":"cap","archived":true,"ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-app-to-app-nav-bas","kind":"art","label":"app-to-app-nav-bas","ring":"independent","href":"/ui5/artifacts/miyasuta-app-to-app-nav-bas","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:mio-yasutake","kind":"actor","label":"Mio Yasutake","href":"/actors/mio-yasutake","icon":"actor","initials":"MY","ring":"independent","avatar":"/avatars/mio-yasutake.png","ecos":["ui5","cap","btp","abap"],"homeEcos":["ui5","cap","btp","abap"]},{"id":"artifact:miyasuta-assert-target","kind":"art","label":"assert-target","ring":"independent","href":"/cap/artifacts/miyasuta-assert-target","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-attachment-reuse-controls-sample","kind":"art","label":"attachment-reuse-controls-sample","ring":"independent","href":"/cap/artifacts/miyasuta-attachment-reuse-controls-sample","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-auth-samples","kind":"art","label":"auth-samples","ring":"independent","href":"/cap/artifacts/miyasuta-auth-samples","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-auth-transport","kind":"art","label":"auth-transport","ring":"independent","href":"/btp/artifacts/miyasuta-auth-transport","icon":"app","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:miyasuta-auth-transport2","kind":"art","label":"auth-transport2","ring":"independent","href":"/btp/artifacts/miyasuta-auth-transport2","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:miyasuta-blog-bookshop","kind":"art","label":"blog-bookshop","ring":"independent","href":"/cap/artifacts/miyasuta-blog-bookshop","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-blog-cap-chart","kind":"art","label":"blog-cap-chart","ring":"independent","href":"/cap/artifacts/miyasuta-blog-cap-chart","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-btp-ui5-show-userinfo","kind":"art","label":"btp-ui5-show-userinfo","ring":"independent","href":"/ui5/artifacts/miyasuta-btp-ui5-show-userinfo","icon":"sample","homeEco":"ui5","ecos":["ui5","btp"],"homeEcos":["ui5"]},{"id":"artifact:miyasuta-btp-user-role-request","kind":"art","label":"btp-user-role-request","ring":"independent","href":"/btp/artifacts/miyasuta-btp-user-role-request","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:miyasuta-cap-alp","kind":"art","label":"cap-alp","ring":"independent","href":"/cap/artifacts/miyasuta-cap-alp","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-ams-a2a","kind":"art","label":"cap-ams-a2a","ring":"independent","href":"/cap/artifacts/miyasuta-cap-ams-a2a","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-bp-rag","kind":"art","label":"cap-bp-rag","ring":"independent","href":"/cap/artifacts/miyasuta-cap-bp-rag","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-cds-typer","kind":"art","label":"cap-cds-typer","ring":"independent","href":"/cap/artifacts/miyasuta-cap-cds-typer","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-cross-container","kind":"art","label":"cap-cross-container","ring":"independent","href":"/cap/artifacts/miyasuta-cap-cross-container","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-defaultvalue-function","kind":"art","label":"cap-defaultvalue-function","ring":"independent","href":"/cap/artifacts/miyasuta-cap-defaultvalue-function","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-embedding-function","kind":"art","label":"cap-embedding-function","ring":"independent","href":"/cap/artifacts/miyasuta-cap-embedding-function","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-external-northwind","kind":"art","label":"cap-external-northwind","ring":"independent","href":"/cap/artifacts/miyasuta-cap-external-northwind","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-fe-massedit","kind":"art","label":"cap-fe-massedit","ring":"independent","href":"/cap/artifacts/miyasuta-cap-fe-massedit","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-feature-control","kind":"art","label":"cap-feature-control","ring":"independent","href":"/cap/artifacts/miyasuta-cap-feature-control","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-github-action","kind":"art","label":"cap-github-action","ring":"independent","href":"/cap/artifacts/miyasuta-cap-github-action","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-java-auth-check","kind":"art","label":"cap-java-auth-check","ring":"independent","href":"/cap/artifacts/miyasuta-cap-java-auth-check","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-java-child","kind":"art","label":"cap-java-child","ring":"independent","href":"/cap/artifacts/miyasuta-cap-java-child","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-java-draft-composition-delete","kind":"art","label":"cap-java-draft-composition-delete","ring":"independent","href":"/cap/artifacts/miyasuta-cap-java-draft-composition-delete","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-java-parent-pom-sample","kind":"art","label":"cap-java-parent-pom-sample","ring":"independent","href":"/cap/artifacts/miyasuta-cap-java-parent-pom-sample","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-java-resilience","kind":"art","label":"cap-java-resilience","ring":"independent","href":"/cap/artifacts/miyasuta-cap-java-resilience","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-java-snippets","kind":"art","label":"cap-java-snippets","ring":"independent","href":"/cap/artifacts/miyasuta-cap-java-snippets","icon":"doc-source","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-js-notifications","kind":"art","label":"cap-js-notifications","ring":"independent","href":"/cap/artifacts/miyasuta-cap-js-notifications","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-media","kind":"art","label":"cap-media","ring":"independent","href":"/cap/artifacts/miyasuta-cap-media","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-oauth-destination","kind":"art","label":"cap-oauth-destination","ring":"independent","href":"/cap/artifacts/miyasuta-cap-oauth-destination","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-openai","kind":"art","label":"cap-openai","ring":"independent","href":"/cap/artifacts/miyasuta-cap-openai","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-openapi","kind":"art","label":"cap-openapi","ring":"independent","href":"/cap/artifacts/miyasuta-cap-openapi","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-principal-propagation","kind":"art","label":"cap-principal-propagation","ring":"independent","href":"/cap/artifacts/miyasuta-cap-principal-propagation","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-redis","kind":"art","label":"cap-redis","ring":"independent","href":"/cap/artifacts/miyasuta-cap-redis","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-reuse-html5","kind":"art","label":"cap-reuse-html5","ring":"independent","href":"/cap/artifacts/miyasuta-cap-reuse-html5","icon":"sample","homeEco":"cap","ecos":["cap","btp"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-rfc","kind":"art","label":"cap-rfc","ring":"independent","href":"/cap/artifacts/miyasuta-cap-rfc","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-ui","kind":"art","label":"cap-ui","ring":"independent","href":"/cap/artifacts/miyasuta-cap-ui","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cap-vector-hc","kind":"art","label":"cap-vector-hc","ring":"independent","href":"/cap/artifacts/miyasuta-cap-vector-hc","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cds-feature-softdelete","kind":"art","label":"cds-feature-softdelete","ring":"independent","href":"/cap/artifacts/miyasuta-cds-feature-softdelete","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-cds-softdelete-plugin","kind":"art","label":"cds-softdelete-plugin","ring":"independent","href":"/cap/artifacts/miyasuta-cds-softdelete-plugin","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-claude-drawio-btp-diagram","kind":"art","label":"drawio-btp-diagram-skills","ring":"independent","href":"/btp/artifacts/miyasuta-claude-drawio-btp-diagram","icon":"skill","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:miyasuta-fiori-dynamic-feature-control","kind":"art","label":"fiori-dynamic-feature-control","ring":"independent","href":"/cap/artifacts/miyasuta-fiori-dynamic-feature-control","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-fiori-inline-edit","kind":"art","label":"fiori-inline-edit","ring":"independent","href":"/cap/artifacts/miyasuta-fiori-inline-edit","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-fiori-invoke-function","kind":"art","label":"fiori-invoke-function","ring":"independent","href":"/cap/artifacts/miyasuta-fiori-invoke-function","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-fiori-navigation-patterns","kind":"art","label":"fiori-navigation-patterns","ring":"independent","href":"/cap/artifacts/miyasuta-fiori-navigation-patterns","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:miyasuta-generator-ui5-library-af-deploy","kind":"art","label":"generator-ui5-library-af-deploy","ring":"independent","href":"/ui5/artifacts/miyasuta-generator-ui5-library-af-deploy","icon":"generator","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:miyasuta-ui5-upload-controls","kind":"art","label":"ui5-upload-controls","ring":"independent","href":"/ui5/artifacts/miyasuta-ui5-upload-controls","icon":"package","homeEco":"ui5","ecos":["ui5","cap"],"homeEcos":["ui5","cap"]},{"id":"artifact:mkysoft-xlsxreader","kind":"art","label":"mkysoft/xlsxreader","ring":"independent","href":"/abap/artifacts/mkysoft-xlsxreader","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:mkysoft","kind":"actor","label":"Mustafa Kerim Yılmaz","href":"/actors/mkysoft","icon":"actor","initials":"MKY","avatar":"/avatars/mkysoft.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:mkysoft-zstrust","kind":"art","label":"zstrust","ring":"independent","href":"/abap/artifacts/mkysoft-zstrust","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:monstermichl-handlebarsabap","kind":"art","label":"HandlebarsABAP","ring":"independent","href":"/abap/artifacts/monstermichl-handlebarsabap","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:monstermichl","kind":"actor","label":"Michel","href":"/actors/monstermichl","icon":"actor","initials":"M","avatar":"/avatars/monstermichl.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:mpah-enum-value-help","kind":"art","label":"@mpah/enum-value-help","ring":"independent","href":"/cap/artifacts/mpah-enum-value-help","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:mpah","kind":"actor","label":"Maksim Pahlberg","href":"/actors/mpah","icon":"actor","initials":"MP","avatar":"/avatars/mpah.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:mrbandler-cds-routing-handlers","kind":"art","label":"cds-routing-handlers","ring":"independent","href":"/cap/artifacts/mrbandler-cds-routing-handlers","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:mrbandler","kind":"actor","label":"mrbandler","href":"/actors/mrbandler","icon":"actor","initials":"M","avatar":"/avatars/mrbandler.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:mrbandler-cds2types","kind":"art","label":"cds2types","ring":"independent","href":"/cap/artifacts/mrbandler-cds2types","icon":"cli","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:mubuntu-cap-handler-framework","kind":"art","label":"cap-handler-framework","ring":"independent","href":"/cap/artifacts/mubuntu-cap-handler-framework","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:mubuntu","kind":"actor","label":"Patrick frison","href":"/actors/mubuntu","icon":"actor","initials":"PF","avatar":"/avatars/mubuntu.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:muhammad-abdullah333-sap-mcp-bridge","kind":"art","label":"SAP MCP Connection Manager","ring":"independent","href":"/abap/artifacts/muhammad-abdullah333-sap-mcp-bridge","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:muhammad-abdullah333","kind":"actor","label":"Muhammad Abdullah","href":"/actors/muhammad-abdullah333","icon":"actor","initials":"MA","avatar":"/avatars/muhammad-abdullah333.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:murattahtaciii-abap-architect","kind":"art","label":"ABAP Architect","ring":"independent","href":"/abap/artifacts/murattahtaciii-abap-architect","icon":"ide-extension","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:murattahtaciii","kind":"actor","label":"Murat Tahtacı","href":"/actors/murattahtaciii","icon":"actor","initials":"MT","avatar":"/avatars/murattahtaciii.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:nagarjundas1994-aiagents-cds-agents","kind":"art","label":"cds-agents","ring":"independent","href":"/cap/artifacts/nagarjundas1994-aiagents-cds-agents","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:nagarjundas1994-aiagents","kind":"actor","label":"NAGARJUN DAS","href":"/actors/nagarjundas1994-aiagents","icon":"actor","initials":"ND","avatar":"/avatars/nagarjundas1994-aiagents.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:nagarjundas1994-aiagents-cds-validate","kind":"art","label":"cds-validate","ring":"independent","href":"/cap/artifacts/nagarjundas1994-aiagents-cds-validate","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:navinkrishnan-cds-incidents-sample","kind":"art","label":"cds-incidents-sample","ring":"independent","href":"/cap/artifacts/navinkrishnan-cds-incidents-sample","icon":"generator","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:navinkrishnan","kind":"actor","label":"Navin Krishnan","href":"/actors/navinkrishnan","icon":"actor","initials":"NK","avatar":"/avatars/navinkrishnan.png","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"artifact:neoimpulse-cap-js-bootstrap","kind":"art","label":"@neoimpulse/cap-js-bootstrap","ring":"independent","href":"/cap/artifacts/neoimpulse-cap-js-bootstrap","icon":"cli","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:neoimpulse","kind":"actor","label":"neoimpulse GmbH","href":"/actors/neoimpulse","icon":"actor","initials":"NG","ring":"independent","avatar":"/avatars/neoimpulse.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:neoimpulse-cap-js-mcp","kind":"art","label":"@neoimpulse/cap-js-mcp","ring":"independent","href":"/cap/artifacts/neoimpulse-cap-js-mcp","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:neoimpulse-cap-js-notifications","kind":"art","label":"@neoimpulse/cap-js-notifications","ring":"independent","href":"/cap/artifacts/neoimpulse-cap-js-notifications","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:neoimpulse-cap-js-restore-model-defined-types","kind":"art","label":"@neoimpulse/cap-js-restore-model-defined-types","ring":"independent","href":"/cap/artifacts/neoimpulse-cap-js-restore-model-defined-types","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:neoimpulse-cap-js-trim","kind":"art","label":"@neoimpulse/cap-js-trim","ring":"independent","href":"/cap/artifacts/neoimpulse-cap-js-trim","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:neoimpulse-cap-js-uppercase","kind":"art","label":"@neoimpulse/cap-js-uppercase","ring":"independent","href":"/cap/artifacts/neoimpulse-cap-js-uppercase","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:neoimpulse-cap-js-xml-protocol","kind":"art","label":"@neoimpulse/cap-js-xml-protocol","ring":"independent","href":"/cap/artifacts/neoimpulse-cap-js-xml-protocol","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:nickels-sap-ai-docs-mcp","kind":"art","label":"sap-ai-docs-mcp","ring":"independent","href":"/btp/artifacts/nickels-sap-ai-docs-mcp","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:nickels-sap-btp-docs-mcp","kind":"art","label":"sap-btp-docs-mcp","ring":"independent","href":"/btp/artifacts/nickels-sap-btp-docs-mcp","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:nicohern-abapilot-mcp","kind":"art","label":"ABAPilot","ring":"independent","href":"/abap/artifacts/nicohern-abapilot-mcp","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:nicohern","kind":"actor","label":"Nicolas","href":"/actors/nicohern","icon":"actor","initials":"N","avatar":"/avatars/nicohern.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:oberstvongatow-abapgenerator","kind":"art","label":"AbapGenerator","ring":"independent","href":"/abap/artifacts/oberstvongatow-abapgenerator","icon":"generator","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:oberstvongatow","kind":"actor","label":"Fabian","href":"/actors/oberstvongatow","icon":"actor","initials":"F","avatar":"/avatars/oberstvongatow.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:odatano-core-mcp","kind":"art","label":"@odatano/core-mcp","ring":"independent","href":"/cap/artifacts/odatano-core-mcp","icon":"mcp-server","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:odatano-core","kind":"art","label":"@odatano/core","ring":"independent","href":"/cap/artifacts/odatano-core","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:odatano","kind":"actor","label":"ODATANO","href":"/actors/odatano","icon":"actor","initials":"O","ring":"independent","avatar":"/avatars/odatano.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:odatano-nightgate-mcp","kind":"art","label":"@odatano/nightgate-mcp","ring":"independent","href":"/cap/artifacts/odatano-nightgate-mcp","icon":"mcp-server","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:odatano-nightgate","kind":"art","label":"@odatano/nightgate","ring":"independent","href":"/cap/artifacts/odatano-nightgate","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:odatano-watch","kind":"art","label":"@odatano/watch","ring":"independent","href":"/cap/artifacts/odatano-watch","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:oisee-odata-mcp-go","kind":"art","label":"odata_mcp_go","ring":"independent","href":"/btp/artifacts/oisee-odata-mcp-go","icon":"mcp-server","homeEco":"btp","ecos":["btp","abap"],"homeEcos":["btp"]},{"id":"actor:oisee","kind":"actor","label":"Alice V.","href":"/actors/oisee","icon":"actor","initials":"AV","avatar":"/avatars/oisee.png","ecos":["btp","abap","ui5"],"homeEcos":["btp","abap"]},{"id":"artifact:oisee-odata-mcp","kind":"art","label":"odata_mcp","ring":"independent","href":"/btp/artifacts/oisee-odata-mcp","icon":"mcp-server","homeEco":"btp","ecos":["btp","abap"],"homeEcos":["btp"]},{"id":"artifact:oisee-open-steamgate","kind":"art","label":"open-steamgate","ring":"independent","href":"/abap/artifacts/oisee-open-steamgate","icon":"app","homeEco":"abap","ecos":["abap","ui5"],"homeEcos":["abap"]},{"id":"artifact:oisee-vibing-steampunk","kind":"art","label":"vibing-steampunk","ring":"independent","href":"/abap/artifacts/oisee-vibing-steampunk","icon":"mcp-server","homeEco":"abap","ecos":["abap","btp"],"homeEcos":["abap"]},{"id":"artifact:oisee-zllm","kind":"art","label":"zllm","ring":"independent","href":"/abap/artifacts/oisee-zllm","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:oisee-zvdb","kind":"art","label":"zvdb","ring":"independent","href":"/abap/artifacts/oisee-zvdb","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:olegbash599-anytabupdatetask","kind":"art","label":"AnyTabUpdateTask","ring":"independent","href":"/abap/artifacts/olegbash599-anytabupdatetask","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:olegbash599","kind":"actor","label":"OlegBash599","href":"/actors/olegbash599","icon":"actor","initials":"O","avatar":"/avatars/olegbash599.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:olegbash599-zc8a-001","kind":"art","label":"ZC8A_001","ring":"independent","href":"/abap/artifacts/olegbash599-zc8a-001","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:olegbash599-zcts-browser","kind":"art","label":"ZCTS_BROWSER","ring":"independent","href":"/abap/artifacts/olegbash599-zcts-browser","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:onurakca-sapui5-adaptation-project-downloader","kind":"art","label":"onurakca/SAPUI5-Adaptation-Project-Downloader","ring":"independent","href":"/abap/artifacts/onurakca-sapui5-adaptation-project-downloader","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:onurakca","kind":"actor","label":"Onur Akça","href":"/actors/onurakca","icon":"actor","initials":"OA","avatar":"/avatars/onurakca.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:open-abap-cross-http-client","kind":"art","label":"cross-http-client","ring":"community-org","href":"/abap/artifacts/open-abap-cross-http-client","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:open-abap","kind":"actor","label":"open-abap","href":"/actors/open-abap","icon":"actor","initials":"OA","ring":"community-org","avatar":"/avatars/open-abap.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:open-abap-express-icf-shim","kind":"art","label":"express-icf-shim","ring":"community-org","href":"/abap/artifacts/open-abap-express-icf-shim","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:open-abap-open-abap-bal","kind":"art","label":"open-abap-bal","ring":"community-org","href":"/abap/artifacts/open-abap-open-abap-bal","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:open-abap-open-abap-core","kind":"art","label":"open-abap-core","ring":"community-org","href":"/abap/artifacts/open-abap-open-abap-core","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:open-abap-open-abap-gui","kind":"art","label":"open-abap-gui","ring":"community-org","href":"/abap/artifacts/open-abap-open-abap-gui","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:open-abap-open-abap-lock","kind":"art","label":"open-abap-lock","ring":"community-org","href":"/abap/artifacts/open-abap-open-abap-lock","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:open-abap-open-abap-odata","kind":"art","label":"open-abap-odata","ring":"community-org","href":"/abap/artifacts/open-abap-open-abap-odata","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:open-abap-open-abap-pdf","kind":"art","label":"open-abap-pdf","ring":"community-org","href":"/abap/artifacts/open-abap-open-abap-pdf","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:open-abap-open-table-maintenance","kind":"art","label":"open-table-maintenance","ring":"community-org","href":"/abap/artifacts/open-abap-open-table-maintenance","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:openui5-core","kind":"art","label":"@openui5/sap.ui.core","ring":"sap-official","href":"/ui5/artifacts/openui5-core","icon":"package","homeEco":"ui5","ecos":["ui5","abap"],"homeEcos":["ui5"]},{"id":"artifact:pacroy-abap-fluentd","kind":"art","label":"abap-fluentd","ring":"independent","href":"/abap/artifacts/pacroy-abap-fluentd","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:pacroy","kind":"actor","label":"Chairat Onyaem (Par)","href":"/actors/pacroy","icon":"actor","initials":"CO(","avatar":"/avatars/pacroy.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:pacroy-abap-prometheus","kind":"art","label":"abap-prometheus","ring":"independent","href":"/abap/artifacts/pacroy-abap-prometheus","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:patimweb-pi-cap-bestpractices","kind":"art","label":"@patimweb/pi-cap-bestpractices","ring":"independent","href":"/cap/artifacts/patimweb-pi-cap-bestpractices","icon":"skill","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:smotherer007","kind":"actor","label":"patimweb","href":"/actors/smotherer007","icon":"actor","initials":"P","avatar":"/avatars/smotherer007.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:pawelwiejkut-bw-remove-characters","kind":"art","label":"pawelwiejkut/bw_remove_characters","ring":"independent","href":"/abap/artifacts/pawelwiejkut-bw-remove-characters","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:pawelwiejkut","kind":"actor","label":"Paweł Wiejkut","href":"/actors/pawelwiejkut","icon":"actor","initials":"PW","avatar":"/avatars/pawelwiejkut.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:pawelwiejkut-bw-trfn-pocketknife","kind":"art","label":"pawelwiejkut/bw_trfn_pocketknife","ring":"independent","href":"/abap/artifacts/pawelwiejkut-bw-trfn-pocketknife","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:peterlangner-zrss","kind":"art","label":"peterlangner/zrss","ring":"independent","href":"/abap/artifacts/peterlangner-zrss","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:peterlangner","kind":"actor","label":"Peter Langner","href":"/actors/peterlangner","icon":"actor","initials":"PL","avatar":"/avatars/peterlangner.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:pokrakam-abapdevsysinit","kind":"art","label":"pokrakam/abapDevSysInit","ring":"independent","href":"/abap/artifacts/pokrakam-abapdevsysinit","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:pokrakam","kind":"actor","label":"Mike Pokraka","href":"/actors/pokrakam","icon":"actor","initials":"MP","avatar":"/avatars/pokrakam.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:preetamkajalrout-ui5-middleware-destination","kind":"art","label":"ui5-middleware-destination","ring":"independent","href":"/ui5/artifacts/preetamkajalrout-ui5-middleware-destination","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:preetamkajalrout","kind":"actor","label":"Preetam Kajal Rout","href":"/actors/preetamkajalrout","icon":"actor","initials":"PKR","avatar":"/avatars/preetamkajalrout.png","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"artifact:pulseshift-ui5-lib-visualization","kind":"art","label":"ui5-lib-visualization","ring":"independent","href":"/ui5/artifacts/pulseshift-ui5-lib-visualization","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:pulseshift","kind":"actor","label":"PulseShift","href":"/actors/pulseshift","icon":"actor","initials":"P","ring":"independent","avatar":"/avatars/pulseshift.png","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"artifact:pwasem-cds-plugin-typescript","kind":"art","label":"cds-plugin-typescript","ring":"independent","href":"/cap/artifacts/pwasem-cds-plugin-typescript","icon":"build-tool","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:pwasem","kind":"actor","label":"Pascal Wasem","href":"/actors/pwasem","icon":"actor","initials":"PW","avatar":"/avatars/pwasem.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:quadrio-cds-db2","kind":"art","label":"@quadrio/cds-db2","ring":"independent","href":"/cap/artifacts/quadrio-cds-db2","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:quadrio-cds-dbm","kind":"art","label":"@quadrio/cds-dbm","ring":"independent","href":"/cap/artifacts/quadrio-cds-dbm","icon":"cli","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:quadrio","kind":"actor","label":"QuadriO Beratungsgesellschaft mbH","href":"/actors/quadrio","icon":"actor","initials":"QBM","ring":"independent","avatar":"/avatars/quadrio.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:qualiture-audit-summary","kind":"art","label":"audit-summary","ring":"independent","href":"/artifacts/qualiture-audit-summary","icon":"cli","ecos":["cap","ui5"]},{"id":"actor:qualiture","kind":"actor","label":"Robin van het Hof","href":"/actors/qualiture","icon":"actor","initials":"RVH","ecos":["cap","ui5","btp"],"homeEcos":["btp","cap","ui5"]},{"id":"artifact:qualiture-basenvsync","kind":"art","label":"BASEnvSync","ring":"independent","href":"/btp/artifacts/qualiture-basenvsync","icon":"ide-extension","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:qualiture-enforce-export-coverage","kind":"art","label":"enforce-export-coverage","ring":"independent","href":"/artifacts/qualiture-enforce-export-coverage","icon":"cli","ecos":["cap"]},{"id":"artifact:qualiture-git-env-branches","kind":"art","label":"git-env-branches","ring":"independent","href":"/artifacts/qualiture-git-env-branches","icon":"cli","ecos":["cap","ui5"]},{"id":"artifact:qualiture-hana-linter","kind":"art","label":"hana-linter","ring":"independent","href":"/cap/artifacts/qualiture-hana-linter","icon":"cli","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:qualiture-ui5-task-check-eocp","kind":"art","label":"ui5-task-check-eocp","ring":"independent","href":"/ui5/artifacts/qualiture-ui5-task-check-eocp","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:rabestro-sap-cds-erd","kind":"art","label":"sap-cds-erd","ring":"independent","href":"/cap/artifacts/rabestro-sap-cds-erd","icon":"cli","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:rabestro","kind":"actor","label":"Jegors Čemisovs","href":"/actors/rabestro","icon":"actor","initials":"JČ","avatar":"/avatars/rabestro.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:rahulsethi-sap-bdc-mcp","kind":"art","label":"sap-bdc-mcp","ring":"independent","href":"/btp/artifacts/rahulsethi-sap-bdc-mcp","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"actor:rahulsethi","kind":"actor","label":"Rahul Sethi","href":"/actors/rahulsethi","icon":"actor","initials":"RS","avatar":"/avatars/rahulsethi.png","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"artifact:rahulsethi-sap-datasphere-mcp","kind":"art","label":"mcp-sap-datasphere-server","ring":"independent","href":"/btp/artifacts/rahulsethi-sap-datasphere-mcp","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:raketenstart-abap-abap-feature-toggle","kind":"art","label":"abap-feature-toggle","ring":"independent","href":"/abap/artifacts/raketenstart-abap-abap-feature-toggle","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:raketenstart-abap","kind":"actor","label":"raketenstart-abap","href":"/actors/raketenstart-abap","icon":"actor","initials":"RA","ring":"independent","avatar":"/avatars/raketenstart-abap.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:raketenstart-abap-abap-tvarvc","kind":"art","label":"abap-tvarvc","ring":"independent","href":"/abap/artifacts/raketenstart-abap-abap-tvarvc","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:rayatus-abapgit-commitlint","kind":"art","label":"abapgit-commitlint","ring":"independent","href":"/abap/artifacts/rayatus-abapgit-commitlint","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:rayatus","kind":"actor","label":"Jorge Sancho","href":"/actors/rayatus","icon":"actor","initials":"JS","avatar":"/avatars/rayatus.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:rdisomma-ui5x","kind":"art","label":"UI5X","ring":"independent","href":"/ui5/artifacts/rdisomma-ui5x","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:rdisomma","kind":"actor","label":"Raffaele Di Somma","href":"/actors/rdisomma","icon":"actor","initials":"RDS","avatar":"/avatars/rdisomma.png","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"artifact:regestaitalia-trm-server","kind":"art","label":"trm-server","ring":"independent","href":"/abap/artifacts/regestaitalia-trm-server","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:regestaitalia","kind":"actor","label":"RegGitHub","href":"/actors/regestaitalia","icon":"actor","initials":"R","ring":"independent","avatar":"/avatars/regestaitalia.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:reyemsaibot-qtt","kind":"art","label":"qtt","ring":"independent","href":"/abap/artifacts/reyemsaibot-qtt","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:reyemsaibot","kind":"actor","label":"Tobias Meyer","href":"/actors/reyemsaibot","icon":"actor","initials":"TM","avatar":"/avatars/reyemsaibot.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:reyemsaibot-scf","kind":"art","label":"Source Code Finder","ring":"independent","href":"/abap/artifacts/reyemsaibot-scf","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:rizing-cds-customer-stepbystep-tool","kind":"art","label":"@rizing/cds-customer-stepbystep-tool","ring":"independent","href":"/cap/artifacts/rizing-cds-customer-stepbystep-tool","icon":"generator","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:rizing-cds-extension","kind":"art","label":"@rizing/cds-extension","ring":"partner","href":"/cap/artifacts/rizing-cds-extension","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:rku-it-gmbh-cds2alv","kind":"art","label":"cds2alv","ring":"independent","href":"/abap/artifacts/rku-it-gmbh-cds2alv","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:rku-it-gmbh","kind":"actor","label":"rku.it GmbH","href":"/actors/rku-it-gmbh","icon":"actor","initials":"RG","ring":"independent","avatar":"/avatars/rku-it-gmbh.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:robertriedel-pod2-config-skill","kind":"art","label":"pod2-config","ring":"independent","href":"/digital-manufacturing/artifacts/robertriedel-pod2-config-skill","icon":"skill","homeEco":"digital-manufacturing","ecos":["digital-manufacturing"],"homeEcos":["digital-manufacturing"]},{"id":"actor:robertriedel","kind":"actor","label":"robertriedel","href":"/actors/robertriedel","icon":"actor","initials":"R","avatar":"/avatars/robertriedel.png","ecos":["digital-manufacturing"],"homeEcos":["digital-manufacturing"],"homeEco":"digital-manufacturing"},{"id":"artifact:romankorim-sap-mcp-server","kind":"art","label":"sap-mcp-server","ring":"independent","href":"/abap/artifacts/romankorim-sap-mcp-server","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:romankorim","kind":"actor","label":"romankorim","href":"/actors/romankorim","icon":"actor","initials":"R","avatar":"/avatars/romankorim.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:root3287-cap-segw","kind":"art","label":"@root3287/cap-segw","ring":"independent","href":"/cap/artifacts/root3287-cap-segw","icon":"build-tool","homeEco":"cap","ecos":["cap","abap"],"homeEcos":["cap"]},{"id":"actor:root3287","kind":"actor","label":"Timothy Gibbons","href":"/actors/root3287","icon":"actor","initials":"TG","avatar":"/avatars/root3287.png","ecos":["cap","abap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:salvatorelaspata-cap-plugin-adobe-forms","kind":"art","label":"@salvatorela/cap-plugin-adobe-forms","ring":"independent","href":"/cap/artifacts/salvatorelaspata-cap-plugin-adobe-forms","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:salvatorelaspata","kind":"actor","label":"SalvatoreLa","href":"/actors/salvatorelaspata","icon":"actor","initials":"S","avatar":"/avatars/salvatorelaspata.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:sang2x-captools","kind":"art","label":"@sang2x/captools","ring":"independent","href":"/cap/artifacts/sang2x-captools","icon":"cli","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sanjay-sde-cap-js-log-control","kind":"art","label":"@sanjay-sde/cap-js-log-control","ring":"independent","href":"/cap/artifacts/sanjay-sde-cap-js-log-control","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:sanjaybabusp","kind":"actor","label":"SanjayBabu SP","href":"/actors/sanjaybabusp","icon":"actor","initials":"SS","avatar":"/avatars/sanjaybabusp.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:sanoberrehman-cap-mcp-bridge","kind":"art","label":"cap-mcp-bridge","ring":"independent","href":"/cap/artifacts/sanoberrehman-cap-mcp-bridge","icon":"mcp-server","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:sanoberrehman","kind":"actor","label":"Sanober","href":"/actors/sanoberrehman","icon":"actor","initials":"S","avatar":"/avatars/sanoberrehman.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:sap-abap-ai-sdk","kind":"art","label":"ABAP AI SDK","ring":"sap-official","href":"/abap/artifacts/sap-abap-ai-sdk","icon":"platform","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-abap-atc-cr-cv-s4hc","kind":"art","label":"Cloudification Repository","ring":"sap-official","href":"/abap/artifacts/sap-abap-atc-cr-cv-s4hc","icon":"web-tool","homeEco":"abap","ecos":["abap","btp","cap"],"homeEcos":["abap"]},{"id":"artifact:sap-abap-file-formats","kind":"art","label":"abap-file-formats","ring":"sap-official","href":"/abap/artifacts/sap-abap-file-formats","icon":"practice","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-abap-to-json","kind":"art","label":"ABAP to JSON serializer and deserializer","ring":"sap-official","href":"/abap/artifacts/sap-abap-to-json","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-adt-eclipse","kind":"art","label":"ABAP Development Tools for Eclipse","ring":"sap-official","href":"/abap/artifacts/sap-adt-eclipse","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-adt-mcp-server","kind":"art","label":"ADT MCP Server","ring":"sap-official","href":"/abap/artifacts/sap-adt-mcp-server","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-adt-vscode","kind":"art","label":"ABAP Development Tools for VS Code","ring":"sap-official","href":"/abap/artifacts/sap-adt-vscode","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-adt","kind":"art","label":"ADT resources","ring":"sap-official","href":"/abap/artifacts/sap-adt","icon":"platform","homeEco":"abap","ecos":["abap","btp"],"homeEcos":["abap"]},{"id":"artifact:sap-ai-sdk-ai-api","kind":"art","label":"@sap-ai-sdk/ai-api","ring":"sap-official","href":"/cap/artifacts/sap-ai-sdk-ai-api","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-ai-sdk-core","kind":"art","label":"@sap-ai-sdk/core","ring":"sap-official","href":"/cap/artifacts/sap-ai-sdk-core","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-ai-sdk-foundation-models","kind":"art","label":"@sap-ai-sdk/foundation-models","ring":"sap-official","href":"/cap/artifacts/sap-ai-sdk-foundation-models","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-ai-sdk-orchestration","kind":"art","label":"@sap-ai-sdk/orchestration","ring":"sap-official","href":"/cap/artifacts/sap-ai-sdk-orchestration","icon":"package","homeEco":"cap","ecos":["cap","ui5"],"homeEcos":["cap"]},{"id":"artifact:sap-ai-sdk-prompt-registry","kind":"art","label":"@sap-ai-sdk/prompt-registry","ring":"sap-official","href":"/cap/artifacts/sap-ai-sdk-prompt-registry","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-aicore-skills","kind":"art","label":"aicore-skills","ring":"sap-official","href":"/btp/artifacts/sap-aicore-skills","icon":"skill","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-ams-dev","kind":"art","label":"@sap/ams-dev","ring":"sap-official","href":"/cap/artifacts/sap-ams-dev","icon":"build-tool","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-ams","kind":"art","label":"@sap/ams","ring":"sap-official","href":"/cap/artifacts/sap-ams","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-appfront-cli","kind":"art","label":"@sap/appfront-cli","ring":"sap-official","href":"/cap/artifacts/sap-appfront-cli","icon":"cli","homeEco":"cap","ecos":["cap","btp"],"homeEcos":["cap"]},{"id":"artifact:sap-approuter","kind":"art","label":"@sap/approuter","ring":"sap-official","href":"/btp/artifacts/sap-approuter","icon":"app","homeEco":"btp","ecos":["btp","abap","cap","ui5"],"homeEcos":["btp","abap","cap","ui5"]},{"id":"artifact:sap-archive-digital-manufacturing-test-automation-samples","kind":"art","label":"SAP-archive/digital-manufacturing-test-automation-samples","ring":"sap-official","href":"/digital-manufacturing/artifacts/sap-archive-digital-manufacturing-test-automation-samples","icon":"sample","homeEco":"digital-manufacturing","archived":true,"ecos":["digital-manufacturing"],"homeEcos":["digital-manufacturing"]},{"id":"actor:sap-archive","kind":"actor","label":"SAP Archive","href":"/actors/sap-archive","icon":"actor","initials":"SA","ring":"independent","avatar":"/avatars/sap-archive.png","ecos":["digital-manufacturing","btp"],"homeEcos":["digital-manufacturing","btp"]},{"id":"artifact:sap-artifact-management","kind":"art","label":"@sap/artifact-management","ring":"sap-official","href":"/btp/artifacts/sap-artifact-management","icon":"package","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-automation-pilot-agent-skills","kind":"art","label":"SAP/automation-pilot-agent-skills","ring":"sap-official","href":"/btp/artifacts/sap-automation-pilot-agent-skills","icon":"skill","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-btp-administration-mcp","kind":"art","label":"MCP Server for SAP BTP Administration","ring":"sap-official","href":"/btp/artifacts/sap-btp-administration-mcp","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-btp-setup-automator","kind":"art","label":"btp-setup-automator","ring":"sap-official","href":"/btp/artifacts/sap-btp-setup-automator","icon":"cli","homeEco":"btp","archived":true,"ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-btp-solution-diagrams","kind":"art","label":"SAP BTP Solution Diagram Guidelines","ring":"sap-official","href":"/btp/artifacts/sap-btp-solution-diagrams","icon":"practice","homeEco":"btp","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"artifact:sap-build-code-joule","kind":"art","label":"Joule in SAP Build Code","ring":"sap-official","href":"/cap/artifacts/sap-build-code-joule","icon":"service","homeEco":"cap","ecos":["cap","ui5","btp"],"homeEcos":["cap"]},{"id":"artifact:sap-cds-analytics","kind":"art","label":"@sap/cds-analytics","ring":"sap-official","href":"/cap/artifacts/sap-cds-analytics","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-cds-common-content","kind":"art","label":"@sap/cds-common-content","ring":"sap-official","href":"/cap/artifacts/sap-cds-common-content","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-cds-compiler","kind":"art","label":"@sap/cds-compiler","ring":"sap-official","href":"/cap/artifacts/sap-cds-compiler","icon":"build-tool","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-cds-dk","kind":"art","label":"@sap/cds-dk","ring":"sap-official","href":"/cap/artifacts/sap-cds-dk","icon":"cli","homeEco":"cap","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp"]},{"id":"artifact:sap-cds-fiori","kind":"art","label":"@sap/cds-fiori","ring":"sap-official","href":"/cap/artifacts/sap-cds-fiori","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-cds-hana","kind":"art","label":"@sap/cds-hana","ring":"sap-official","href":"/cap/artifacts/sap-cds-hana","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-cds-lsp","kind":"art","label":"@sap/cds-lsp","ring":"sap-official","href":"/cap/artifacts/sap-cds-lsp","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-cds-mtxs","kind":"art","label":"@sap/cds-mtxs","ring":"sap-official","href":"/cap/artifacts/sap-cds-mtxs","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-cds-oyster","kind":"art","label":"@sap/cds-oyster","ring":"sap-official","href":"/cap/artifacts/sap-cds-oyster","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-cds-rfc","kind":"art","label":"@sap/cds-rfc","ring":"sap-official","href":"/cap/artifacts/sap-cds-rfc","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-cds-textmate-grammar","kind":"art","label":"cds-textmate-grammar","ring":"sap-official","href":"/cap/artifacts/sap-cds-textmate-grammar","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-cds","kind":"art","label":"@sap/cds","ring":"sap-official","href":"/cap/artifacts/sap-cds","icon":"package","homeEco":"cap","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5"]},{"id":"artifact:sap-cloud-connector","kind":"art","label":"Cloud Connector","ring":"sap-official","href":"/btp/artifacts/sap-cloud-connector","icon":"app","homeEco":"btp","ecos":["btp","abap","cap"],"homeEcos":["btp","abap","cap"]},{"id":"artifact:sap-cloud-sdk-connectivity","kind":"art","label":"@sap-cloud-sdk/connectivity","ring":"sap-official","href":"/cap/artifacts/sap-cloud-sdk-connectivity","icon":"package","homeEco":"cap","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"artifact:sap-cloud-sdk-http-client","kind":"art","label":"@sap-cloud-sdk/http-client","ring":"sap-official","href":"/cap/artifacts/sap-cloud-sdk-http-client","icon":"package","homeEco":"cap","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap"]},{"id":"artifact:sap-cloud-sdk-odata-common","kind":"art","label":"@sap-cloud-sdk/odata-common","ring":"sap-official","href":"/cap/artifacts/sap-cloud-sdk-odata-common","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-cloud-sdk-openapi","kind":"art","label":"@sap-cloud-sdk/openapi","ring":"sap-official","href":"/cap/artifacts/sap-cloud-sdk-openapi","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-cloud-sdk-resilience","kind":"art","label":"@sap-cloud-sdk/resilience","ring":"sap-official","href":"/cap/artifacts/sap-cloud-sdk-resilience","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-cloud-sdk-util","kind":"art","label":"@sap-cloud-sdk/util","ring":"sap-official","href":"/cap/artifacts/sap-cloud-sdk-util","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-code-pal-for-abap-cloud","kind":"art","label":"code pal for ABAP — Cloud Edition","ring":"sap-official","href":"/abap/artifacts/sap-code-pal-for-abap-cloud","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-code-pal-for-abap","kind":"art","label":"code pal for ABAP","ring":"sap-official","href":"/abap/artifacts/sap-code-pal-for-abap","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-developers-mcp","kind":"art","label":"SAP Developers MCP","ring":"sap-official","href":"/artifacts/sap-developers-mcp","icon":"mcp-server","ecos":["cap","abap","ui5","btp"]},{"id":"actor:sap-tutorials","kind":"actor","label":"SAP Tutorials","href":"/actors/sap-tutorials","icon":"actor","initials":"ST","ring":"independent","avatar":"/avatars/sap-tutorials.png","ecos":["cap","abap","ui5","btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"artifact:sap-e2e-trace","kind":"art","label":"@sap/e2e-trace","ring":"sap-official","href":"/btp/artifacts/sap-e2e-trace","icon":"package","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-eslint-plugin-cds","kind":"art","label":"@sap/eslint-plugin-cds","ring":"sap-official","href":"/cap/artifacts/sap-eslint-plugin-cds","icon":"build-tool","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-fiori-guidelines","kind":"art","label":"sap-fiori-guidelines","ring":"sap-official","href":"/ui5/artifacts/sap-fiori-guidelines","icon":"skill","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-fiori-ios","kind":"art","label":"sap-fiori-ios","ring":"sap-official","href":"/btp/artifacts/sap-fiori-ios","icon":"skill","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-generator-cap-project","kind":"art","label":"@sap/generator-cap-project","ring":"sap-official","href":"/cap/artifacts/sap-generator-cap-project","icon":"generator","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-generator-cds","kind":"art","label":"@sap/generator-cds","ring":"sap-official","href":"/cap/artifacts/sap-generator-cds","icon":"generator","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-generator-fiori","kind":"art","label":"@sap/generator-fiori","ring":"sap-official","href":"/cap/artifacts/sap-generator-fiori","icon":"generator","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-hana-client","kind":"art","label":"@sap/hana-client","ring":"sap-official","href":"/btp/artifacts/sap-hana-client","icon":"package","homeEco":"btp","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"artifact:sap-hana","kind":"art","label":"SAP HANA","ring":"sap-official","href":"/btp/artifacts/sap-hana","icon":"platform","homeEco":"btp","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","abap","cap"]},{"id":"artifact:sap-hdi-deploy","kind":"art","label":"@sap/hdi-deploy","ring":"sap-official","href":"/cap/artifacts/sap-hdi-deploy","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-joule-for-developers","kind":"art","label":"SAP Joule for Developers, ABAP AI capabilities","ring":"sap-official","href":"/abap/artifacts/sap-joule-for-developers","icon":"service","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-joule-studio-classic","kind":"art","label":"Joule Studio, classic edition","ring":"sap-official","href":"/btp/artifacts/sap-joule-studio-classic","icon":"service","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp"]},{"id":"artifact:sap-joule-studio-cli","kind":"art","label":"@sap/joule-studio-cli","ring":"sap-official","href":"/btp/artifacts/sap-joule-studio-cli","icon":"cli","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp"]},{"id":"artifact:sap-joule-studio","kind":"art","label":"Joule Studio","ring":"sap-official","href":"/artifacts/sap-joule-studio","icon":"web-tool","ecos":["btp","cap","ui5"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"artifact:sap-joule-work-dev-cli","kind":"art","label":"@sap/joule-work-dev-cli-early-adopters","ring":"sap-official","href":"/btp/artifacts/sap-joule-work-dev-cli","icon":"cli","homeEco":"btp","ecos":["btp","cap","ui5"],"homeEcos":["btp"]},{"id":"artifact:sap-joule-work","kind":"art","label":"Joule Work","ring":"sap-official","href":"/artifacts/sap-joule-work","icon":"web-tool","ecos":["btp"]},{"id":"artifact:sap-joule","kind":"art","label":"SAP Joule","ring":"sap-official","href":"/btp/artifacts/sap-joule","icon":"service","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp"]},{"id":"artifact:sap-leanix-ai-plugins","kind":"art","label":"SAP/leanix-ai-plugins","ring":"sap-official","href":"/btp/artifacts/sap-leanix-ai-plugins","icon":"skill","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-leanix-mcp-server","kind":"art","label":"SAP LeanIX MCP Server","ring":"sap-official","href":"/btp/artifacts/sap-leanix-mcp-server","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-mdk-mcp-server","kind":"art","label":"@sap/mdk-mcp-server","ring":"sap-official","href":"/btp/artifacts/sap-mdk-mcp-server","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-mdk-tools","kind":"art","label":"@sap/mdk-tools","ring":"sap-official","href":"/btp/artifacts/sap-mdk-tools","icon":"cli","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-russia-zrs-abap-source-scan","kind":"art","label":"sap-russia/ZRS_ABAP_SOURCE_SCAN","ring":"independent","href":"/abap/artifacts/sap-russia-zrs-abap-source-scan","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:sap-russia","kind":"actor","label":"SAP Russia","href":"/actors/sap-russia","icon":"actor","initials":"SR","ring":"independent","avatar":"/avatars/sap-russia.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:sap-samples-abap-alv-google-upload-sheet","kind":"art","label":"SAP-samples/abap-alv-google-upload-sheet","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-alv-google-upload-sheet","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:sap-samples","kind":"actor","label":"SAP Samples","href":"/actors/sap-samples","icon":"actor","initials":"SS","ring":"sap-official","avatar":"/avatars/sap-samples.png","ecos":["abap","ui5","btp","cap","digital-manufacturing"],"homeEcos":["abap","ui5","btp","cap","digital-manufacturing"]},{"id":"artifact:sap-samples-abap-cheat-sheets","kind":"art","label":"SAP-samples/abap-cheat-sheets","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-cheat-sheets","icon":"doc-source","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-file-uploader","kind":"art","label":"abap-file-uploader","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-file-uploader","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-partner-reference-application","kind":"art","label":"SAP-samples/abap-partner-reference-application","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-partner-reference-application","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-analytics-data-modeling","kind":"art","label":"SAP-samples/abap-platform-analytics-data-modeling","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-analytics-data-modeling","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-application-jobs","kind":"art","label":"SAP-samples/abap-platform-application-jobs","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-application-jobs","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-bgpf-appl-log-events-side-effects","kind":"art","label":"SAP-samples/abap-platform-bgpf-appl-log-events-side-effects","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-bgpf-appl-log-events-side-effects","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-ccm-workshops","kind":"art","label":"SAP-samples/abap-platform-ccm-workshops","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-ccm-workshops","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-codejam-latest-features-2602","kind":"art","label":"SAP-samples/abap-platform-codejam-latest-features-2602","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-codejam-latest-features-2602","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-fiori-feature-showcase","kind":"art","label":"SAP-samples/abap-platform-fiori-feature-showcase","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-fiori-feature-showcase","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-jak","kind":"art","label":"SAP-samples/abap-platform-jak","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-jak","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-nominated-apis-consumption","kind":"art","label":"SAP-samples/abap-platform-nominated-apis-consumption","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-nominated-apis-consumption","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-rap-transactional-outbox-with-bgpf","kind":"art","label":"SAP-samples/abap-platform-rap-transactional-outbox-with-bgpf","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-rap-transactional-outbox-with-bgpf","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-rap-workshops","kind":"art","label":"SAP-samples/abap-platform-rap-workshops","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-rap-workshops","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-rap100","kind":"art","label":"SAP-samples/abap-platform-rap100","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-rap100","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-rap110","kind":"art","label":"SAP-samples/abap-platform-rap110","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-rap110","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-rap120","kind":"art","label":"SAP-samples/abap-platform-rap120","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-rap120","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-rap130","kind":"art","label":"SAP-samples/abap-platform-rap130","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-rap130","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-rap200","kind":"art","label":"SAP-samples/abap-platform-rap200","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-rap200","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-rap620","kind":"art","label":"SAP-samples/abap-platform-rap620","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-rap620","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-rap630-ext","kind":"art","label":"SAP-samples/abap-platform-rap630-ext","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-rap630-ext","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-rap630","kind":"art","label":"SAP-samples/abap-platform-rap630","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-rap630","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-rap640","kind":"art","label":"SAP-samples/abap-platform-rap640","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-rap640","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-refscen-flight-soap-client","kind":"art","label":"SAP-samples/abap-platform-refscen-flight-soap-client","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-refscen-flight-soap-client","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-refscen-flight-soap-server","kind":"art","label":"abap-platform-refscen-flight-soap-server","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-refscen-flight-soap-server","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-refscen-flight","kind":"art","label":"SAP-samples/abap-platform-refscen-flight","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-refscen-flight","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-reuse-services","kind":"art","label":"abap-platform-reuse-services","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-reuse-services","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-abap-platform-yy","kind":"art","label":"abap-platform-yy","ring":"sap-official","href":"/abap/artifacts/sap-samples-abap-platform-yy","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-adaptation-project-exercises","kind":"art","label":"SAP-samples/adaptation-project-exercises","ring":"sap-official","href":"/ui5/artifacts/sap-samples-adaptation-project-exercises","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-ai-core-samples","kind":"art","label":"ai-core-samples","ring":"sap-official","href":"/btp/artifacts/sap-samples-ai-core-samples","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-ai-enabled-integrations-codejam","kind":"art","label":"ai-enabled-integrations-codejam","ring":"sap-official","href":"/btp/artifacts/sap-samples-ai-enabled-integrations-codejam","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-ai-seamless-integration","kind":"art","label":"SAP-samples/ai-seamless-integration","ring":"sap-official","href":"/ui5/artifacts/sap-samples-ai-seamless-integration","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-aicore-genai-samples","kind":"art","label":"aicore-genai-samples","ring":"sap-official","href":"/btp/artifacts/sap-samples-aicore-genai-samples","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-aicore-multioutput-regression-restaurant-inspections","kind":"art","label":"aicore-multioutput-regression-restaurant-inspections","ring":"sap-official","href":"/btp/artifacts/sap-samples-aicore-multioutput-regression-restaurant-inspections","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-ams-samples-java","kind":"art","label":"SAP-samples/ams-samples-java","ring":"sap-official","href":"/btp/artifacts/sap-samples-ams-samples-java","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-ams-samples-node","kind":"art","label":"SAP-samples/ams-samples-node","ring":"sap-official","href":"/btp/artifacts/sap-samples-ams-samples-node","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-analytics-cloud-rpt15-prediction-demo","kind":"art","label":"analytics-cloud-rpt15-prediction-demo","ring":"sap-official","href":"/btp/artifacts/sap-samples-analytics-cloud-rpt15-prediction-demo","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-analytics-cloud-scim-api-samples","kind":"art","label":"analytics-cloud-scim-api-samples","ring":"sap-official","href":"/btp/artifacts/sap-samples-analytics-cloud-scim-api-samples","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-application-vulnerability-report-scan-user-automation","kind":"art","label":"SAP-samples/application-vulnerability-report-scan-user-automation","ring":"sap-official","href":"/btp/artifacts/sap-samples-application-vulnerability-report-scan-user-automation","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-automation-pilot-examples","kind":"art","label":"SAP-samples/automation-pilot-examples","ring":"sap-official","href":"/btp/artifacts/sap-samples-automation-pilot-examples","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-a2a-dispute-resolution","kind":"art","label":"SAP-samples/btp-a2a-dispute-resolution","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-a2a-dispute-resolution","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-abap-cna","kind":"art","label":"btp-abap-cna","ring":"sap-official","href":"/abap/artifacts/sap-samples-btp-abap-cna","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-btp-admin-guide-samples","kind":"art","label":"btp-admin-guide-samples","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-admin-guide-samples","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-agentic-ai-use-cases","kind":"art","label":"SAP-samples/btp-agentic-ai-use-cases","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-agentic-ai-use-cases","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-ai-bp-access-to-generative-ai-models-cap","kind":"art","label":"Sample CAP Application with SAP Cloud SDK for AI","ring":"sap-official","href":"/cap/artifacts/sap-samples-btp-ai-bp-access-to-generative-ai-models-cap","icon":"sample","homeEco":"cap","ecos":["cap","btp"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-btp-ai-bp-content-filtering-cap","kind":"art","label":"SAP BTP AI Best Practice Demo - Content Filtering - CAP","ring":"sap-official","href":"/cap/artifacts/sap-samples-btp-ai-bp-content-filtering-cap","icon":"sample","homeEco":"cap","ecos":["cap","btp"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-btp-ai-bp-data-masking-cap","kind":"art","label":"SAP BTP AI Best Practice Demo - Data Masking - CAP","ring":"sap-official","href":"/cap/artifacts/sap-samples-btp-ai-bp-data-masking-cap","icon":"sample","homeEco":"cap","ecos":["cap","btp"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-btp-ai-bp-prompt-registry-cap","kind":"art","label":"SAP BTP AI Best Practice Demo - Prompt Registry - CAP","ring":"sap-official","href":"/cap/artifacts/sap-samples-btp-ai-bp-prompt-registry-cap","icon":"sample","homeEco":"cap","ecos":["cap","btp"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-btp-ai-bp-prompt-templating-cap","kind":"art","label":"SAP BTP AI Best Practice Demo - Prompt Templating - CAP","ring":"sap-official","href":"/cap/artifacts/sap-samples-btp-ai-bp-prompt-templating-cap","icon":"sample","homeEco":"cap","ecos":["cap","btp"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-btp-ai-bp-vector-rag-embedding-cap","kind":"art","label":"SAP BTP AI Best Practice Demo - Vector Embedding (RAG) - CAP","ring":"sap-official","href":"/cap/artifacts/sap-samples-btp-ai-bp-vector-rag-embedding-cap","icon":"sample","homeEco":"cap","ecos":["cap","btp"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-btp-ai-bp-vector-rag-query-cap","kind":"art","label":"SAP BTP AI Best Practice Demo - Vector Query (RAG) - CAP","ring":"sap-official","href":"/cap/artifacts/sap-samples-btp-ai-bp-vector-rag-query-cap","icon":"sample","homeEco":"cap","ecos":["cap","btp"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-btp-ai-core-consumption-monitor","kind":"art","label":"SAP-samples/btp-ai-core-consumption-monitor","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-ai-core-consumption-monitor","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-ai-core-usage-monitor","kind":"art","label":"SAP-samples/btp-ai-core-usage-monitor","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-ai-core-usage-monitor","icon":"app","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-aws-monitron","kind":"art","label":"SAP-samples/btp-aws-monitron","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-aws-monitron","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-cap-dox-invoice-validation","kind":"art","label":"SAP-samples/btp-cap-dox-invoice-validation","ring":"sap-official","href":"/cap/artifacts/sap-samples-btp-cap-dox-invoice-validation","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-btp-cap-genai-rag","kind":"art","label":"SAP-samples/btp-cap-genai-rag","ring":"sap-official","href":"/cap/artifacts/sap-samples-btp-cap-genai-rag","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-btp-cap-genai-semantic-search","kind":"art","label":"SAP-samples/btp-cap-genai-semantic-search","ring":"sap-official","href":"/cap/artifacts/sap-samples-btp-cap-genai-semantic-search","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-btp-cloud-connector-setup-automation","kind":"art","label":"btp-cloud-connector-setup-automation","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-cloud-connector-setup-automation","icon":"generator","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-developer-guide-cap","kind":"art","label":"SAP-samples/btp-developer-guide-cap","ring":"sap-official","href":"/cap/artifacts/sap-samples-btp-developer-guide-cap","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-btp-edge-integration-cell-on-azure","kind":"art","label":"btp-edge-integration-cell-on-azure","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-edge-integration-cell-on-azure","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-event-driven-multi-tenant-architecture","kind":"art","label":"SAP-samples/btp-event-driven-multi-tenant-architecture","ring":"sap-official","href":"/cap/artifacts/sap-samples-btp-event-driven-multi-tenant-architecture","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-btp-gen-ai-hub-sdk-samples","kind":"art","label":"btp-gen-ai-hub-sdk-samples","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-gen-ai-hub-sdk-samples","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-hello-world-fiori","kind":"art","label":"btp-hello-world-fiori","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-hello-world-fiori","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-joule-a2a-pro-code-agent","kind":"art","label":"SAP-samples/btp-joule-a2a-pro-code-agent","ring":"sap-official","href":"/cap/artifacts/sap-samples-btp-joule-a2a-pro-code-agent","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-btp-kyma-helloworld","kind":"art","label":"btp-kyma-helloworld","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-kyma-helloworld","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-launchpad-ui-samples","kind":"art","label":"btp-launchpad-ui-samples","ring":"sap-official","href":"/ui5/artifacts/sap-samples-btp-launchpad-ui-samples","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-btp-neo-java-app-migration","kind":"art","label":"btp-neo-java-app-migration","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-neo-java-app-migration","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-onboarding","kind":"art","label":"SAP-samples/btp-onboarding","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-onboarding","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-private-link-approuter","kind":"art","label":"btp-private-link-approuter","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-private-link-approuter","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-resource-consumption-monitor","kind":"art","label":"SAP-samples/btp-resource-consumption-monitor","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-resource-consumption-monitor","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-s4hana-nocode-extension","kind":"art","label":"btp-s4hana-nocode-extension","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-s4hana-nocode-extension","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-secure-development","kind":"art","label":"SAP-samples/btp-secure-development","ring":"sap-official","href":"/cap/artifacts/sap-samples-btp-secure-development","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-btp-service-metadata","kind":"art","label":"btp-service-metadata","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-service-metadata","icon":"doc-source","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-sourcing-decision-board","kind":"art","label":"SAP-samples/btp-sourcing-decision-board","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-sourcing-decision-board","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-spend-analysis","kind":"art","label":"btp-spend-analysis","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-spend-analysis","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-terraform-mooc-terra1","kind":"art","label":"btp-terraform-mooc-terra1","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-terraform-mooc-terra1","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-terraform-samples","kind":"art","label":"btp-terraform-samples","ring":"sap-official","href":"/btp/artifacts/sap-samples-btp-terraform-samples","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-btp-user-management-microservice","kind":"art","label":"btp-user-management-microservice","ring":"sap-official","href":"/cap/artifacts/sap-samples-btp-user-management-microservice","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-cap-agentic-engineered","kind":"art","label":"SAP-samples/cap-agentic-engineered","ring":"sap-official","href":"/cap/artifacts/sap-samples-cap-agentic-engineered","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-cap-bookshop-wdi5","kind":"art","label":"SAP-samples/cap-bookshop-wdi5","ring":"sap-official","href":"/cap/artifacts/sap-samples-cap-bookshop-wdi5","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-cap-cds-hands-on","kind":"art","label":"SAP-samples/cap-cds-hands-on","ring":"sap-official","href":"/cap/artifacts/sap-samples-cap-cds-hands-on","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-cap-hana-exercises-codejam","kind":"art","label":"SAP-samples/cap-hana-exercises-codejam","ring":"sap-official","href":"/cap/artifacts/sap-samples-cap-hana-exercises-codejam","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-cap-local-development-workshop","kind":"art","label":"SAP-samples/cap-local-development-workshop","ring":"sap-official","href":"/cap/artifacts/sap-samples-cap-local-development-workshop","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-cap-microservices-workshop","kind":"art","label":"cap-microservices-workshop","ring":"sap-official","href":"/cap/artifacts/sap-samples-cap-microservices-workshop","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-cap-nodejs-dev-env","kind":"art","label":"cap-nodejs-dev-env","ring":"sap-official","href":"/cap/artifacts/sap-samples-cap-nodejs-dev-env","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-cap-service-integration-codejam","kind":"art","label":"SAP-samples/cap-service-integration-codejam","ring":"sap-official","href":"/cap/artifacts/sap-samples-cap-service-integration-codejam","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-cap-sflight","kind":"art","label":"SAP-samples/cap-sflight","ring":"sap-official","href":"/cap/artifacts/sap-samples-cap-sflight","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-cap-tour-hands-on","kind":"art","label":"SAP-samples/cap-tour-hands-on","ring":"sap-official","href":"/cap/artifacts/sap-samples-cap-tour-hands-on","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-cf-autoscaler-custom-metrics-mtls","kind":"art","label":"cf-autoscaler-custom-metrics-mtls","ring":"sap-official","href":"/btp/artifacts/sap-samples-cf-autoscaler-custom-metrics-mtls","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-cf-mta-examples","kind":"art","label":"cf-mta-examples","ring":"sap-official","href":"/btp/artifacts/sap-samples-cf-mta-examples","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-cf-routing-samples","kind":"art","label":"cf-routing-samples","ring":"sap-official","href":"/btp/artifacts/sap-samples-cf-routing-samples","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-cloud-abap-rap","kind":"art","label":"SAP-samples/cloud-abap-rap","ring":"sap-official","href":"/abap/artifacts/sap-samples-cloud-abap-rap","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-cloud-btp-cli-api-codejam","kind":"art","label":"SAP-samples/cloud-btp-cli-api-codejam","ring":"sap-official","href":"/btp/artifacts/sap-samples-cloud-btp-cli-api-codejam","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-cloud-cap-hana-swapi","kind":"art","label":"SAP-samples/cloud-cap-hana-swapi","ring":"sap-official","href":"/cap/artifacts/sap-samples-cloud-cap-hana-swapi","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-cloud-cap-samples-java","kind":"art","label":"SAP-samples/cloud-cap-samples-java","ring":"sap-official","href":"/cap/artifacts/sap-samples-cloud-cap-samples-java","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-cloud-cf-feature-flags-sample","kind":"art","label":"SAP-samples/cloud-cf-feature-flags-sample","ring":"sap-official","href":"/btp/artifacts/sap-samples-cloud-cf-feature-flags-sample","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-cloud-foundry-runtime-learning-journey","kind":"art","label":"SAP-samples/cloud-foundry-runtime-learning-journey","ring":"sap-official","href":"/cap/artifacts/sap-samples-cloud-foundry-runtime-learning-journey","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-cloud-integration-pipeline-datastore-extension-ui","kind":"art","label":"cloud-integration-pipeline-datastore-extension-ui","ring":"sap-official","href":"/btp/artifacts/sap-samples-cloud-integration-pipeline-datastore-extension-ui","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-cloud-mdk-samples","kind":"art","label":"cloud-mdk-samples","ring":"sap-official","href":"/btp/artifacts/sap-samples-cloud-mdk-samples","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-cloud-mdk-tutorial-samples","kind":"art","label":"cloud-mdk-tutorial-samples","ring":"sap-official","href":"/btp/artifacts/sap-samples-cloud-mdk-tutorial-samples","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-cloud-sample-webhooks","kind":"art","label":"SAP-samples/cloud-sample-webhooks","ring":"sap-official","href":"/btp/artifacts/sap-samples-cloud-sample-webhooks","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-codejam-cap-llm","kind":"art","label":"SAP-samples/codejam-cap-llm","ring":"sap-official","href":"/cap/artifacts/sap-samples-codejam-cap-llm","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-codejam-code-based-agents","kind":"art","label":"SAP-samples/codejam-code-based-agents","ring":"sap-official","href":"/btp/artifacts/sap-samples-codejam-code-based-agents","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-concur-joule-ips-jobs","kind":"art","label":"SAP-samples/concur-joule-ips-jobs","ring":"sap-official","href":"/btp/artifacts/sap-samples-concur-joule-ips-jobs","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-connecting-systems-services-integration-suite-codejam","kind":"art","label":"SAP-samples/connecting-systems-services-integration-suite-codejam","ring":"sap-official","href":"/btp/artifacts/sap-samples-connecting-systems-services-integration-suite-codejam","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-cross-stack-partner-reference-extension","kind":"art","label":"SAP-samples/cross-stack-partner-reference-extension","ring":"sap-official","href":"/abap/artifacts/sap-samples-cross-stack-partner-reference-extension","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-dbt-sap-hana-cloud","kind":"art","label":"dbt-sap-hana-cloud","ring":"sap-official","href":"/btp/artifacts/sap-samples-dbt-sap-hana-cloud","icon":"package","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-digital-manufacturing-extension-samples","kind":"art","label":"SAP-samples/digital-manufacturing-extension-samples","ring":"sap-official","href":"/digital-manufacturing/artifacts/sap-samples-digital-manufacturing-extension-samples","icon":"sample","homeEco":"digital-manufacturing","ecos":["digital-manufacturing","ui5","btp"],"homeEcos":["digital-manufacturing"]},{"id":"artifact:sap-samples-e-mobility-driver-app","kind":"art","label":"SAP-samples/e-mobility-driver-app","ring":"sap-official","href":"/cap/artifacts/sap-samples-e-mobility-driver-app","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-event-driven-integrations-codejam","kind":"art","label":"SAP-samples/event-driven-integrations-codejam","ring":"sap-official","href":"/btp/artifacts/sap-samples-event-driven-integrations-codejam","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-event-hub-cap-samples","kind":"art","label":"SAP-samples/event-hub-cap-samples","ring":"sap-official","href":"/cap/artifacts/sap-samples-event-hub-cap-samples","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-event-mesh-client-java-samples","kind":"art","label":"SAP-samples/event-mesh-client-java-samples","ring":"sap-official","href":"/btp/artifacts/sap-samples-event-mesh-client-java-samples","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-event-mesh-client-nodejs-samples","kind":"art","label":"SAP-samples/event-mesh-client-nodejs-samples","ring":"sap-official","href":"/btp/artifacts/sap-samples-event-mesh-client-nodejs-samples","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-fiori-elements-feature-showcase","kind":"art","label":"SAP-samples/fiori-elements-feature-showcase","ring":"sap-official","href":"/cap/artifacts/sap-samples-fiori-elements-feature-showcase","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-fiori-elements-fpm-exercises-codejam","kind":"art","label":"SAP-samples/fiori-elements-fpm-exercises-codejam","ring":"sap-official","href":"/cap/artifacts/sap-samples-fiori-elements-fpm-exercises-codejam","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-fiori-elements-v4-cap-advanced","kind":"art","label":"SAP-samples/fiori-elements-v4-cap-advanced","ring":"sap-official","href":"/cap/artifacts/sap-samples-fiori-elements-v4-cap-advanced","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-fiori-mcp-server-hands-on","kind":"art","label":"SAP-samples/fiori-mcp-server-hands-on","ring":"sap-official","href":"/ui5/artifacts/sap-samples-fiori-mcp-server-hands-on","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-forms-service-by-adobe-samples","kind":"art","label":"SAP-samples/forms-service-by-adobe-samples","ring":"sap-official","href":"/abap/artifacts/sap-samples-forms-service-by-adobe-samples","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-fundamental-ngx-sample-apps","kind":"art","label":"SAP-samples/fundamental-ngx-sample-apps","ring":"sap-official","href":"/ui5/artifacts/sap-samples-fundamental-ngx-sample-apps","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-generative-ai-codejam","kind":"art","label":"SAP-samples/generative-ai-codejam","ring":"sap-official","href":"/btp/artifacts/sap-samples-generative-ai-codejam","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-hana-apl-apis-runtimes","kind":"art","label":"hana-apl-apis-runtimes","ring":"sap-official","href":"/btp/artifacts/sap-samples-hana-apl-apis-runtimes","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-hana-cf-get-started-trial","kind":"art","label":"SAP-samples/hana-cf-get-started-trial","ring":"sap-official","href":"/btp/artifacts/sap-samples-hana-cf-get-started-trial","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-hana-cli-claude-plugin","kind":"art","label":"SAP-samples/hana-cli-claude-plugin","ring":"sap-official","href":"/btp/artifacts/sap-samples-hana-cli-claude-plugin","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-hana-cloud-modeling-learning-journey","kind":"art","label":"SAP-samples/hana-cloud-modeling-learning-journey","ring":"sap-official","href":"/btp/artifacts/sap-samples-hana-cloud-modeling-learning-journey","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-hana-developer-cli-tool-example","kind":"art","label":"SAP-samples/hana-developer-cli-tool-example","ring":"sap-official","href":"/btp/artifacts/sap-samples-hana-developer-cli-tool-example","icon":"cli","homeEco":"btp","ecos":["btp","cap"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-hana-graph-examples","kind":"art","label":"hana-graph-examples","ring":"sap-official","href":"/btp/artifacts/sap-samples-hana-graph-examples","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-hana-hdbext-promisfied-example","kind":"art","label":"SAP-samples/hana-hdbext-promisfied-example","ring":"sap-official","href":"/btp/artifacts/sap-samples-hana-hdbext-promisfied-example","icon":"package","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-hana-ml-py-codejam","kind":"art","label":"SAP-samples/hana-ml-py-codejam","ring":"sap-official","href":"/btp/artifacts/sap-samples-hana-ml-py-codejam","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-hana-ml-samples","kind":"art","label":"hana-ml-samples","ring":"sap-official","href":"/btp/artifacts/sap-samples-hana-ml-samples","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-hana-shine-xsa","kind":"art","label":"hana-shine-xsa","ring":"sap-official","href":"/btp/artifacts/sap-samples-hana-shine-xsa","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-hda-cross-pm-samples","kind":"art","label":"hda-cross-pm-samples","ring":"sap-official","href":"/btp/artifacts/sap-samples-hda-cross-pm-samples","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-html5-applications-migration-skills-for-sap-btp","kind":"art","label":"SAP-samples/html5-applications-migration-skills-for-sap-btp","ring":"sap-official","href":"/btp/artifacts/sap-samples-html5-applications-migration-skills-for-sap-btp","icon":"skill","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-hxe-hibernate-google-app-engine","kind":"art","label":"hxe-hibernate-google-app-engine","ring":"sap-official","href":"/btp/artifacts/sap-samples-hxe-hibernate-google-app-engine","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-integration-suite-partner-directory-accelerator-for-pipeline-concept","kind":"art","label":"integration-suite-partner-directory-accelerator-for-pipeline-concept","ring":"sap-official","href":"/btp/artifacts/sap-samples-integration-suite-partner-directory-accelerator-for-pipeline-concept","icon":"desktop-app","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-iq-to-hdl-migration","kind":"art","label":"iq-to-hdl-migration","ring":"sap-official","href":"/btp/artifacts/sap-samples-iq-to-hdl-migration","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-joule-a2a-agent-toolkit","kind":"art","label":"SAP-samples/joule-a2a-agent-toolkit","ring":"sap-official","href":"/btp/artifacts/sap-samples-joule-a2a-agent-toolkit","icon":"skill","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-joule-gui-automation-and-integration","kind":"art","label":"SAP-samples/joule-gui-automation-and-integration","ring":"sap-official","href":"/abap/artifacts/sap-samples-joule-gui-automation-and-integration","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-joule-studio-setup-terraform","kind":"art","label":"joule-studio-setup-terraform","ring":"sap-official","href":"/btp/artifacts/sap-samples-joule-studio-setup-terraform","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-liteinventorymanagement","kind":"art","label":"liteinventorymanagement","ring":"sap-official","href":"/cap/artifacts/sap-samples-liteinventorymanagement","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-manage-apis-codejam","kind":"art","label":"SAP-samples/manage-apis-codejam","ring":"sap-official","href":"/btp/artifacts/sap-samples-manage-apis-codejam","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-multi-cloud-html5-apps-samples","kind":"art","label":"SAP-samples/multi-cloud-html5-apps-samples","ring":"sap-official","href":"/btp/artifacts/sap-samples-multi-cloud-html5-apps-samples","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-odata-dd-server","kind":"art","label":"SAP-samples/odata-dd-server","ring":"sap-official","href":"/cap/artifacts/sap-samples-odata-dd-server","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-odbc-driver-for-abap-examples","kind":"art","label":"odbc-driver-for-abap-examples","ring":"sap-official","href":"/abap/artifacts/sap-samples-odbc-driver-for-abap-examples","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-on-stack-partner-reference-extension","kind":"art","label":"SAP-samples/on-stack-partner-reference-extension","ring":"sap-official","href":"/abap/artifacts/sap-samples-on-stack-partner-reference-extension","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-openui5-fhir-sample-app","kind":"art","label":"openui5-fhir-sample-app","ring":"sap-official","href":"/ui5/artifacts/sap-samples-openui5-fhir-sample-app","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-partner-reference-application-extension","kind":"art","label":"SAP-samples/partner-reference-application-extension","ring":"sap-official","href":"/cap/artifacts/sap-samples-partner-reference-application-extension","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-partner-reference-application","kind":"art","label":"SAP-samples/partner-reference-application","ring":"sap-official","href":"/cap/artifacts/sap-samples-partner-reference-application","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-private-link-aws-services","kind":"art","label":"private-link-aws-services","ring":"sap-official","href":"/btp/artifacts/sap-samples-private-link-aws-services","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-recap2026-cap-level-data-federation","kind":"art","label":"SAP-samples/recap2026-cap-level-data-federation","ring":"sap-official","href":"/cap/artifacts/sap-samples-recap2026-cap-level-data-federation","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-s4hana-avc-ui-extension-template","kind":"art","label":"s4hana-avc-ui-extension-template","ring":"sap-official","href":"/abap/artifacts/sap-samples-s4hana-avc-ui-extension-template","icon":"sample","homeEco":"abap","ecos":["abap","ui5"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-s4hana-gcts-badi","kind":"art","label":"SAP-samples/s4hana-gcts-badi","ring":"sap-official","href":"/abap/artifacts/sap-samples-s4hana-gcts-badi","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-s4hana-hana-audit-policies","kind":"art","label":"s4hana-hana-audit-policies","ring":"sap-official","href":"/btp/artifacts/sap-samples-s4hana-hana-audit-policies","icon":"practice","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-sap-bdc-explore-hyperscaler-data","kind":"art","label":"SAP-samples/sap-bdc-explore-hyperscaler-data","ring":"sap-official","href":"/btp/artifacts/sap-samples-sap-bdc-explore-hyperscaler-data","icon":"doc-source","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-sap-btp-ai-best-practices","kind":"art","label":"sap-btp-ai-best-practices","ring":"sap-official","href":"/btp/artifacts/sap-samples-sap-btp-ai-best-practices","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-sap-concur-user-provisioning-service-apis","kind":"art","label":"sap-concur-user-provisioning-service-apis","ring":"sap-official","href":"/btp/artifacts/sap-samples-sap-concur-user-provisioning-service-apis","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-sap-devs-cli","kind":"art","label":"SAP-samples/sap-devs-cli","ring":"sap-official","href":"/btp/artifacts/sap-samples-sap-devs-cli","icon":"cli","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-sap-genai-hub-with-sap-hana-cloud-vector-engine","kind":"art","label":"sap-genai-hub-with-sap-hana-cloud-vector-engine","ring":"sap-official","href":"/btp/artifacts/sap-samples-sap-genai-hub-with-sap-hana-cloud-vector-engine","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-sap-rpt-samples","kind":"art","label":"sap-rpt-samples","ring":"sap-official","href":"/btp/artifacts/sap-samples-sap-rpt-samples","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-slp-supplier-validation","kind":"art","label":"slp-supplier-validation","ring":"sap-official","href":"/cap/artifacts/sap-samples-slp-supplier-validation","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-smartrecruiters-ai-recruiting-custom-agent","kind":"art","label":"SAP-samples/smartrecruiters-ai-recruiting-custom-agent","ring":"sap-official","href":"/btp/artifacts/sap-samples-smartrecruiters-ai-recruiting-custom-agent","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-spfi-reference-application","kind":"art","label":"SPFI-Reference-Application","ring":"sap-official","href":"/btp/artifacts/sap-samples-spfi-reference-application","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-tailspendmanagement","kind":"art","label":"tailspendmanagement","ring":"sap-official","href":"/cap/artifacts/sap-samples-tailspendmanagement","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-teched2022-dt181","kind":"art","label":"SAP-samples/teched2022-DT181","ring":"sap-official","href":"/ui5/artifacts/sap-samples-teched2022-dt181","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-teched2022-xp260","kind":"art","label":"teched2022-XP260","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2022-xp260","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2022-xp281","kind":"art","label":"SAP-samples/teched2022-XP281","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2022-xp281","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2023-da263","kind":"art","label":"teched2023-DA263","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2023-da263","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2023-dt187v","kind":"art","label":"teched2023-DT187v","ring":"sap-official","href":"/abap/artifacts/sap-samples-teched2023-dt187v","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-teched2023-xp185v","kind":"art","label":"teched2023-XP185v","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2023-xp185v","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2024-in280","kind":"art","label":"teched2024-IN280","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2024-in280","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2024-xp280","kind":"art","label":"SAP-samples/teched2024-XP280","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2024-xp280","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2025-ad162","kind":"art","label":"teched2025-AD162","ring":"sap-official","href":"/abap/artifacts/sap-samples-teched2025-ad162","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-teched2025-ad163","kind":"art","label":"SAP-samples/teched2025-AD163","ring":"sap-official","href":"/abap/artifacts/sap-samples-teched2025-ad163","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-teched2025-ad164","kind":"art","label":"SAP-samples/teched2025-AD164","ring":"sap-official","href":"/abap/artifacts/sap-samples-teched2025-ad164","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-teched2025-ai160","kind":"art","label":"SAP-samples/teched2025-AI160","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2025-ai160","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2025-ai161","kind":"art","label":"teched2025-AI161","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2025-ai161","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2025-ai163","kind":"art","label":"teched2025-AI163","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2025-ai163","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2025-ai165","kind":"art","label":"teched2025-AI165","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2025-ai165","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2025-ca261","kind":"art","label":"SAP-samples/teched2025-CA261","ring":"sap-official","href":"/ui5/artifacts/sap-samples-teched2025-ca261","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-teched2025-ca262","kind":"art","label":"teched2025-CA262","ring":"sap-official","href":"/ui5/artifacts/sap-samples-teched2025-ca262","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-teched2025-cs261","kind":"art","label":"teched2025-CS261","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2025-cs261","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2025-da260","kind":"art","label":"SAP-samples/teched2025-DA260","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2025-da260","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2025-da261","kind":"art","label":"teched2025-DA261","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2025-da261","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2025-da264","kind":"art","label":"SAP-samples/teched2025-DA264","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2025-da264","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2025-da265","kind":"art","label":"teched2025-DA265","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2025-da265","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2025-da266","kind":"art","label":"teched2025-DA266","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2025-da266","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2025-da267","kind":"art","label":"teched2025-DA267","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2025-da267","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2025-dt260","kind":"art","label":"SAP-samples/teched2025-DT260","ring":"sap-official","href":"/abap/artifacts/sap-samples-teched2025-dt260","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-teched2025-dt261","kind":"art","label":"SAP-samples/teched2025-DT261","ring":"sap-official","href":"/abap/artifacts/sap-samples-teched2025-dt261","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-teched2025-dt266","kind":"art","label":"SAP-samples/teched2025-DT266","ring":"sap-official","href":"/abap/artifacts/sap-samples-teched2025-dt266","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-samples-teched2025-in161","kind":"art","label":"teched2025-IN161","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2025-in161","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2025-in162","kind":"art","label":"SAP-samples/teched2025-IN162","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2025-in162","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2025-in163","kind":"art","label":"SAP-samples/teched2025-IN163","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2025-in163","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2025-xp260","kind":"art","label":"teched2025-XP260","ring":"sap-official","href":"/cap/artifacts/sap-samples-teched2025-xp260","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-teched2025-xp261","kind":"art","label":"teched2025-XP261","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2025-xp261","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2025-xp263","kind":"art","label":"teched2025-XP263","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2025-xp263","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2025-xp264","kind":"art","label":"teched2025-XP264","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2025-xp264","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2025-xp265","kind":"art","label":"teched2025-XP265","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2025-xp265","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-teched2025-xp267","kind":"art","label":"teched2025-XP267","ring":"sap-official","href":"/btp/artifacts/sap-samples-teched2025-xp267","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-ui5-cap-event-app","kind":"art","label":"SAP-samples/ui5-cap-event-app","ring":"sap-official","href":"/cap/artifacts/sap-samples-ui5-cap-event-app","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-ui5-deployments","kind":"art","label":"SAP-samples/ui5-deployments","ring":"sap-official","href":"/ui5/artifacts/sap-samples-ui5-deployments","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-ui5-flexibility-easy-key-user-adaptation","kind":"art","label":"SAP-samples/ui5-flexibility-easy-key-user-adaptation","ring":"sap-official","href":"/ui5/artifacts/sap-samples-ui5-flexibility-easy-key-user-adaptation","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-ui5-mdc-json-tutorial","kind":"art","label":"ui5-mdc-json-tutorial","ring":"sap-official","href":"/ui5/artifacts/sap-samples-ui5-mdc-json-tutorial","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-ui5-p13n-tutorial","kind":"art","label":"ui5-p13n-tutorial","ring":"sap-official","href":"/ui5/artifacts/sap-samples-ui5-p13n-tutorial","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-ui5-typescript-control-library","kind":"art","label":"SAP-samples/ui5-typescript-control-library","ring":"sap-official","href":"/ui5/artifacts/sap-samples-ui5-typescript-control-library","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-ui5-typescript-helloworld","kind":"art","label":"SAP-samples/ui5-typescript-helloworld","ring":"sap-official","href":"/ui5/artifacts/sap-samples-ui5-typescript-helloworld","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-ui5-typescript-tutorial","kind":"art","label":"SAP-samples/ui5-typescript-tutorial","ring":"sap-official","href":"/ui5/artifacts/sap-samples-ui5-typescript-tutorial","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-ui5-webcomponents-ngx-sample","kind":"art","label":"ui5-webcomponents-ngx-sample","ring":"sap-official","href":"/ui5/artifacts/sap-samples-ui5-webcomponents-ngx-sample","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-ui5con-2025-theming-workshop","kind":"art","label":"SAP-samples/ui5con-2025-theming-workshop","ring":"sap-official","href":"/ui5/artifacts/sap-samples-ui5con-2025-theming-workshop","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-ui5con-2026-a11y-hands-on","kind":"art","label":"ui5con-2026-a11y-hands-on","ring":"sap-official","href":"/ui5/artifacts/sap-samples-ui5con-2026-a11y-hands-on","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-ui5con-2026-chrome-built-in-ai","kind":"art","label":"ui5con-2026-chrome-built-in-ai","ring":"sap-official","href":"/ui5/artifacts/sap-samples-ui5con-2026-chrome-built-in-ai","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-ui5con-2026-fiori-building-blocks","kind":"art","label":"ui5con-2026-fiori-building-blocks","ring":"sap-official","href":"/ui5/artifacts/sap-samples-ui5con-2026-fiori-building-blocks","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-ui5con-2026-fiori-mcp-server","kind":"art","label":"SAP-samples/ui5con-2026-fiori-mcp-server","ring":"sap-official","href":"/ui5/artifacts/sap-samples-ui5con-2026-fiori-mcp-server","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-ui5con-2026-ui5-linter-workshop","kind":"art","label":"ui5con-2026-ui5-linter-workshop","ring":"sap-official","href":"/ui5/artifacts/sap-samples-ui5con-2026-ui5-linter-workshop","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-uxc-integration","kind":"art","label":"SAP-samples/uxc-integration","ring":"sap-official","href":"/ui5/artifacts/sap-samples-uxc-integration","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-wdf2025-fiori-innov-day-building-blocks","kind":"art","label":"wdf2025-fiori-innov-day-building-blocks","ring":"sap-official","href":"/ui5/artifacts/sap-samples-wdf2025-fiori-innov-day-building-blocks","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-wdf2025-fiori-innov-day-mcp-server","kind":"art","label":"wdf2025-fiori-innov-day-mcp-server","ring":"sap-official","href":"/ui5/artifacts/sap-samples-wdf2025-fiori-innov-day-mcp-server","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-samples-workzone-content-package-templates","kind":"art","label":"workzone-content-package-templates","ring":"sap-official","href":"/btp/artifacts/sap-samples-workzone-content-package-templates","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-xsa-cap-migration-using-basextn","kind":"art","label":"xsa-cap-migration-using-basextn","ring":"sap-official","href":"/cap/artifacts/sap-samples-xsa-cap-migration-using-basextn","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-xsa-cap-migration","kind":"art","label":"xsa-cap-migration","ring":"sap-official","href":"/cap/artifacts/sap-samples-xsa-cap-migration","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-xsc-cap-migration","kind":"art","label":"xsc-cap-migration","ring":"sap-official","href":"/cap/artifacts/sap-samples-xsc-cap-migration","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-samples-xsc-to-native-hana-cloud","kind":"art","label":"xsc-to-native-hana-cloud","ring":"sap-official","href":"/btp/artifacts/sap-samples-xsc-to-native-hana-cloud","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-samples-xsc-xsa-migration","kind":"art","label":"xsc-xsa-migration","ring":"sap-official","href":"/btp/artifacts/sap-samples-xsc-xsa-migration","icon":"sample","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-styleguides-clean-abap","kind":"art","label":"Clean ABAP","ring":"sap-official","href":"/abap/artifacts/sap-styleguides-clean-abap","icon":"practice","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sap-terraform-provider-btp","kind":"art","label":"Terraform Provider for SAP BTP","ring":"sap-official","href":"/btp/artifacts/sap-terraform-provider-btp","icon":"package","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-theming-base-content","kind":"art","label":"@sap-theming/theming-base-content","ring":"sap-official","href":"/ui5/artifacts/sap-theming-base-content","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:andreas-roessler","kind":"actor","label":"Andreas Roessler","href":"/actors/andreas-roessler","icon":"actor","initials":"AR","avatar":"/avatars/andreas-roessler.png","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"actor:theming-technical-user","kind":"actor","label":"theming-technical-user","href":"/actors/theming-technical-user","icon":"actor","initials":"TTU","avatar":"/avatars/theming-technical-user.png","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"artifact:sap-tutorials-content","kind":"art","label":"sap-tutorials-content","ring":"sap-official","href":"/btp/artifacts/sap-tutorials-content","icon":"skill","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:sap-ui-theme-designer-plugins","kind":"art","label":"SAP/ui-theme-designer-plugins-for-coding-agents","ring":"sap-official","href":"/ui5/artifacts/sap-ui-theme-designer-plugins","icon":"skill","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-ui5-cli","kind":"art","label":"@ui5/cli","ring":"sap-official","href":"/ui5/artifacts/sap-ui5-cli","icon":"cli","homeEco":"ui5","ecos":["ui5","abap","btp","cap"],"homeEcos":["ui5","btp","abap"]},{"id":"artifact:sap-ux-cap-config-writer","kind":"art","label":"@sap-ux/cap-config-writer","ring":"sap-official","href":"/cap/artifacts/sap-ux-cap-config-writer","icon":"package","homeEco":"cap","ecos":["cap","ui5"],"homeEcos":["cap"]},{"id":"actor:devinea","kind":"actor","label":"Austin Devine","href":"/actors/devinea","icon":"actor","initials":"AD","avatar":"/avatars/devinea.png","ecos":["cap","ui5"],"homeEcos":["cap","ui5"]},{"id":"artifact:sap-ux-cds-annotation-parser","kind":"art","label":"@sap-ux/cds-annotation-parser","ring":"sap-official","href":"/cap/artifacts/sap-ux-cds-annotation-parser","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-ux-cds-compiler-facade","kind":"art","label":"@sap/ux-cds-compiler-facade","ring":"sap-official","href":"/cap/artifacts/sap-ux-cds-compiler-facade","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-ux-cds-odata-annotation-converter","kind":"art","label":"@sap-ux/cds-odata-annotation-converter","ring":"sap-official","href":"/cap/artifacts/sap-ux-cds-odata-annotation-converter","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-ux-cds-odata-language-server-extension","kind":"art","label":"@sap/ux-cds-odata-language-server-extension","ring":"sap-official","href":"/cap/artifacts/sap-ux-cds-odata-language-server-extension","icon":"ide-extension","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-ux-create","kind":"art","label":"@sap-ux/create","ring":"sap-official","href":"/ui5/artifacts/sap-ux-create","icon":"cli","homeEco":"ui5","ecos":["ui5","cap"],"homeEcos":["ui5"]},{"id":"artifact:sap-ux-eslint-plugin-fiori-tools","kind":"art","label":"@sap-ux/eslint-plugin-fiori-tools","ring":"sap-official","href":"/cap/artifacts/sap-ux-eslint-plugin-fiori-tools","icon":"build-tool","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-ux-fe-fpm-writer","kind":"art","label":"@sap-ux/fe-fpm-writer","ring":"sap-official","href":"/ui5/artifacts/sap-ux-fe-fpm-writer","icon":"package","homeEco":"ui5","ecos":["ui5","cap"],"homeEcos":["ui5"]},{"id":"artifact:sap-ux-fe-mockserver-plugin-cds","kind":"art","label":"@sap-ux/fe-mockserver-plugin-cds","ring":"sap-official","href":"/cap/artifacts/sap-ux-fe-mockserver-plugin-cds","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-ux-fiori-annotation-api","kind":"art","label":"@sap-ux/fiori-annotation-api","ring":"sap-official","href":"/cap/artifacts/sap-ux-fiori-annotation-api","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-ux-fiori-docs-embeddings","kind":"art","label":"@sap-ux/fiori-docs-embeddings","ring":"sap-official","href":"/cap/artifacts/sap-ux-fiori-docs-embeddings","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-ux-fiori-generator-shared","kind":"art","label":"@sap-ux/fiori-generator-shared","ring":"sap-official","href":"/cap/artifacts/sap-ux-fiori-generator-shared","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-ux-fiori-mcp-server","kind":"art","label":"@sap-ux/fiori-mcp-server","ring":"sap-official","href":"/ui5/artifacts/sap-ux-fiori-mcp-server","icon":"mcp-server","homeEco":"ui5","ecos":["ui5","cap","abap","btp"],"homeEcos":["ui5","abap","btp"]},{"id":"artifact:sap-ux-i18n","kind":"art","label":"@sap-ux/i18n","ring":"sap-official","href":"/ui5/artifacts/sap-ux-i18n","icon":"package","homeEco":"ui5","ecos":["ui5","cap"],"homeEcos":["ui5"]},{"id":"artifact:sap-ux-odata-service-writer","kind":"art","label":"@sap-ux/odata-service-writer","ring":"sap-official","href":"/ui5/artifacts/sap-ux-odata-service-writer","icon":"package","homeEco":"ui5","ecos":["ui5","cap"],"homeEcos":["ui5"]},{"id":"artifact:sap-ux-odata-vocabularies","kind":"art","label":"@sap-ux/odata-vocabularies","ring":"sap-official","href":"/ui5/artifacts/sap-ux-odata-vocabularies","icon":"package","homeEco":"ui5","ecos":["ui5","cap"],"homeEcos":["ui5"]},{"id":"artifact:sap-ux-telemetry","kind":"art","label":"@sap-ux/telemetry","ring":"sap-official","href":"/cap/artifacts/sap-ux-telemetry","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-ux-ui5-application-writer","kind":"art","label":"@sap-ux/ui5-application-writer","ring":"sap-official","href":"/ui5/artifacts/sap-ux-ui5-application-writer","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-vscode-cds","kind":"art","label":"@sap/vscode-cds","ring":"sap-official","href":"/cap/artifacts/sap-vscode-cds","icon":"ide-extension","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sap-vscode-ui5-language-assistant","kind":"art","label":"vscode-ui5-language-assistant","ring":"sap-official","href":"/ui5/artifacts/sap-vscode-ui5-language-assistant","icon":"ide-extension","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:sap-xssec","kind":"art","label":"@sap/xssec","ring":"sap-official","href":"/cap/artifacts/sap-xssec","icon":"package","homeEco":"cap","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"artifact:sap2moose-sap2moose","kind":"art","label":"SAP2Moose","ring":"independent","href":"/abap/artifacts/sap2moose-sap2moose","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:sap2moose","kind":"actor","label":"SAP2Moose","href":"/actors/sap2moose","icon":"actor","initials":"S","ring":"independent","avatar":"/avatars/sap2moose.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:sapmentors-cds-azure-ad","kind":"art","label":"cds-azure-ad","ring":"independent","href":"/cap/artifacts/sapmentors-cds-azure-ad","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:sapmentors","kind":"actor","label":"SAP Mentors & Friends","href":"/actors/sapmentors","icon":"actor","initials":"SM&","ring":"independent","avatar":"/avatars/sapmentors.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:sapmentors-cds-pg","kind":"art","label":"cds-pg","ring":"independent","href":"/cap/artifacts/sapmentors-cds-pg","icon":"cds-plugin","homeEco":"cap","archived":true,"ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:vobu","kind":"actor","label":"Volker Buzek","href":"/actors/vobu","icon":"actor","initials":"VB","avatar":"/avatars/vobu.png","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"artifact:sapmentors-cds-scp-api","kind":"art","label":"@sapmentors/cds-scp-api","ring":"community-org","href":"/cap/artifacts/sapmentors-cds-scp-api","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:saposs-vscode-mta-tools","kind":"art","label":"@sap_oss/vscode-mta-tools","ring":"sap-official","href":"/cap/artifacts/saposs-vscode-mta-tools","icon":"ide-extension","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:saptarishi-cds-plugin-llm","kind":"art","label":"@saptarishi/cds-plugin-llm","ring":"independent","href":"/cap/artifacts/saptarishi-cds-plugin-llm","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:kalyanjanumpally","kind":"actor","label":"kalyanjanumpally","href":"/actors/kalyanjanumpally","icon":"actor","initials":"K","avatar":"/avatars/kalyanjanumpally.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:saptarishi-cds-plugin-vector-hana","kind":"art","label":"@saptarishi/cds-plugin-vector-hana","ring":"independent","href":"/cap/artifacts/saptarishi-cds-plugin-vector-hana","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:saptools-bruno","kind":"art","label":"@saptools/bruno","ring":"independent","href":"/btp/artifacts/saptools-bruno","icon":"cli","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:saptools-cf-debugger","kind":"art","label":"@saptools/cf-debugger","ring":"independent","href":"/btp/artifacts/saptools-cf-debugger","icon":"cli","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:saptools-cf-explorer","kind":"art","label":"@saptools/cf-explorer","ring":"independent","href":"/btp/artifacts/saptools-cf-explorer","icon":"cli","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:saptools-cf-function-trace","kind":"art","label":"@saptools/cf-function-trace","ring":"independent","href":"/btp/artifacts/saptools-cf-function-trace","icon":"cli","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:saptools-cf-hana","kind":"art","label":"@saptools/cf-hana","ring":"independent","href":"/btp/artifacts/saptools-cf-hana","icon":"cli","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:saptools-cf-inspector","kind":"art","label":"@saptools/cf-inspector","ring":"independent","href":"/btp/artifacts/saptools-cf-inspector","icon":"cli","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:saptools-cf-live-trace","kind":"art","label":"@saptools/cf-live-trace","ring":"independent","href":"/btp/artifacts/saptools-cf-live-trace","icon":"cli","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:saptools-cf-logs","kind":"art","label":"@saptools/cf-logs","ring":"independent","href":"/btp/artifacts/saptools-cf-logs","icon":"cli","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:saptools-cf-metrics","kind":"art","label":"@saptools/cf-metrics","ring":"independent","href":"/btp/artifacts/saptools-cf-metrics","icon":"cli","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:saptools-cf-otel","kind":"art","label":"@saptools/cf-otel","ring":"independent","href":"/btp/artifacts/saptools-cf-otel","icon":"cli","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:saptools-cf-request-runner","kind":"art","label":"@saptools/cf-request-runner","ring":"independent","href":"/cap/artifacts/saptools-cf-request-runner","icon":"cli","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:saptools-cf-sync","kind":"art","label":"@saptools/cf-sync","ring":"independent","href":"/btp/artifacts/saptools-cf-sync","icon":"cli","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:saptools-cf-tail","kind":"art","label":"@saptools/cf-tail","ring":"independent","href":"/btp/artifacts/saptools-cf-tail","icon":"cli","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:saptools-cf-xsuaa","kind":"art","label":"@saptools/cf-xsuaa","ring":"independent","href":"/btp/artifacts/saptools-cf-xsuaa","icon":"cli","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:saptools-hana-lens","kind":"art","label":"@saptools/hana-lens","ring":"independent","href":"/cap/artifacts/saptools-hana-lens","icon":"cli","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:saptools-service-flow","kind":"art","label":"@saptools/service-flow","ring":"independent","href":"/cap/artifacts/saptools-service-flow","icon":"cli","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:saptools-sqltools","kind":"art","label":"@saptools/sqltools","ring":"independent","href":"/btp/artifacts/saptools-sqltools","icon":"cli","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:satiroglu-kaev","kind":"art","label":"@satiroglu/kaev","ring":"independent","href":"/ui5/artifacts/satiroglu-kaev","icon":"cli","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:satiroglu","kind":"actor","label":"aesatiroglu","href":"/actors/satiroglu","icon":"actor","initials":"A","avatar":"/avatars/satiroglu.png","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"artifact:saurabhvc-abapdocmcp","kind":"art","label":"ABAPDocMCP","ring":"independent","href":"/abap/artifacts/saurabhvc-abapdocmcp","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:saurabhvc","kind":"actor","label":"Saurabh Chikate","href":"/actors/saurabhvc","icon":"actor","initials":"SC","avatar":"/avatars/saurabhvc.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:sbcgua-abap-gui-boilerplate","kind":"art","label":"abap_gui_boilerplate","ring":"independent","href":"/abap/artifacts/sbcgua-abap-gui-boilerplate","icon":"sample","homeEco":"abap","archived":true,"ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:sbcgua","kind":"actor","label":"Alexander Tsybulsky","href":"/actors/sbcgua","icon":"actor","initials":"AT","avatar":"/avatars/sbcgua.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:sbcgua-abap-mustache","kind":"art","label":"abap_mustache","ring":"independent","href":"/abap/artifacts/sbcgua-abap-mustache","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sbcgua-ajson","kind":"art","label":"ajson","ring":"independent","href":"/abap/artifacts/sbcgua-ajson","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sbcgua-mockup-loader","kind":"art","label":"mockup_loader","ring":"independent","href":"/abap/artifacts/sbcgua-mockup-loader","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sbcgua-text2tab","kind":"art","label":"sbcgua/text2tab","ring":"independent","href":"/abap/artifacts/sbcgua-text2tab","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:schwarzit-sap-usi-authority-check","kind":"art","label":"sap-usi-authority-check","ring":"independent","href":"/abap/artifacts/schwarzit-sap-usi-authority-check","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:schwarzit","kind":"actor","label":"Schwarz IT","href":"/actors/schwarzit","icon":"actor","initials":"SI","ring":"independent","avatar":"/avatars/schwarzit.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:schwarzit-sap-usi-exception","kind":"art","label":"sap-usi-exception","ring":"independent","href":"/abap/artifacts/schwarzit-sap-usi-exception","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:schwarzit-sap-usi-logging-api","kind":"art","label":"sap-usi-logging-api","ring":"independent","href":"/abap/artifacts/schwarzit-sap-usi-logging-api","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:se38-abapfaker","kind":"art","label":"abapFaker","ring":"independent","href":"/abap/artifacts/se38-abapfaker","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:se38","kind":"actor","label":"Uwe Fetzer","href":"/actors/se38","icon":"actor","initials":"UF","avatar":"/avatars/se38.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:sebsst-cap-js-geoloc-plugin","kind":"art","label":"cap-js-geoloc-plugin","ring":"independent","href":"/cap/artifacts/sebsst-cap-js-geoloc-plugin","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:secondsky-sap-skills","kind":"art","label":"secondsky/sap-skills","ring":"independent","href":"/btp/artifacts/secondsky-sap-skills","icon":"skill","homeEco":"btp","ecos":["btp","cap","ui5","abap"],"homeEcos":["btp"]},{"id":"actor:secondsky","kind":"actor","label":"Eddie","href":"/actors/secondsky","icon":"actor","initials":"E","avatar":"/avatars/secondsky.png","ecos":["btp","cap","ui5","abap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"artifact:shahid-la-cds-db-nlquery-mcp","kind":"art","label":"@shahid.la/cds-db-nlquery-mcp","ring":"independent","href":"/cap/artifacts/shahid-la-cds-db-nlquery-mcp","icon":"mcp-server","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:shahidla","kind":"actor","label":"shahidla","href":"/actors/shahidla","icon":"actor","initials":"S","avatar":"/avatars/shahidla.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:silvius1996-claude-sap-kit","kind":"art","label":"claude-sap-kit","ring":"independent","href":"/abap/artifacts/silvius1996-claude-sap-kit","icon":"skill","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:silvius1996","kind":"actor","label":"silvius1996","href":"/actors/silvius1996","icon":"actor","initials":"S","avatar":"/avatars/silvius1996.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:skybuffer-ai-mcp-server","kind":"art","label":"Skybuffer AI MCP server","ring":"independent","href":"/abap/artifacts/skybuffer-ai-mcp-server","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:sleibach-cap-collaborative-draft","kind":"art","label":"cap-collaborative-draft","ring":"independent","href":"/cap/artifacts/sleibach-cap-collaborative-draft","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:sleibach","kind":"actor","label":"Sören Leibach","href":"/actors/sleibach","icon":"actor","initials":"SL","ring":"independent","avatar":"/avatars/sleibach.png","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"artifact:sleibach-cap-companion","kind":"art","label":"cap-companion","ring":"independent","href":"/cap/artifacts/sleibach-cap-companion","icon":"cds-plugin","homeEco":"cap","ecos":["cap","ui5"],"homeEcos":["cap"]},{"id":"artifact:sleibach-cap-mcp-plugin","kind":"art","label":"cap-mcp-plugin","ring":"independent","href":"/cap/artifacts/sleibach-cap-mcp-plugin","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sleibach-cap-n8n","kind":"art","label":"cap-n8n","ring":"independent","href":"/cap/artifacts/sleibach-cap-n8n","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sleibach-cap-snowflake","kind":"art","label":"cap-snowflake","ring":"independent","href":"/cap/artifacts/sleibach-cap-snowflake","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sleibach-cap-ui-telemetry","kind":"art","label":"cap-ui-telemetry","ring":"independent","href":"/cap/artifacts/sleibach-cap-ui-telemetry","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:sonnyfrenzel-rgb-clean-core-io","kind":"art","label":"Clean-Core.io","ring":"independent","href":"/abap/artifacts/sonnyfrenzel-rgb-clean-core-io","icon":"web-tool","homeEco":"abap","ecos":["abap","cap"],"homeEcos":["abap"]},{"id":"artifact:soontao-cds-common-jwt-support","kind":"art","label":"cds-common-jwt-support","ring":"independent","href":"/cap/artifacts/soontao-cds-common-jwt-support","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:theo-sun","kind":"actor","label":"Theo Sun","href":"/actors/theo-sun","icon":"actor","initials":"TS","ring":"independent","avatar":"/avatars/theo-sun.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:soontao-cds-feature-toggle","kind":"art","label":"cds-feature-toggle","ring":"independent","href":"/cap/artifacts/soontao-cds-feature-toggle","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:soontao-cds-hyper-app-service","kind":"art","label":"cds-hyper-app-service","ring":"independent","href":"/cap/artifacts/soontao-cds-hyper-app-service","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:soontao-cds-internal-tool","kind":"art","label":"cds-internal-tool","ring":"independent","href":"/cap/artifacts/soontao-cds-internal-tool","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:soontao-cds-mysql","kind":"art","label":"cds-mysql","ring":"independent","href":"/cap/artifacts/soontao-cds-mysql","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:soontao-cds-nats","kind":"art","label":"cds-nats","ring":"independent","href":"/cap/artifacts/soontao-cds-nats","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:soontao-cds-rate-limit","kind":"art","label":"cds-rate-limit","ring":"independent","href":"/cap/artifacts/soontao-cds-rate-limit","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:soontao-opentelemetry-cds","kind":"art","label":"opentelemetry-cds","ring":"independent","href":"/cap/artifacts/soontao-opentelemetry-cds","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:spreadsheetimporter-abap-importer","kind":"art","label":"ABAP Spreadsheet Importer","ring":"community-org","href":"/abap/artifacts/spreadsheetimporter-abap-importer","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:spreadsheetimporter-cds-spreadsheetimporter-plugin","kind":"art","label":"cds-spreadsheetimporter-plugin","ring":"community-org","href":"/cap/artifacts/spreadsheetimporter-cds-spreadsheetimporter-plugin","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:spreadsheetimporter","kind":"actor","label":"Spreadsheet Importer","href":"/actors/spreadsheetimporter","icon":"actor","initials":"SI","ring":"independent","avatar":"/avatars/spreadsheetimporter.png","ecos":["cap","ui5"],"homeEcos":["cap","ui5"]},{"id":"artifact:spreadsheetimporter-packed-deployment-abap","kind":"art","label":"spreadsheetimporter/packed-deployment-abap","ring":"community-org","href":"/ui5/artifacts/spreadsheetimporter-packed-deployment-abap","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:spreadsheetimporter-sample-adaptation-banks-update","kind":"art","label":"spreadsheetimporter/sample-adaptation-banks-update","ring":"community-org","href":"/ui5/artifacts/spreadsheetimporter-sample-adaptation-banks-update","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:spreadsheetimporter-sample-adaptation-banks","kind":"art","label":"spreadsheetimporter/sample-adaptation-banks","ring":"community-org","href":"/ui5/artifacts/spreadsheetimporter-sample-adaptation-banks","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:spreadsheetimporter-sample-full-btp","kind":"art","label":"spreadsheetimporter/sample-full-btp","ring":"community-org","href":"/cap/artifacts/spreadsheetimporter-sample-full-btp","icon":"sample","homeEco":"cap","ecos":["cap","ui5"],"homeEcos":["cap"]},{"id":"artifact:spreadsheetimporter-sample-odata-api-upload","kind":"art","label":"spreadsheetimporter/sample-odata-api-upload","ring":"community-org","href":"/ui5/artifacts/spreadsheetimporter-sample-odata-api-upload","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:spreadsheetimporter-sample-standalone","kind":"art","label":"spreadsheetimporter/sample-standalone","ring":"community-org","href":"/ui5/artifacts/spreadsheetimporter-sample-standalone","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:spreadsheetimporter-ui5-cc-spreadsheetimporter","kind":"art","label":"ui5-cc-spreadsheetimporter","ring":"community-org","href":"/ui5/artifacts/spreadsheetimporter-ui5-cc-spreadsheetimporter","icon":"package","homeEco":"ui5","ecos":["ui5","cap"],"homeEcos":["ui5","cap"]},{"id":"artifact:spreadsheetimporter-ui5-task-btp-manifest","kind":"art","label":"ui5-task-btp-manifest","ring":"community-org","href":"/ui5/artifacts/spreadsheetimporter-ui5-task-btp-manifest","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:srbconsultingteam-srbinfoandsupportjs","kind":"art","label":"srbinfoandsupportjs","ring":"independent","href":"/ui5/artifacts/srbconsultingteam-srbinfoandsupportjs","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:michaelhenningersrb","kind":"actor","label":"Michael Henninger","href":"/actors/michaelhenningersrb","icon":"actor","initials":"MH","avatar":"/avatars/michaelhenningersrb.png","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"actor:srbconsultingteam","kind":"actor","label":"SRB Consulting Team","href":"/actors/srbconsultingteam","icon":"actor","initials":"SCT","ring":"independent","avatar":"/avatars/srbconsultingteam.png","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"artifact:srbconsultingteam-srbjslogger","kind":"art","label":"srbjslogger","ring":"independent","href":"/ui5/artifacts/srbconsultingteam-srbjslogger","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:srijan9864-zrfcread","kind":"art","label":"srijan9864/zrfcread","ring":"independent","href":"/abap/artifacts/srijan9864-zrfcread","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:srijan9864","kind":"actor","label":"Srijan Sarmah","href":"/actors/srijan9864","icon":"actor","initials":"SS","avatar":"/avatars/srijan9864.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:striezl-variscan","kind":"art","label":"striezl/VariScan","ring":"independent","href":"/abap/artifacts/striezl-variscan","icon":"cli","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:striezl","kind":"actor","label":"Bernhard Haberstetter","href":"/actors/striezl","icon":"actor","initials":"BH","avatar":"/avatars/striezl.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:sumu-ning-aes","kind":"art","label":"Sumu-Ning/AES","ring":"independent","href":"/abap/artifacts/sumu-ning-aes","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:sumu-ning","kind":"actor","label":"Pingsan Song","href":"/actors/sumu-ning","icon":"actor","initials":"PS","avatar":"/avatars/sumu-ning.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:swixfort-sdw-abap-di","kind":"art","label":"swixfort/Sdw.Abap.Di","ring":"independent","href":"/abap/artifacts/swixfort-sdw-abap-di","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:swixfort","kind":"actor","label":"Stefan Wixfort","href":"/actors/swixfort","icon":"actor","initials":"SW","avatar":"/avatars/swixfort.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:syarhei-cap-utils-barrier","kind":"art","label":"@cap-utils/barrier","ring":"independent","href":"/cap/artifacts/syarhei-cap-utils-barrier","icon":"package","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:syntaai-sap-security-mcp","kind":"art","label":"sap-security-mcp","ring":"independent","href":"/abap/artifacts/syntaai-sap-security-mcp","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:syntaai","kind":"actor","label":"SYNTAAI","href":"/actors/syntaai","icon":"actor","initials":"S","ring":"independent","avatar":"/avatars/syntaai.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:techedgegroup-sap-abap2gsheet","kind":"art","label":"abap2gsheet","ring":"independent","href":"/abap/artifacts/techedgegroup-sap-abap2gsheet","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:techedgegroup-sap","kind":"actor","label":"techedgegroup-sap","href":"/actors/techedgegroup-sap","icon":"actor","initials":"TS","avatar":"/avatars/techedgegroup-sap.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:tf-franz-seidl-abapdocs-code-scanner","kind":"art","label":"abapdocs-code-scanner","ring":"independent","href":"/abap/artifacts/tf-franz-seidl-abapdocs-code-scanner","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:tf-franz-seidl","kind":"actor","label":"tf-Franz-Seidl","href":"/actors/tf-franz-seidl","icon":"actor","initials":"TFS","avatar":"/avatars/tf-franz-seidl.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:tiagobalmeida-openui5-camera","kind":"art","label":"openui5-camera","ring":"independent","href":"/ui5/artifacts/tiagobalmeida-openui5-camera","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:tiagobalmeida","kind":"actor","label":"Tiago Almeida","href":"/actors/tiagobalmeida","icon":"actor","initials":"TA","avatar":"/avatars/tiagobalmeida.png","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"artifact:tklein1801-cap-js-attachments","kind":"art","label":"@tklein1801/cap-js-attachments","ring":"independent","href":"/cap/artifacts/tklein1801-cap-js-attachments","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:tklein1801","kind":"actor","label":"Thorben","href":"/actors/tklein1801","icon":"actor","initials":"T","avatar":"/avatars/tklein1801.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:tmhew-abap-aws-sigv4","kind":"art","label":"abap-aws-sigv4","ring":"independent","href":"/abap/artifacts/tmhew-abap-aws-sigv4","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:tmhew","kind":"actor","label":"tmhew","href":"/actors/tmhew","icon":"actor","initials":"T","avatar":"/avatars/tmhew.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:tobiashofmann-adt-bundle-builder","kind":"art","label":"adt-bundle-builder","ring":"independent","href":"/abap/artifacts/tobiashofmann-adt-bundle-builder","icon":"build-tool","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:tobiashofmann","kind":"actor","label":"Tobias Hofmann","href":"/actors/tobiashofmann","icon":"actor","initials":"TH","avatar":"/avatars/tobiashofmann.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:tobiashofmann-off-stack-abap","kind":"art","label":"off-stack-abap","ring":"independent","href":"/abap/artifacts/tobiashofmann-off-stack-abap","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:tobiashofmann-pam-mcp-server","kind":"art","label":"pam-mcp-server","ring":"independent","href":"/artifacts/tobiashofmann-pam-mcp-server","icon":"mcp-server","ecos":["abap"]},{"id":"artifact:tobiashofmann-sap-support-radar","kind":"art","label":"SAP Support Radar","ring":"independent","href":"/artifacts/tobiashofmann-sap-support-radar","icon":"web-tool","ecos":["abap"]},{"id":"artifact:toni-ramchandani-sapient-mcp","kind":"art","label":"SAPient MCP","ring":"independent","href":"/abap/artifacts/toni-ramchandani-sapient-mcp","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:toni-ramchandani","kind":"actor","label":"Toni Ramchandani","href":"/actors/toni-ramchandani","icon":"actor","initials":"TR","avatar":"/avatars/toni-ramchandani.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:tricktresor-alv-grid","kind":"art","label":"alv_grid","ring":"independent","href":"/abap/artifacts/tricktresor-alv-grid","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:tricktresor","kind":"actor","label":"Tricktresor","href":"/actors/tricktresor","icon":"actor","initials":"T","ring":"independent","avatar":"/avatars/tricktresor.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:tricktresor-cute","kind":"art","label":"cute","ring":"independent","href":"/abap/artifacts/tricktresor-cute","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:tricktresor-gladius","kind":"art","label":"gladius","ring":"independent","href":"/abap/artifacts/tricktresor-gladius","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:tricktresor-guidrasil","kind":"art","label":"guidrasil","ring":"independent","href":"/abap/artifacts/tricktresor-guidrasil","icon":"generator","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:ui5-community-babel-plugin-transform-modules-ui5","kind":"art","label":"babel-preset-transform-ui5","ring":"community-org","href":"/ui5/artifacts/ui5-community-babel-plugin-transform-modules-ui5","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:ui5-community","kind":"actor","label":"UI5 Community","href":"/actors/ui5-community","icon":"actor","initials":"UC","ring":"community-org","avatar":"/avatars/ui5-community.png","ecos":["ui5","cap","abap","btp"],"homeEcos":["ui5","cap"]},{"id":"artifact:ui5-community-cds-plugin-ui5","kind":"art","label":"cds-plugin-ui5","ring":"community-org","href":"/cap/artifacts/ui5-community-cds-plugin-ui5","icon":"cds-plugin","homeEco":"cap","ecos":["cap","btp","ui5"],"homeEcos":["cap"]},{"id":"actor:petermuessig","kind":"actor","label":"Peter Muessig","href":"/actors/petermuessig","icon":"actor","initials":"PM","ring":"sap-official","avatar":"/avatars/petermuessig.png","ecos":["cap","ui5"],"homeEcos":["cap","ui5"]},{"id":"artifact:ui5-community-create-easy-ui5","kind":"art","label":"create-easy-ui5","ring":"community-org","href":"/ui5/artifacts/ui5-community-create-easy-ui5","icon":"generator","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-create-wdi5","kind":"art","label":"create-wdi5","ring":"community-org","href":"/ui5/artifacts/ui5-community-create-wdi5","icon":"generator","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-dev-approuter","kind":"art","label":"dev-approuter","ring":"community-org","href":"/cap/artifacts/ui5-community-dev-approuter","icon":"build-tool","homeEco":"cap","ecos":["cap","ui5"],"homeEcos":["cap"]},{"id":"artifact:ui5-community-generator-easy-ui5","kind":"art","label":"generator-easy-ui5","ring":"community-org","href":"/ui5/artifacts/ui5-community-generator-easy-ui5","icon":"generator","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-generator-ui5-add-extension","kind":"art","label":"generator-ui5-add","ring":"community-org","href":"/ui5/artifacts/ui5-community-generator-ui5-add-extension","icon":"generator","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:uxkjaer","kind":"actor","label":"Jakob Marius Kjaer","href":"/actors/uxkjaer","icon":"actor","initials":"JMK","avatar":"/avatars/uxkjaer.png","ecos":["ui5","cap","btp"],"homeEcos":["ui5","cap","btp"]},{"id":"artifact:ui5-community-generator-ui5-app","kind":"art","label":"generator-ui5-app","ring":"community-org","href":"/ui5/artifacts/ui5-community-generator-ui5-app","icon":"generator","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-generator-ui5-control","kind":"art","label":"generator-ui5-control","ring":"community-org","href":"/ui5/artifacts/ui5-community-generator-ui5-control","icon":"generator","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-generator-ui5-flp-plugin","kind":"art","label":"generator-ui5-flp-plugin","ring":"community-org","href":"/ui5/artifacts/ui5-community-generator-ui5-flp-plugin","icon":"generator","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-generator-ui5-library-webc","kind":"art","label":"generator-ui5-library-webc","ring":"community-org","href":"/ui5/artifacts/ui5-community-generator-ui5-library-webc","icon":"generator","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-generator-ui5-library","kind":"art","label":"generator-ui5-library","ring":"community-org","href":"/ui5/artifacts/ui5-community-generator-ui5-library","icon":"generator","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-generator-ui5-project","kind":"art","label":"generator-ui5-project","ring":"community-org","href":"/ui5/artifacts/ui5-community-generator-ui5-project","icon":"generator","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-generator-ui5-ts-app-fcl","kind":"art","label":"generator-ui5-ts-app-fcl","ring":"community-org","href":"/ui5/artifacts/ui5-community-generator-ui5-ts-app-fcl","icon":"generator","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-generator-ui5-ts-app","kind":"art","label":"generator-ui5-ts-app","ring":"community-org","href":"/ui5/artifacts/ui5-community-generator-ui5-ts-app","icon":"generator","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-generator-ui5-ts-flp-plugin","kind":"art","label":"generator-ui5-ts-flp-plugin","ring":"community-org","href":"/ui5/artifacts/ui5-community-generator-ui5-ts-flp-plugin","icon":"generator","homeEco":"ui5","ecos":["ui5","abap","btp"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-generator-ui5-ts-library","kind":"art","label":"generator-ui5-ts-library","ring":"community-org","href":"/ui5/artifacts/ui5-community-generator-ui5-ts-library","icon":"generator","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-generator-ui5-wdi5","kind":"art","label":"generator-ui5-wdi5","ring":"community-org","href":"/ui5/artifacts/ui5-community-generator-ui5-wdi5","icon":"generator","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-hacking-away-sampleapp","kind":"art","label":"hacking-away-sampleapp","ring":"community-org","href":"/ui5/artifacts/ui5-community-hacking-away-sampleapp","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-jsx-runtime-helloworld","kind":"art","label":"@ui5-community/jsx-runtime-helloworld","ring":"community-org","href":"/ui5/artifacts/ui5-community-jsx-runtime-helloworld","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-jsx-runtime-showcase","kind":"art","label":"@ui5-community/jsx-runtime-showcase","ring":"community-org","href":"/ui5/artifacts/ui5-community-jsx-runtime-showcase","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-jsx-runtime","kind":"art","label":"@ui5-community/jsx-runtime","ring":"community-org","href":"/ui5/artifacts/ui5-community-jsx-runtime","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-karma-ui5-transpile","kind":"art","label":"karma-ui5-transpile","ring":"community-org","href":"/ui5/artifacts/ui5-community-karma-ui5-transpile","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-showcase-approuter","kind":"art","label":"approuter","ring":"community-org","href":"/cap/artifacts/ui5-community-showcase-approuter","icon":"sample","homeEco":"cap","ecos":["cap","ui5"],"homeEcos":["cap"]},{"id":"actor:nicoschoenteich","kind":"actor","label":"Nico Schoenteich","href":"/actors/nicoschoenteich","icon":"actor","initials":"NS","avatar":"/avatars/nicoschoenteich.png","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"artifact:ui5-community-showcase-cds-bookshop","kind":"art","label":"cds-bookshop","ring":"community-org","href":"/cap/artifacts/ui5-community-showcase-cds-bookshop","icon":"sample","homeEco":"cap","ecos":["cap","ui5"],"homeEcos":["cap","ui5"]},{"id":"artifact:ui5-community-showcase-ui5-app","kind":"art","label":"ui5-app","ring":"community-org","href":"/ui5/artifacts/ui5-community-showcase-ui5-app","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-showcase-ui5-bookshop-viewer","kind":"art","label":"ui5-bookshop-viewer","ring":"community-org","href":"/ui5/artifacts/ui5-community-showcase-ui5-bookshop-viewer","icon":"sample","homeEco":"ui5","ecos":["ui5","cap"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-showcase-ui5-lib","kind":"art","label":"ui5-lib","ring":"community-org","href":"/ui5/artifacts/ui5-community-showcase-ui5-lib","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-showcase-ui5-module","kind":"art","label":"ui5-module","ring":"community-org","href":"/ui5/artifacts/ui5-community-showcase-ui5-module","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-showcase-ui5-tsapp-webc","kind":"art","label":"ui5-tsapp-webc","ring":"community-org","href":"/ui5/artifacts/ui5-community-showcase-ui5-tsapp-webc","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-showcase-ui5-tsapp","kind":"art","label":"ui5-tsapp","ring":"community-org","href":"/ui5/artifacts/ui5-community-showcase-ui5-tsapp","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-showcase-ui5-tslib","kind":"art","label":"ui5-tslib","ring":"community-org","href":"/ui5/artifacts/ui5-community-showcase-ui5-tslib","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-showcase-ui5-tsmodule","kind":"art","label":"ui5-tsmodule","ring":"community-org","href":"/ui5/artifacts/ui5-community-showcase-ui5-tsmodule","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-cc-chart","kind":"art","label":"ui5-cc-chart","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-cc-chart","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-cc-md","kind":"art","label":"ui5-cc-md","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-cc-md","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-fontawesome-lib","kind":"art","label":"ui5-fontawesome-lib","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-fontawesome-lib","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-icon-explorer","kind":"art","label":"ui5-icon-explorer","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-icon-explorer","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-journey-recorder","kind":"art","label":"ui5-journey-recorder","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-journey-recorder","icon":"generator","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-middleware-approuter","kind":"art","label":"ui5-middleware-approuter","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-middleware-approuter","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-middleware-cap","kind":"art","label":"ui5-middleware-cap","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-middleware-cap","icon":"build-tool","homeEco":"ui5","ecos":["ui5","cap"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-middleware-hmr","kind":"art","label":"ui5-middleware-hmr","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-middleware-hmr","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-middleware-iasync","kind":"art","label":"ui5-middleware-iasync","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-middleware-iasync","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-middleware-index","kind":"art","label":"ui5-middleware-index","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-middleware-index","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-middleware-livereload","kind":"art","label":"ui5-middleware-livereload","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-middleware-livereload","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-middleware-onelogin","kind":"art","label":"ui5-middleware-onelogin","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-middleware-onelogin","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-middleware-serveframework","kind":"art","label":"ui5-middleware-serveframework","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-middleware-serveframework","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-middleware-servestatic","kind":"art","label":"ui5-middleware-servestatic","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-middleware-servestatic","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-middleware-simpleproxy","kind":"art","label":"ui5-middleware-simpleproxy","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-middleware-simpleproxy","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-middleware-ui5","kind":"art","label":"ui5-middleware-ui5","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-middleware-ui5","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-middleware-webjars","kind":"art","label":"ui5-middleware-webjars","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-middleware-webjars","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-middleware-websocket","kind":"art","label":"ui5-middleware-websocket","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-middleware-websocket","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-task-cachebuster","kind":"art","label":"ui5-task-cachebuster","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-task-cachebuster","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-task-copyright","kind":"art","label":"ui5-task-copyright","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-task-copyright","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-task-flatten-library","kind":"art","label":"ui5-task-flatten-library","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-task-flatten-library","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-task-i18ncheck","kind":"art","label":"ui5-task-i18ncheck","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-task-i18ncheck","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-task-minify-xml","kind":"art","label":"ui5-task-minify-xml","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-task-minify-xml","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-task-pwa-enabler","kind":"art","label":"ui5-task-pwa-enabler","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-task-pwa-enabler","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-task-transpile","kind":"art","label":"ui5-task-transpile","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-task-transpile","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-task-zipper","kind":"art","label":"ui5-task-zipper","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-task-zipper","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-tooling-less","kind":"art","label":"ui5-tooling-less","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-tooling-less","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-tooling-modules","kind":"art","label":"ui5-tooling-modules","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-tooling-modules","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-tooling-stringreplace","kind":"art","label":"ui5-tooling-stringreplace","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-tooling-stringreplace","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-tooling-transpile","kind":"art","label":"ui5-tooling-transpile","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-tooling-transpile","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-ts-modules-showcase","kind":"art","label":"ui5-ts-modules-showcase","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-ts-modules-showcase","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-ui5-webcomponents-bundle","kind":"art","label":"ui5-webcomponents-bundle","ring":"community-org","href":"/ui5/artifacts/ui5-community-ui5-webcomponents-bundle","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-wdi5-cucumber","kind":"art","label":"wdi5-cucumber","ring":"community-org","href":"/ui5/artifacts/ui5-community-wdi5-cucumber","icon":"package","homeEco":"ui5","archived":true,"ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-wdi5-fe-selectors","kind":"art","label":"wdi5-fe-selectors","ring":"community-org","href":"/ui5/artifacts/ui5-community-wdi5-fe-selectors","icon":"package","homeEco":"ui5","archived":true,"ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-wdi5-workshop","kind":"art","label":"wdi5-workshop","ring":"community-org","href":"/ui5/artifacts/ui5-community-wdi5-workshop","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-community-wdi5","kind":"art","label":"wdio-ui5-service","ring":"community-org","href":"/ui5/artifacts/ui5-community-wdi5","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-linter","kind":"art","label":"@ui5/linter","ring":"sap-official","href":"/ui5/artifacts/ui5-linter","icon":"cli","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:ui5","kind":"actor","label":"UI5","href":"/actors/ui5","icon":"actor","initials":"U","ring":"sap-official","avatar":"/avatars/ui5.png","ecos":["ui5","cap"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"artifact:ui5-logger","kind":"art","label":"@ui5/logger","ring":"sap-official","href":"/ui5/artifacts/ui5-logger","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-mcp-server","kind":"art","label":"@ui5/mcp-server","ring":"sap-official","href":"/ui5/artifacts/ui5-mcp-server","icon":"mcp-server","homeEco":"ui5","ecos":["ui5","cap","abap","btp"],"homeEcos":["ui5","abap","btp"]},{"id":"artifact:ui5-middleware-code-coverage","kind":"art","label":"@ui5/middleware-code-coverage","ring":"sap-official","href":"/ui5/artifacts/ui5-middleware-code-coverage","icon":"build-tool","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-plugins-coding-agents","kind":"art","label":"UI5/plugins-coding-agents","ring":"sap-official","href":"/ui5/artifacts/ui5-plugins-coding-agents","icon":"skill","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-sample-app","kind":"art","label":"@ui5/sample-app","ring":"sap-official","href":"/ui5/artifacts/ui5-sample-app","icon":"sample","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-tooling-webc","kind":"art","label":"@ui5/tooling-webc","ring":"sap-official","href":"/ui5/artifacts/ui5-tooling-webc","icon":"build-tool","homeEco":"ui5","archived":true,"ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-webcomponents-agent-skills","kind":"art","label":"UI5 Web Components agent skills","ring":"sap-official","href":"/ui5/artifacts/ui5-webcomponents-agent-skills","icon":"skill","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-webcomponents-mcp-server","kind":"art","label":"@ui5/webcomponents-mcp-server","ring":"sap-official","href":"/ui5/artifacts/ui5-webcomponents-mcp-server","icon":"mcp-server","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:ui5-webcomponents","kind":"art","label":"@ui5/webcomponents","ring":"sap-official","href":"/ui5/artifacts/ui5-webcomponents","icon":"package","homeEco":"ui5","ecos":["ui5","abap"],"homeEcos":["ui5","abap"]},{"id":"artifact:uweku-mocka","kind":"art","label":"mockA","ring":"independent","href":"/abap/artifacts/uweku-mocka","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:uweku","kind":"actor","label":"Uwe Kunath","href":"/actors/uweku","icon":"actor","initials":"UK","avatar":"/avatars/uweku.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:uweku-vise-for-abap","kind":"art","label":"Vise_for_ABAP","ring":"independent","href":"/abap/artifacts/uweku-vise-for-abap","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:uxkjaer-cap-user-info","kind":"art","label":"cap-user-info","ring":"independent","href":"/cap/artifacts/uxkjaer-cap-user-info","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:vadimklimov-cpi-mcp-server","kind":"art","label":"cpi-mcp-server","ring":"independent","href":"/btp/artifacts/vadimklimov-cpi-mcp-server","icon":"mcp-server","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"actor:vadimklimov","kind":"actor","label":"Vadim Klimov","href":"/actors/vadimklimov","icon":"actor","initials":"VK","avatar":"/avatars/vadimklimov.png","ecos":["btp","digital-manufacturing","ui5","cap","abap"],"homeEcos":["btp","digital-manufacturing","cap","abap"]},{"id":"artifact:vaibhavgoel-github-1986-abap-adt-cli","kind":"art","label":"abap-adt-cli","ring":"independent","href":"/abap/artifacts/vaibhavgoel-github-1986-abap-adt-cli","icon":"cli","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:vaibhavgoel-github-1986","kind":"actor","label":"vaibhavgoel-github-1986","href":"/actors/vaibhavgoel-github-1986","icon":"actor","initials":"VG1","avatar":"/avatars/vaibhavgoel-github-1986.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:valdirmendesdev-abap-json-encoder-decoder","kind":"art","label":"ABAP JSON Encoder/Decoder","ring":"independent","href":"/abap/artifacts/valdirmendesdev-abap-json-encoder-decoder","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:valdirmendesdev","kind":"actor","label":"Valdir Mendes","href":"/actors/valdirmendesdev","icon":"actor","initials":"VM","avatar":"/avatars/valdirmendesdev.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:vcd94xt10z-forsap-s4hana-private-simulator","kind":"art","label":"forsap-s4hana-private-simulator","ring":"independent","href":"/cap/artifacts/vcd94xt10z-forsap-s4hana-private-simulator","icon":"sample","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:vcd94xt10z","kind":"actor","label":"Vinicius Cesar Dias","href":"/actors/vcd94xt10z","icon":"actor","initials":"VCD","avatar":"/avatars/vcd94xt10z.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:venkatesh-hulekal-dynamic-external-cds-join","kind":"art","label":"dynamic-external-cds-join","ring":"independent","href":"/cap/artifacts/venkatesh-hulekal-dynamic-external-cds-join","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:victorizbitskiy-zconcurrency-api","kind":"art","label":"zconcurrency_api","ring":"independent","href":"/abap/artifacts/victorizbitskiy-zconcurrency-api","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:victorizbitskiy","kind":"actor","label":"Victor Izbitskiy","href":"/actors/victorizbitskiy","icon":"actor","initials":"VI","avatar":"/avatars/victorizbitskiy.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:victorizbitskiy-zspool-pdf","kind":"art","label":"SAP Spool PDF","ring":"independent","href":"/abap/artifacts/victorizbitskiy-zspool-pdf","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:vlutsas-dst","kind":"art","label":"DST","ring":"independent","href":"/abap/artifacts/vlutsas-dst","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:vlutsas","kind":"actor","label":"Vladimir Lutsas","href":"/actors/vlutsas","icon":"actor","initials":"VL","avatar":"/avatars/vlutsas.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:vneecious-sap-cap-sdm-plugin","kind":"art","label":"sap-cap-sdm-plugin","ring":"independent","href":"/cap/artifacts/vneecious-sap-cap-sdm-plugin","icon":"cds-plugin","homeEco":"cap","archived":true,"ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:vneecious","kind":"actor","label":"Vinícius Barrionuevo","href":"/actors/vneecious","icon":"actor","initials":"VB","ring":"sap-official","avatar":"/avatars/vneecious.png","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"artifact:vobu-cds-entra-id","kind":"art","label":"cds-entra-id","ring":"independent","href":"/cap/artifacts/vobu-cds-entra-id","icon":"cds-plugin","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"artifact:vrishtrix-zed-cds-extension","kind":"art","label":"zed-cds-extension","ring":"independent","href":"/cap/artifacts/vrishtrix-zed-cds-extension","icon":"ide-extension","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:vrishtrix","kind":"actor","label":"Vrishin Patel","href":"/actors/vrishtrix","icon":"actor","initials":"VP","avatar":"/avatars/vrishtrix.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:watson-developer-cloud-abap-sdk-nwas","kind":"art","label":"abap-sdk-nwas","ring":"independent","href":"/abap/artifacts/watson-developer-cloud-abap-sdk-nwas","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:watson-developer-cloud","kind":"actor","label":"IBM Watson APIs","href":"/actors/watson-developer-cloud","icon":"actor","initials":"IWA","ring":"independent","avatar":"/avatars/watson-developer-cloud.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:wegnerdan-abapmermaid","kind":"art","label":"abapMermaid","ring":"independent","href":"/abap/artifacts/wegnerdan-abapmermaid","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:wegnerdan","kind":"actor","label":"Daniel Wegner","href":"/actors/wegnerdan","icon":"actor","initials":"DW","avatar":"/avatars/wegnerdan.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:wegnerdan-zwdcsv","kind":"art","label":"ZwdCSV","ring":"independent","href":"/abap/artifacts/wegnerdan-zwdcsv","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:wegnerdan-zwddynscreen","kind":"art","label":"ZwdDynscreen","ring":"independent","href":"/abap/artifacts/wegnerdan-zwddynscreen","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:weiserman-rap-skills","kind":"art","label":"rap-skills","ring":"independent","href":"/abap/artifacts/weiserman-rap-skills","icon":"skill","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:weiserman","kind":"actor","label":"Warren Eiserman","href":"/actors/weiserman","icon":"actor","initials":"WE","avatar":"/avatars/weiserman.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:wolfe100-openui5-paginator","kind":"art","label":"openui5-paginator","ring":"independent","href":"/ui5/artifacts/wolfe100-openui5-paginator","icon":"package","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"actor:wolfe100","kind":"actor","label":"Wolfgang Haag","href":"/actors/wolfe100","icon":"actor","initials":"WH","avatar":"/avatars/wolfe100.png","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"artifact:workskong-mcp-abap-adt","kind":"art","label":"workskong/mcp-abap-adt","ring":"independent","href":"/abap/artifacts/workskong-mcp-abap-adt","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:workskong","kind":"actor","label":"GAEUL JUNG","href":"/actors/workskong","icon":"actor","initials":"GJ","avatar":"/avatars/workskong.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:wozjac-abap-sencha","kind":"art","label":"abap-sencha","ring":"independent","href":"/abap/artifacts/wozjac-abap-sencha","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:wozjac","kind":"actor","label":"Jacek Wozniczak","href":"/actors/wozjac","icon":"actor","initials":"JW","avatar":"/avatars/wozjac.png","ecos":["abap","ui5"],"homeEcos":["abap","ui5"]},{"id":"artifact:wozjac-vscode-ui5-api-reference","kind":"art","label":"vscode-ui5-api-reference","ring":"independent","href":"/ui5/artifacts/wozjac-vscode-ui5-api-reference","icon":"ide-extension","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:wozjac-vscode-ui5-odata-mock-generator","kind":"art","label":"vscode-ui5-odata-mock-generator","ring":"independent","href":"/ui5/artifacts/wozjac-vscode-ui5-odata-mock-generator","icon":"ide-extension","homeEco":"ui5","ecos":["ui5"],"homeEcos":["ui5"]},{"id":"artifact:xamafe-rfc-tools","kind":"art","label":"RFC_TOOLS","ring":"independent","href":"/abap/artifacts/xamafe-rfc-tools","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:xamafe","kind":"actor","label":"xamafe","href":"/actors/xamafe","icon":"actor","initials":"X","avatar":"/avatars/xamafe.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:xbergun-cap-mock-generator","kind":"art","label":"cap-mock-generator","ring":"independent","href":"/cap/artifacts/xbergun-cap-mock-generator","icon":"generator","homeEco":"cap","ecos":["cap"],"homeEcos":["cap"]},{"id":"actor:xbergun","kind":"actor","label":"Berkay","href":"/actors/xbergun","icon":"actor","initials":"B","avatar":"/avatars/xbergun.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"artifact:xexer-abap-ccm","kind":"art","label":"Clean Core Measurement","ring":"independent","href":"/abap/artifacts/xexer-abap-ccm","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:xexer","kind":"actor","label":"Xexer","href":"/actors/xexer","icon":"actor","initials":"X","avatar":"/avatars/xexer.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:xexer-abap-message-logger","kind":"art","label":"abap-message-logger","ring":"independent","href":"/abap/artifacts/xexer-abap-message-logger","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:xexer-abap-select-converter","kind":"art","label":"ABAP Select Converter","ring":"independent","href":"/abap/artifacts/xexer-abap-select-converter","icon":"web-tool","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:xexer-abap-system-fields","kind":"art","label":"abap-system-fields","ring":"independent","href":"/abap/artifacts/xexer-abap-system-fields","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:xexer-abap-test-container","kind":"art","label":"abap-test-container","ring":"independent","href":"/abap/artifacts/xexer-abap-test-container","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:xexer-abap-unit-runner","kind":"art","label":"abap-unit-runner","ring":"independent","href":"/abap/artifacts/xexer-abap-unit-runner","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:xexer-cds-field-mapping","kind":"art","label":"CDS Field Mapping","ring":"independent","href":"/abap/artifacts/xexer-cds-field-mapping","icon":"web-tool","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:xexer-cloudification-repository-viewer","kind":"art","label":"Cloudification Repository Viewer","ring":"independent","href":"/abap/artifacts/xexer-cloudification-repository-viewer","icon":"web-tool","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:xexer-my-ide-actions","kind":"art","label":"my-ide-actions","ring":"independent","href":"/abap/artifacts/xexer-my-ide-actions","icon":"ide-extension","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:xexer-odata-batch-creator","kind":"art","label":"OData Batch Creator","ring":"independent","href":"/abap/artifacts/xexer-odata-batch-creator","icon":"web-tool","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:xexer-xlf-translator","kind":"art","label":"XLF Translator","ring":"independent","href":"/abap/artifacts/xexer-xlf-translator","icon":"web-tool","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:xinitrc86-adash-services","kind":"art","label":"adash-services","ring":"independent","href":"/abap/artifacts/xinitrc86-adash-services","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:xinitrc86","kind":"actor","label":"xinitrc86","href":"/actors/xinitrc86","icon":"actor","initials":"X","avatar":"/avatars/xinitrc86.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:xinitrc86-zthread","kind":"art","label":"zthread","ring":"independent","href":"/abap/artifacts/xinitrc86-zthread","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:yannick-thirion-klystron","kind":"art","label":"Klystron","ring":"independent","href":"/abap/artifacts/yannick-thirion-klystron","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:yassinbahri-pyrfc-mcp","kind":"art","label":"pyrfc-mcp","ring":"independent","href":"/abap/artifacts/yassinbahri-pyrfc-mcp","icon":"mcp-server","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:yassinbahri","kind":"actor","label":"Yassin Bahri","href":"/actors/yassinbahri","icon":"actor","initials":"YB","avatar":"/avatars/yassinbahri.png","ecos":["abap","btp"],"homeEcos":["abap","btp"]},{"id":"artifact:yassinbahri-sap-knowledge-pipeline","kind":"art","label":"sap-knowledge-pipeline","ring":"independent","href":"/btp/artifacts/yassinbahri-sap-knowledge-pipeline","icon":"package","homeEco":"btp","ecos":["btp"],"homeEcos":["btp"]},{"id":"artifact:ysichov-abap-ai-code-tools","kind":"art","label":"ABAP-AI-CODE-TOOLS","ring":"independent","href":"/abap/artifacts/ysichov-abap-ai-code-tools","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:ysichov","kind":"actor","label":"Yurii Sychov","href":"/actors/ysichov","icon":"actor","initials":"YS","avatar":"/avatars/ysichov.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:ysichov-abap-ai-code","kind":"art","label":"ABAP AI Code","ring":"independent","href":"/abap/artifacts/ysichov-abap-ai-code","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:ysichov-ace","kind":"art","label":"ACE","ring":"independent","href":"/abap/artifacts/ysichov-ace","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:ysichov-ave","kind":"art","label":"AVE","ring":"independent","href":"/abap/artifacts/ysichov-ave","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:ysichov-hr-dme","kind":"art","label":"HR_DME","ring":"independent","href":"/abap/artifacts/ysichov-hr-dme","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:ysichov-sap-easy-ai","kind":"art","label":"SAP-easy-AI","ring":"independent","href":"/abap/artifacts/ysichov-sap-easy-ai","icon":"sample","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:ysichov-simple-data-explorer","kind":"art","label":"Simple Data Explorer","ring":"independent","href":"/abap/artifacts/ysichov-simple-data-explorer","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:ysichov-smart-debugger","kind":"art","label":"Smart Debugger","ring":"independent","href":"/abap/artifacts/ysichov-smart-debugger","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:ysichov-vertex","kind":"art","label":"VERTEX","ring":"independent","href":"/abap/artifacts/ysichov-vertex","icon":"ide-extension","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"artifact:zedwin-ztct","kind":"art","label":"ZTCT","ring":"independent","href":"/abap/artifacts/zedwin-ztct","icon":"app","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:zedwin","kind":"actor","label":"Edwin Vleeshouwers","href":"/actors/zedwin","icon":"actor","initials":"EV","avatar":"/avatars/zedwin.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:zenrosadira-abap-tbox-csvman","kind":"art","label":"ABAP CSV Manager","ring":"independent","href":"/abap/artifacts/zenrosadira-abap-tbox-csvman","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"actor:zenrosadira","kind":"actor","label":"Marco Marrone","href":"/actors/zenrosadira","icon":"actor","initials":"MM","avatar":"/avatars/zenrosadira.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"artifact:zenrosadira-abap-tbox-stats","kind":"art","label":"ABAP Statistical Tools","ring":"independent","href":"/abap/artifacts/zenrosadira-abap-tbox-stats","icon":"package","homeEco":"abap","ecos":["abap"],"homeEcos":["abap"]},{"id":"external:abap-platform","kind":"external","label":"ABAP platform","href":"/externals/abap-platform","icon":"external","ecos":["abap","cap","ui5"],"homeEcos":["abap","cap"]},{"id":"external:ajv","kind":"external","label":"Ajv","href":"/externals/ajv","icon":"external","ecos":["ui5","cap"],"homeEcos":["ui5","cap"]},{"id":"external:anthropic-claude-api","kind":"external","label":"Claude API","href":"/externals/anthropic-claude-api","icon":"external","ecos":["cap","ui5","abap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"external:aws","kind":"external","label":"Amazon Web Services","href":"/externals/aws","icon":"external","ecos":["abap","btp"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"external:axios","kind":"external","label":"axios","href":"/externals/axios","icon":"external","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"external:babel-plugin-transform-react-jsx","kind":"external","label":"@babel/plugin-transform-react-jsx","href":"/externals/babel-plugin-transform-react-jsx","icon":"external","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"external:c3js","kind":"external","label":"C3.js","href":"/externals/c3js","icon":"external","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"external:cogniac-edgeflow-proxy","kind":"external","label":"EdgeFlow Proxy API","href":"/externals/cogniac-edgeflow-proxy","icon":"external","ecos":["digital-manufacturing"],"homeEcos":["digital-manufacturing"],"homeEco":"digital-manufacturing"},{"id":"external:cogniac-edgeflow","kind":"external","label":"Cogniac EdgeFlow","href":"/externals/cogniac-edgeflow","icon":"external","ecos":["digital-manufacturing"],"homeEcos":["digital-manufacturing"],"homeEco":"digital-manufacturing"},{"id":"external:databricks","kind":"external","label":"Databricks","href":"/externals/databricks","icon":"external","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"external:dayjs","kind":"external","label":"Day.js","href":"/externals/dayjs","icon":"external","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"external:deepagents","kind":"external","label":"Deep Agents","href":"/externals/deepagents","icon":"external","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"external:docker","kind":"external","label":"Docker","href":"/externals/docker","icon":"external","ecos":["abap","btp","ui5","cap"],"homeEcos":["abap","btp","cap"]},{"id":"external:drawio","kind":"external","label":"draw.io","href":"/externals/drawio","icon":"external","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"external:duckdb","kind":"external","label":"DuckDB","href":"/externals/duckdb","icon":"external","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"external:eclipse","kind":"external","label":"Eclipse IDE","href":"/externals/eclipse","icon":"external","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"external:fastembed","kind":"external","label":"FastEmbed","href":"/externals/fastembed","icon":"external","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"external:ffmpeg","kind":"external","label":"FFmpeg","href":"/externals/ffmpeg","icon":"external","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"external:github-copilot","kind":"external","label":"GitHub Copilot","href":"/externals/github-copilot","icon":"external","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"external:github","kind":"external","label":"GitHub","href":"/externals/github","icon":"external","ecos":["abap","btp","cap"],"homeEcos":["abap","btp","cap"]},{"id":"external:google-gemini","kind":"external","label":"Google Gemini","href":"/externals/google-gemini","icon":"external","ecos":["abap","cap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"external:goose","kind":"external","label":"goose","href":"/externals/goose","icon":"external","ecos":["abap","cap","ui5"]},{"id":"external:jdk","kind":"external","label":"Java Development Kit (JDK)","href":"/externals/jdk","icon":"external","ecos":["btp","abap","cap"],"homeEcos":["btp","abap","cap"]},{"id":"external:kafka","kind":"external","label":"Apache Kafka","href":"/externals/kafka","icon":"external","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"external:langchain-mcp-adapters","kind":"external","label":"@langchain/mcp-adapters","href":"/externals/langchain-mcp-adapters","icon":"external","ecos":["cap","btp","ui5"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"external:langgraph","kind":"external","label":"LangGraph","href":"/externals/langgraph","icon":"external","ecos":["cap","btp","ui5"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"external:microsoft-excel","kind":"external","label":"Microsoft Excel","href":"/externals/microsoft-excel","icon":"external","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"external:mongodb","kind":"external","label":"MongoDB","href":"/externals/mongodb","icon":"external","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"external:nats","kind":"external","label":"NATS","href":"/externals/nats","icon":"external","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"external:nodejs","kind":"external","label":"Node.js","href":"/externals/nodejs","icon":"external","ecos":["abap","ui5","btp","cap"],"homeEcos":["abap","ui5","btp","cap"]},{"id":"external:openrouter","kind":"external","label":"OpenRouter","href":"/externals/openrouter","icon":"external","ecos":["abap","cap","ui5"]},{"id":"external:playwright","kind":"external","label":"Playwright","href":"/externals/playwright","icon":"external","ecos":["abap","btp","cap"],"homeEcos":["abap","btp"]},{"id":"external:postgresql","kind":"external","label":"PostgreSQL","href":"/externals/postgresql","icon":"external","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"external:postmark","kind":"external","label":"Postmark","href":"/externals/postmark","icon":"external","ecos":["cap","ui5","abap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"external:pyrfc","kind":"external","label":"PyRFC","href":"/externals/pyrfc","icon":"external","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"external:qdrant","kind":"external","label":"Qdrant","href":"/externals/qdrant","icon":"external","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"external:redis","kind":"external","label":"Redis","href":"/externals/redis","icon":"external","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"external:sap-bw4hana","kind":"external","label":"SAP BW/4HANA","href":"/externals/sap-bw4hana","icon":"external","ecos":["abap","btp"],"homeEcos":["abap","btp"]},{"id":"external:sap-cloud-alm","kind":"external","label":"SAP Cloud ALM","href":"/externals/sap-cloud-alm","icon":"external","ecos":["abap","btp"],"homeEcos":["abap","btp"]},{"id":"external:sap-companion","kind":"external","label":"SAP Companion","href":"/externals/sap-companion","icon":"external","ecos":["cap","ui5"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"external:sap-digital-manufacturing","kind":"external","label":"SAP Digital Manufacturing","href":"/externals/sap-digital-manufacturing","icon":"external","ecos":["digital-manufacturing","ui5","btp"],"homeEcos":["digital-manufacturing"],"homeEco":"digital-manufacturing"},{"id":"external:sap-erp","kind":"external","label":"SAP ERP (ECC)","href":"/externals/sap-erp","icon":"external","ecos":["abap","btp"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"external:sap-focused-run","kind":"external","label":"SAP Focused Run","href":"/externals/sap-focused-run","icon":"external","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"external:sap-leanix","kind":"external","label":"SAP LeanIX","href":"/externals/sap-leanix","icon":"external","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"external:sap-nw-rfc-sdk","kind":"external","label":"SAP NetWeaver RFC SDK","href":"/externals/sap-nw-rfc-sdk","icon":"external","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"external:sap-product-availability-matrix","kind":"external","label":"SAP Product Availability Matrix","href":"/externals/sap-product-availability-matrix","icon":"external","ecos":["abap"]},{"id":"external:sap-s4hana-cloud-public-edition","kind":"external","label":"SAP S/4HANA Cloud Public Edition","href":"/externals/sap-s4hana-cloud-public-edition","icon":"external","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"external:sap-s4hana","kind":"external","label":"SAP S/4HANA","href":"/externals/sap-s4hana","icon":"external","ecos":["abap","btp","ui5"],"homeEcos":["abap","btp"]},{"id":"external:sap-successfactors","kind":"external","label":"SAP SuccessFactors","href":"/externals/sap-successfactors","icon":"external","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"external:sqlite","kind":"external","label":"SQLite","href":"/externals/sqlite","icon":"external","ecos":["abap","cap","ui5","btp"],"homeEcos":["abap","cap","btp"]},{"id":"external:terraform","kind":"external","label":"Terraform","href":"/externals/terraform","icon":"external","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"external:thingsboard","kind":"external","label":"ThingsBoard","href":"/externals/thingsboard","icon":"external","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"external:tricentis-test-automation-for-sap","kind":"external","label":"Tricentis Test Automation for SAP","href":"/externals/tricentis-test-automation-for-sap","icon":"external","ecos":["digital-manufacturing"],"homeEcos":["digital-manufacturing"],"homeEco":"digital-manufacturing"},{"id":"external:vite","kind":"external","label":"Vite","href":"/externals/vite","icon":"external","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:050-clean-core-measurement-preview","kind":"content","label":"050: Clean Core Measurement (Preview)","href":"/content/050-clean-core-measurement-preview","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:051-abap-cleaner-in-vs-code-installation-and-guide","kind":"content","label":"051: ABAP Cleaner in VS Code - Installation and Guide","href":"/content/051-abap-cleaner-in-vs-code-installation-and-guide","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:052-10-minutes-from-start-to-launchpad","kind":"content","label":"052: 10 Minutes from Start to Launchpad","href":"/content/052-10-minutes-from-start-to-launchpad","icon":"blog","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:a-25x-faster-mta-yaml-build-for-cap-nodejs","kind":"content","label":"A 25x faster mta.yaml build for SAP CAP Node.js projects","href":"/content/a-25x-faster-mta-yaml-build-for-cap-nodejs","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:a-cap-plugin-for-flexible-number-range-management","kind":"content","label":"A CAP Plugin for Flexible Number Range Management: cds-numberrange-plugin","href":"/content/a-cap-plugin-for-flexible-number-range-management","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-1","kind":"content","label":"A ChatGPT-like chat app built with modern SAP technologies (CAP, SAPUI5) – Part 1/3","href":"/content/a-chatgpt-like-chat-app-with-cap-and-sapui5-part-1","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-2","kind":"content","label":"A ChatGPT-like chat app built with modern SAP technologies (CAP, SAPUI5) – Part 2/3","href":"/content/a-chatgpt-like-chat-app-with-cap-and-sapui5-part-2","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-3","kind":"content","label":"A ChatGPT-like chat app built with modern SAP technologies (CAP, SAPUI5) – Part 3/3","href":"/content/a-chatgpt-like-chat-app-with-cap-and-sapui5-part-3","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:a-clearer-view-of-your-sap-integrations-under-the-new-api-policy","kind":"content","label":"A Clearer View of Your SAP Integrations Under the New API Policy","href":"/content/a-clearer-view-of-your-sap-integrations-under-the-new-api-policy","icon":"blog","ecos":["btp","abap","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:a-cross-application-fiori-app-to-print-adobe-forms","kind":"content","label":"A cross application Fiori APP to print Adobe Forms","href":"/content/a-cross-application-fiori-app-to-print-adobe-forms","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:a-fiori-launchpad-sandbox-for-all-your-cap-based-projects-overview","kind":"content","label":"A Fiori Launchpad Sandbox for all your CAP-based projects - Overview","href":"/content/a-fiori-launchpad-sandbox-for-all-your-cap-based-projects-overview","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:a-fiori-launchpad-sandbox-sample-project-setup","kind":"content","label":"A Fiori Launchpad Sandbox for all your CAP-based projects – Sample project setup","href":"/content/a-fiori-launchpad-sandbox-sample-project-setup","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:a-guide-to-cds-metadata-extensions-fiori-app-generation-and-sap-ui5-controller-e","kind":"content","label":"A Guide to CDS Metadata Extensions, Fiori App Generation and SAP UI5 Controller Extensions","href":"/content/a-guide-to-cds-metadata-extensions-fiori-app-generation-and-sap-ui5-controller-e","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:a-handy-custom-report-to-scan-sap-cds-views-for-usage-of-search-strings","kind":"content","label":"A Handy Custom Report to Scan SAP CDS Views for Usage of Search Strings","href":"/content/a-handy-custom-report-to-scan-sap-cds-views-for-usage-of-search-strings","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:a-major-hana-cli-version-built-with-the-help-of-ai","kind":"content","label":"Major New Version of the hana-cli: How It Was Built with the Help of AI (and a Lot of Human Review)","href":"/content/a-major-hana-cli-version-built-with-the-help-of-ai","icon":"blog","ecos":["cap","ui5","btp","abap","commerce"],"homeEcos":["cap","ui5","btp","abap","commerce"]},{"id":"content:a-method-to-create-an-adobe-form-attachment-for-a-work-item-using-the-class-conc","kind":"content","label":"A method to create an Adobe form attachment for a work item using the class concept.","href":"/content/a-method-to-create-an-adobe-form-attachment-for-a-work-item-using-the-class-conc","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:a-modern-workflow-for-sap-cloud-integration-with-cap-and-azure-devops","kind":"content","label":"A modern workflow for SAP Cloud Integration with CAP and Azure DevOps","href":"/content/a-modern-workflow-for-sap-cloud-integration-with-cap-and-azure-devops","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:a-natural-choice-sap-aif-can-now-expose-events-to-advanced-event-mesh-to-power-y","kind":"content","label":"A Natural Choice: SAP AIF can now expose events to Advanced Event Mesh to power your EDA","href":"/content/a-natural-choice-sap-aif-can-now-expose-events-to-advanced-event-mesh-to-power-y","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:a-practical-real-time-cti-widget-for-sap-sales-cloud-v2","kind":"content","label":"A Practical Real-Time CTI Widget for SAP Sales Cloud V2","href":"/content/a-practical-real-time-cti-widget-for-sap-sales-cloud-v2","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:a-simple-example-of-a-sap-rap-application-based-on-legacy-api-without-uuid-keys","kind":"content","label":"A simple example of a SAP RAP Application based on Legacy API without UUID keys","href":"/content/a-simple-example-of-a-sap-rap-application-based-on-legacy-api-without-uuid-keys","icon":"blog","ecos":["abap","cap"],"homeEcos":["abap","cap"]},{"id":"content:abap-and-agentic-ai-the-hidden-problem-in-real-projects","kind":"content","label":"ABAP and Agentic AI: The Hidden Problem in Real Projects","href":"/content/abap-and-agentic-ai-the-hidden-problem-in-real-projects","icon":"blog","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"content:abap-cloud-logger","kind":"content","label":"ABAP Cloud Logger","href":"/content/abap-cloud-logger","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:abap-code-to-wait-for-the-end-of-inbound-bgrfc-type-q-units","kind":"content","label":"ABAP code to wait for the end of \"inbound bgRFC type Q\" units","href":"/content/abap-code-to-wait-for-the-end-of-inbound-bgrfc-type-q-units","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:abap-create-dump","kind":"content","label":"ABAP - Create dump","href":"/content/abap-create-dump","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:abap-development-automation-with-arc-1-and-github-workflows","kind":"content","label":"ABAP Development Automation with ARC-1 and GitHub Workflows","href":"/content/abap-development-automation-with-arc-1-and-github-workflows","icon":"blog","ecos":["abap","btp","cap"],"homeEcos":["abap","btp"]},{"id":"content:abap-development-tools-for-visual-studio-code-is-now-available-on-the-vs-code-ma","kind":"content","label":"ABAP development tools for Visual Studio Code is now available on the VS Code marketplace!","href":"/content/abap-development-tools-for-visual-studio-code-is-now-available-on-the-vs-code-ma","icon":"blog","ecos":["cap","abap","btp","ui5","commerce"],"homeEcos":["cap","abap","btp","ui5","commerce"]},{"id":"content:abap-development-tools-for-visual-studio-code-patch-1-0-1-released","kind":"content","label":"ABAP development tools for Visual Studio Code: Patch 1.0.1 released","href":"/content/abap-development-tools-for-visual-studio-code-patch-1-0-1-released","icon":"blog","ecos":["cap","ui5","btp","abap","commerce"],"homeEcos":["cap","ui5","btp","abap","commerce"]},{"id":"content:abap-development-tools-for-visual-studio-code-version-1-1-released","kind":"content","label":"ABAP development tools for Visual Studio Code: Version 1.1 released","href":"/content/abap-development-tools-for-visual-studio-code-version-1-1-released","icon":"blog","ecos":["abap","cap","ui5","btp"],"homeEcos":["abap","cap","ui5","btp"]},{"id":"content:abap-development-under-the-clean-core-paradigm-from-bapis-to-bo-and-cds","kind":"content","label":"ABAP development under the Clean Core paradigm: From BAPIs to BO and CDS","href":"/content/abap-development-under-the-clean-core-paradigm-from-bapis-to-bo-and-cds","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:abap-in-practice-creating-a-setup-app","kind":"content","label":"ABAP in Practice - Creating a Setup App","href":"/content/abap-in-practice-creating-a-setup-app","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:abap-mcp-let-ai-do-real-development-in-your-sap-system","kind":"content","label":"ABAP + MCP: Let AI Do Real Development in Your SAP System","href":"/content/abap-mcp-let-ai-do-real-development-in-your-sap-system","icon":"blog","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"content:abap-s-parallel-processing-frameworks-practical-guide-to-performance-tuning-of-m","kind":"content","label":"ABAP's Parallel Processing Frameworks: Practical Guide to Performance Tuning of Mass Data Processing","href":"/content/abap-s-parallel-processing-frameworks-practical-guide-to-performance-tuning-of-m","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:ac-agentic-ai-and-ai-agents","kind":"content","label":"Agentic AI & AI Agents","href":"/content/ac-agentic-ai-and-ai-agents","icon":"reference-architecture","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:ac-agentic-engineering-for-sap-btp-extensions","kind":"content","label":"Agentic Engineering for SAP BTP Extensions","href":"/content/ac-agentic-engineering-for-sap-btp-extensions","icon":"reference-architecture","ecos":["cap","abap","ui5","btp","commerce"],"homeEcos":["cap","abap","ui5","btp","commerce"]},{"id":"content:ac-ai-native-north-star-architecture","kind":"content","label":"AI-native North Star architecture — Platform Layer","href":"/content/ac-ai-native-north-star-architecture","icon":"reference-architecture","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:ac-api-managed-integration","kind":"content","label":"API Managed Integration","href":"/content/ac-api-managed-integration","icon":"reference-architecture","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"content:ac-application-to-application-integration","kind":"content","label":"Application to Application Integration","href":"/content/ac-application-to-application-integration","icon":"reference-architecture","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"content:ac-business-to-business-integration","kind":"content","label":"Business to Business Integration","href":"/content/ac-business-to-business-integration","icon":"reference-architecture","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"content:ac-connect-business-processes-with-sap-master-data-integration","kind":"content","label":"Connect Business Processes with SAP Master Data Integration","href":"/content/ac-connect-business-processes-with-sap-master-data-integration","icon":"reference-architecture","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"content:ac-designing-event-driven-applications","kind":"content","label":"Designing Event-Driven Applications","href":"/content/ac-designing-event-driven-applications","icon":"reference-architecture","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:ac-devops-with-sap-btp","kind":"content","label":"DevOps with SAP BTP","href":"/content/ac-devops-with-sap-btp","icon":"reference-architecture","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:ac-edge-integration-cell-on-hyperscalers","kind":"content","label":"Edge Integration Cell on Hyperscalers","href":"/content/ac-edge-integration-cell-on-hyperscalers","icon":"reference-architecture","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"content:ac-establish-a-central-entry-point-with-sap-build-work-zone","kind":"content","label":"Establish a central entry point with SAP Build Work Zone","href":"/content/ac-establish-a-central-entry-point-with-sap-build-work-zone","icon":"reference-architecture","ecos":["btp","cap","ui5"],"homeEcos":["btp","cap","ui5"]},{"id":"content:ac-establish-a-central-inbox-with-sap-task-center","kind":"content","label":"Establish a central inbox with SAP Task Center","href":"/content/ac-establish-a-central-inbox-with-sap-task-center","icon":"reference-architecture","ecos":["btp","cap","ui5"],"homeEcos":["btp","ui5"]},{"id":"content:ac-explore-your-hyperscaler-data-with-sap-business-data-cloud","kind":"content","label":"Explore your Hyperscaler data with SAP Business Data Cloud","href":"/content/ac-explore-your-hyperscaler-data-with-sap-business-data-cloud","icon":"reference-architecture","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"content:ac-federated-machine-learning-with-sap-datasphere","kind":"content","label":"Federated Machine Learning with SAP Datasphere","href":"/content/ac-federated-machine-learning-with-sap-datasphere","icon":"reference-architecture","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"content:ac-generative-ai-on-sap-btp","kind":"content","label":"Generative AI on SAP BTP","href":"/content/ac-generative-ai-on-sap-btp","icon":"reference-architecture","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:ac-hana-ai-toolkit-local-mcp-server","kind":"content","label":"HANA AI Toolkit — Local MCP Server","href":"/content/ac-hana-ai-toolkit-local-mcp-server","icon":"reference-architecture","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:ac-integrate-and-extend-with-sap-build-process-automation","kind":"content","label":"Integrate and Extend with SAP Build Process Automation","href":"/content/ac-integrate-and-extend-with-sap-build-process-automation","icon":"reference-architecture","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"content:ac-integrating-and-extending-joule","kind":"content","label":"Integrating and Extending Joule","href":"/content/ac-integrating-and-extending-joule","icon":"reference-architecture","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap","ui5"]},{"id":"content:ac-medallion-reference-architecture-for-big-data-processing-in-sap-hana-cloud","kind":"content","label":"Medallion Reference Architecture for Big Data Processing in SAP HANA Cloud","href":"/content/ac-medallion-reference-architecture-for-big-data-processing-in-sap-hana-cloud","icon":"reference-architecture","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:ac-multi-region-ha-dr-resiliency-patterns","kind":"content","label":"Architecting Multi-Region HA/DR resiliency patterns","href":"/content/ac-multi-region-ha-dr-resiliency-patterns","icon":"reference-architecture","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:ac-multitenant-saas-application-using-cap","kind":"content","label":"Multitenant SaaS Application using CAP","href":"/content/ac-multitenant-saas-application-using-cap","icon":"reference-architecture","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:ac-sap-document-ai","kind":"content","label":"SAP Document AI","href":"/content/ac-sap-document-ai","icon":"reference-architecture","ecos":["btp","cap","ui5"],"homeEcos":["btp","cap","ui5"]},{"id":"content:ac-sap-hana-cloud-as-an-esri-geodatabase","kind":"content","label":"SAP HANA Cloud as an Esri Geodatabase","href":"/content/ac-sap-hana-cloud-as-an-esri-geodatabase","icon":"reference-architecture","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:ac-sap-iam-integration-with-sap-cloud-identity-services","kind":"content","label":"SAP IAM integration with SAP Cloud Identity Services","href":"/content/ac-sap-iam-integration-with-sap-cloud-identity-services","icon":"reference-architecture","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:ac-secure-service-consumption-across-hyperscalers","kind":"content","label":"Secure Service Consumption Across Hyperscalers","href":"/content/ac-secure-service-consumption-across-hyperscalers","icon":"reference-architecture","ecos":["cap","btp","abap","ui5","digital-manufacturing"],"homeEcos":["cap","btp","abap","ui5","digital-manufacturing"]},{"id":"content:ac-third-party-mcp-server-access-to-sap-solutions-on-btp","kind":"content","label":"Third-Party MCP Server Access to SAP Solutions on BTP","href":"/content/ac-third-party-mcp-server-access-to-sap-solutions-on-btp","icon":"reference-architecture","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:ac-transforming-enterprise-data-strategy-with-sap-business-data-cloud","kind":"content","label":"Transforming Enterprise Data Strategy with SAP Business Data Cloud","href":"/content/ac-transforming-enterprise-data-strategy-with-sap-business-data-cloud","icon":"reference-architecture","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:ac-transitioning-architectures-from-sap-netweaver","kind":"content","label":"Transitioning Architectures from SAP NetWeaver","href":"/content/ac-transitioning-architectures-from-sap-netweaver","icon":"reference-architecture","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:accelerating-your-analytics-with-delta-table-replication-into-sap-hana-cloud","kind":"content","label":"Accelerating Your Analytics with Delta Table Replication into SAP HANA Cloud","href":"/content/accelerating-your-analytics-with-delta-table-replication-into-sap-hana-cloud","icon":"blog","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:adaptation-project-sap-fiori","kind":"content","label":"Adaptation Project: SAP標準Fioriアプリのフィルタ項目を必須入力へするための方法","href":"/content/adaptation-project-sap-fiori","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:adapting-sap-joule-for-purchase-order-creation-from-an-existing-purchase-requisi","kind":"content","label":"Adapting SAP Joule for Purchase Order Creation from an Existing Purchase Requisition","href":"/content/adapting-sap-joule-for-purchase-order-creation-from-an-existing-purchase-requisi","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:add-useful-extensions-to-dev-spaces-in-bas","kind":"content","label":"Add useful Extensions to Dev spaces in SAP Business Application Studio","href":"/content/add-useful-extensions-to-dev-spaces-in-bas","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:adding-a-custom-action-button-with-an-icon-to-a-fiori-elements-list-report","kind":"content","label":"Fiori Elements のList Reportアプリにカスタムアクションボタンを追加し、カスタムコントローラーを用いてアイコン化する","href":"/content/adding-a-custom-action-button-with-an-icon-to-a-fiori-elements-list-report","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:adding-a-shell-plugin-to-a-fiori-cap-application","kind":"content","label":"Adding Shell Plugin to SAP Fiori CAP Application and Deploying to Cloud Portal Service","href":"/content/adding-a-shell-plugin-to-a-fiori-cap-application","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:adding-a-swagger-ui-to-your-cap-nodejs-service","kind":"content","label":"Adding a Swagger UI to Your SAP Cloud Application Programming Model / Node.js Service","href":"/content/adding-a-swagger-ui-to-your-cap-nodejs-service","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:adding-custom-metrics-to-a-cap-application-using-cap-js-telementry-plugin-and-sa","kind":"content","label":"Adding Custom Metrics to a CAP application using cap-js/telementry plugin and SAP Cloud Logging","href":"/content/adding-custom-metrics-to-a-cap-application-using-cap-js-telementry-plugin-and-sa","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:adding-immutable-blockchain-proofs-to-sap-with-cap","kind":"content","label":"Adding Immutable Blockchain Proofs to SAP With CAP - Cardano and OData V4","href":"/content/adding-immutable-blockchain-proofs-to-sap-with-cap","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:agentic-ai-on-btp-a-multi-agent-app-with-pydantic-ai","kind":"content","label":"Agentic AI on BTP: a Multi‑Agent App with Pydantic AI","href":"/content/agentic-ai-on-btp-a-multi-agent-app-with-pydantic-ai","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:agentic-ai-on-btp-a-single-agent-with-langgraph","kind":"content","label":"Agentic AI on BTP: a Single Agent with LangGraph","href":"/content/agentic-ai-on-btp-a-single-agent-with-langgraph","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:ai-powered-user-experience-with-sap-cap-ai","kind":"content","label":"Enhancing Enterprise Applications: AI-powered User Experience with SAP CAP AI Plugin","href":"/content/ai-powered-user-experience-with-sap-cap-ai","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:an-innovative-language-exchange-app-with-build-apps-cap-kyma-and-openai","kind":"content","label":"An Innovative Language Exchange App developed with SAP Build Apps, CAP, Kyma, and OpenAI","href":"/content/an-innovative-language-exchange-app-with-build-apps-cap-kyma-and-openai","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:an-introduction-to-cds-graphical-modeler-for-bas","kind":"content","label":"An introduction to CDS Graphical Modeler for SAP Business Application Studio","href":"/content/an-introduction-to-cds-graphical-modeler-for-bas","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:api-composition-seamless-enterprise-data-access-for-developers-and-ai-agents","kind":"content","label":"API Composition: Seamless Enterprise Data Access for Developers and AI Agents","href":"/content/api-composition-seamless-enterprise-data-access-for-developers-and-ai-agents","icon":"blog","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:arc-1-1-0-one-deployment-multiple-sap-systems","kind":"content","label":"ARC-1 1.0: One Deployment, Multiple SAP Systems","href":"/content/arc-1-1-0-one-deployment-multiple-sap-systems","icon":"blog","ecos":["abap","btp","cap"],"homeEcos":["abap","btp"]},{"id":"content:arc-1-on-sap-btp-secure-abap-agentic-development-beyond-the-laptop","kind":"content","label":"ARC-1 on SAP BTP: Secure ABAP Agentic Development Beyond the Laptop","href":"/content/arc-1-on-sap-btp-secure-abap-agentic-development-beyond-the-laptop","icon":"blog","ecos":["abap","btp","cap"],"homeEcos":["abap","btp","cap"]},{"id":"content:arc-1-with-copilot-studio-sap-system-context-beyond-developers","kind":"content","label":"ARC-1 with Copilot Studio: SAP System Context Beyond Developers","href":"/content/arc-1-with-copilot-studio-sap-system-context-beyond-developers","icon":"blog","ecos":["abap","btp","cap","ui5"],"homeEcos":["abap","btp","cap","ui5"]},{"id":"content:arc-1-with-joule-studio-bringing-real-abap-system-context-into-joule","kind":"content","label":"ARC-1 with Joule Studio: Bringing Real ABAP System Context into Joule","href":"/content/arc-1-with-joule-studio-bringing-real-abap-system-context-into-joule","icon":"blog","ecos":["abap","btp","cap"],"homeEcos":["abap","btp"]},{"id":"content:architecting-multiple-s4hana-backends-with-principal-propagation-part-1","kind":"content","label":"Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]","href":"/content/architecting-multiple-s4hana-backends-with-principal-propagation-part-1","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:architecting-multiple-s4hana-backends-with-principal-propagation-part-2","kind":"content","label":"Part2: Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]","href":"/content/architecting-multiple-s4hana-backends-with-principal-propagation-part-2","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:architecting-multiple-s4hana-backends-with-principal-propagation-part-3","kind":"content","label":"Part 3: Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]","href":"/content/architecting-multiple-s4hana-backends-with-principal-propagation-part-3","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:architecting-saas-resilience-against-s4hana-variance","kind":"content","label":"Part 2: Architecting SaaS Resilience Against S/4HANA Variance","href":"/content/architecting-saas-resilience-against-s4hana-variance","icon":"blog","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp","ui5"]},{"id":"content:attachment-upload-and-download-with-uploadsetwithtable","kind":"content","label":"Building an Attachment Upload and Download Solution Using UploadSetwithTable Control","href":"/content/attachment-upload-and-download-with-uploadsetwithtable","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:authorization-management-service-in-sap-cloud-identity-service","kind":"content","label":"Authorization Management Service in SAP Cloud Identity Service","href":"/content/authorization-management-service-in-sap-cloud-identity-service","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:authorization-management-with-opensearch-s-document-level-security-sap-cloud-log","kind":"content","label":"Authorization management with OpenSearch's Document Level Security - SAP Cloud Logging","href":"/content/authorization-management-with-opensearch-s-document-level-security-sap-cloud-log","icon":"blog","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:automate-btp-custom-domain-certificates-using-lets-encrypt","kind":"content","label":"Automate BTP Custom Domain certificates using Let's Encrypt","href":"/content/automate-btp-custom-domain-certificates-using-lets-encrypt","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:automate-recurring-data-updates-in-sap-hana-cloud","kind":"content","label":"Automate Recurring Data Updates in SAP HANA Cloud","href":"/content/automate-recurring-data-updates-in-sap-hana-cloud","icon":"blog","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:automate-your-job-postings-using-generative-ai-and-sbpa","kind":"content","label":"Automate your Job Postings Using Generative AI (ChatGPT) & SAP Build Process Automation Apps","href":"/content/automate-your-job-postings-using-generative-ai-and-sbpa","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:automating-iflow-documentation-with-sap-integration-suite-and-gemini-ai","kind":"content","label":"Automating iFlow Documentation with SAP Integration Suite and Gemini AI","href":"/content/automating-iflow-documentation-with-sap-integration-suite-and-gemini-ai","icon":"blog","ecos":["btp","digital-manufacturing","ui5"],"homeEcos":["btp","digital-manufacturing"]},{"id":"content:automating-user-offboarding-in-sap-btp-across-multiple-subaccounts-with-powershe","kind":"content","label":"Automating User Offboarding in SAP BTP Across Multiple Subaccounts with PowerShell & BTP CLI","href":"/content/automating-user-offboarding-in-sap-btp-across-multiple-subaccounts-with-powershe","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:autonomous-diagnostics-on-kyma-unplugged-goose-litellm-kro-sap-ai-core-in-produc","kind":"content","label":"Autonomous Diagnostics on Kyma Unplugged: Goose + LiteLLM + KRO + SAP AI Core in Production","href":"/content/autonomous-diagnostics-on-kyma-unplugged-goose-litellm-kro-sap-ai-core-in-produc","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:avoid-design-time-cap-server-restarts-with-local-data-files","kind":"content","label":"Avoid design time CAP server restarts when maintaining local data files","href":"/content/avoid-design-time-cap-server-restarts-with-local-data-files","icon":"blog","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:avoiding-data-loss-when-loading-initial-data-with-csv-files","kind":"content","label":"Avoiding Data Loss When Loading Initial Data with CSV Files in CAP","href":"/content/avoiding-data-loss-when-loading-initial-data-with-csv-files","icon":"blog","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:aws-mail-configuration-for-sap-abap-systems","kind":"content","label":"AWS Mail configuration for SAP ABAP Systems","href":"/content/aws-mail-configuration-for-sap-abap-systems","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:banking-sentinel-a-multi-agent-credit-risk-copilot","kind":"content","label":"Banking Sentinel: A Multi-Agent Credit-Risk Copilot on SAP BTP, Built on a Mixed AI Stack","href":"/content/banking-sentinel-a-multi-agent-credit-risk-copilot","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:basic-code-s-of-abap","kind":"content","label":"Basic code's of ABAP","href":"/content/basic-code-s-of-abap","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:batch-file-pickup-and-dynamic-zip-creation-in-sap-integration-suite","kind":"content","label":"Batch File Pickup and Dynamic ZIP Creation in SAP Integration Suite","href":"/content/batch-file-pickup-and-dynamic-zip-creation-in-sap-integration-suite","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:before-you-upgrade-s4hana-static-ui5-checks-with-mcp","kind":"content","label":"Before You Upgrade S/4HANA: Static UI5 Checks with MCP","href":"/content/before-you-upgrade-s4hana-static-ui5-checks-with-mcp","icon":"blog","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:beginners-guide-to-advanced-event-mesh","kind":"content","label":"Beginners Guide to Advanced Event Mesh","href":"/content/beginners-guide-to-advanced-event-mesh","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:behavior-illegal-statement-dump-technical-workarounds","kind":"content","label":"BEHAVIOR_ILLEGAL_STATEMENT dump | Technical workarounds","href":"/content/behavior-illegal-statement-dump-technical-workarounds","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:beyond-basic-ai-error-handling-in-sap-cpi-a-rules-first-architecture-with-hana-c","kind":"content","label":"Beyond Basic AI Error Handling in SAP CPI - A Rules-First Architecture with HANA Cloud Learning","href":"/content/beyond-basic-ai-error-handling-in-sap-cpi-a-rules-first-architecture-with-hana-c","icon":"blog","ecos":["btp","cap","ui5","abap"],"homeEcos":["btp","cap","ui5","abap"]},{"id":"content:beyond-read-text-decoding-sapscript-long-texts-stxl-with-sqlscript-in-cds-amdp","kind":"content","label":"Beyond READ_TEXT: Decoding SAPscript Long Texts (STXL) with SQLScript in CDS/AMDP","href":"/content/beyond-read-text-decoding-sapscript-long-texts-stxl-with-sqlscript-in-cds-amdp","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:beyond-rest-exploring-graphql-api-integration-in-sap-btp-integration-suite","kind":"content","label":"Beyond REST: Exploring GraphQL API Integration in SAP BTP Integration Suite","href":"/content/beyond-rest-exploring-graphql-api-integration-in-sap-btp-integration-suite","icon":"blog","ecos":["btp","digital-manufacturing","ui5"],"homeEcos":["btp","digital-manufacturing"]},{"id":"content:bo-interface-apis-an-alternative-to-bapis-and-traditional-fms","kind":"content","label":"BO Interface APIs : An alternative to BAPIs and traditional FMs","href":"/content/bo-interface-apis-an-alternative-to-bapis-and-traditional-fms","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:boosting-performance-in-cap-with-cds-caching","kind":"content","label":"Boosting performance in SAP Cloud Application Programming Model (CAP) applications with cds-caching","href":"/content/boosting-performance-in-cap-with-cds-caching","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:btp-ai-bp-access-to-generative-ai-models","kind":"content","label":"Access to Generative AI Models","href":"/content/btp-ai-bp-access-to-generative-ai-models","icon":"doc","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:btp-ai-bp-agentic-ai-security-governance","kind":"content","label":"Agentic AI Security & Governance","href":"/content/btp-ai-bp-agentic-ai-security-governance","icon":"doc","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:btp-ai-bp-content-filtering","kind":"content","label":"Content Filtering","href":"/content/btp-ai-bp-content-filtering","icon":"doc","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"content:btp-ai-bp-custom-joule-skills","kind":"content","label":"Custom Joule Skills","href":"/content/btp-ai-bp-custom-joule-skills","icon":"doc","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:btp-ai-bp-data-masking","kind":"content","label":"Data Masking","href":"/content/btp-ai-bp-data-masking","icon":"doc","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"content:btp-ai-bp-document-grounding","kind":"content","label":"Document Grounding","href":"/content/btp-ai-bp-document-grounding","icon":"doc","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp"]},{"id":"content:btp-ai-bp-joule-agent-builder","kind":"content","label":"Content-based Agents with SAP Joule Studio Agent Builder","href":"/content/btp-ai-bp-joule-agent-builder","icon":"doc","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:btp-ai-bp-mcp","kind":"content","label":"Model Context Protocol (MCP)","href":"/content/btp-ai-bp-mcp","icon":"doc","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:btp-ai-bp-pro-code-ai-agents","kind":"content","label":"Pro-Code AI Agents","href":"/content/btp-ai-bp-pro-code-ai-agents","icon":"doc","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:btp-ai-bp-prompt-templating","kind":"content","label":"Prompt Templating","href":"/content/btp-ai-bp-prompt-templating","icon":"doc","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"content:btp-ai-bp-vector-rag-vs-graph-rag","kind":"content","label":"Vector RAG vs Graph RAG","href":"/content/btp-ai-bp-vector-rag-vs-graph-rag","icon":"doc","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:btp-audit-log-mcp-server-security-monitoring-with-ai-assistants","kind":"content","label":"BTP Audit Log MCP Server: Security Monitoring with AI Assistants","href":"/content/btp-audit-log-mcp-server-security-monitoring-with-ai-assistants","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap"]},{"id":"content:btp-authorization-object","kind":"content","label":"BTP - Authorization Object","href":"/content/btp-authorization-object","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:btp-cap-custom-plugin-to-separate-generic-change-log-capture-logic","kind":"content","label":"BTP CAP : Custom plugin to separate generic change log capture logic","href":"/content/btp-cap-custom-plugin-to-separate-generic-change-log-capture-logic","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:btp-cloud-foundry-mcp-server-managing-cf-environments-with-ai","kind":"content","label":"BTP Cloud Foundry MCP Server: Managing CF Environments with AI","href":"/content/btp-cloud-foundry-mcp-server-managing-cf-environments-with-ai","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:btp-launchpad-sapui5-cpi-iflow","kind":"content","label":"从BTP Launchpad里的sapui5应用里调用部署的CPI IFLOW","href":"/content/btp-launchpad-sapui5-cpi-iflow","icon":"blog","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp","ui5"]},{"id":"content:btp-restriction-type","kind":"content","label":"BTP - Restriction Type","href":"/content/btp-restriction-type","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:btp-sapcap-quirky-nuggets-n01-n02","kind":"content","label":"#BTP #SAPCAP: Quirky Nuggets (N01-N02)","href":"/content/btp-sapcap-quirky-nuggets-n01-n02","icon":"blog","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:btp-sapcap-quirky-nuggets-n03-n04","kind":"content","label":"#BTP #SAPCAP: Quirky Nuggets (N03-N04)","href":"/content/btp-sapcap-quirky-nuggets-n03-n04","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:btp-sapcap-quirky-nuggets-n05-n06","kind":"content","label":"#BTP #SAPCAP: Quirky Nuggets (N05-N06)","href":"/content/btp-sapcap-quirky-nuggets-n05-n06","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:build-a-btp-cap-app-with-fiori-integration-part-2","kind":"content","label":"Build BTP CAP App with Fiori Integration – Part 2: Implementing End to End App","href":"/content/build-a-btp-cap-app-with-fiori-integration-part-2","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:build-an-overview-page-with-hana-cloud-and-cap-service-annotations","kind":"content","label":"Build SAP Overview Page using SAP HANA Cloud & SAP CAP service annotations in Visual Studio Code","href":"/content/build-an-overview-page-with-hana-cloud-and-cap-service-annotations","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:build-and-deploy-a-cap-nodejs-api-with-fiori-elements-and-a-managed-approuter","kind":"content","label":"Build and deploy a CAP Project Node.js API with a SAP Fiori Elements UI and a managed approuter configuration","href":"/content/build-and-deploy-a-cap-nodejs-api-with-fiori-elements-and-a-managed-approuter","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:build-configure-and-deploy-cap-projects-to-the-cloud","kind":"content","label":"Build, Configure, and Deploy SAP CAP Projects to the Cloud","href":"/content/build-configure-and-deploy-cap-projects-to-the-cloud","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:build-solutions-for-sap-cloud-erp-with-confidence","kind":"content","label":"Build Solutions for SAP Cloud ERP with confidence","href":"/content/build-solutions-for-sap-cloud-erp-with-confidence","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:build-your-ai-agent-prototype-for-free-using-sap-cap-langchain-and-ollama-cloud","kind":"content","label":"Build Your AI Agent prototype for free using SAP CAP, LangChain and Ollama cloud","href":"/content/build-your-ai-agent-prototype-for-free-using-sap-cap-langchain-and-ollama-cloud","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:building-a-cap-app-with-fiori-part-1-environment-and-hana-cloud","kind":"content","label":"Building a CAP App with Fiori Integration – Part 1: Environment & HANA Cloud Setup","href":"/content/building-a-cap-app-with-fiori-part-1-environment-and-hana-cloud","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:building-a-cap-service-with-cds-mcp-and-cline","kind":"content","label":"Building a CAP service with cds‑mcp and Cline — HANDS‑ON SUPER BASIC GUIDE [ with screenshots ] 🍌","href":"/content/building-a-cap-service-with-cds-mcp-and-cline","icon":"blog","ecos":["cap","abap","ui5","btp","commerce"],"homeEcos":["cap","abap","ui5","btp","commerce"]},{"id":"content:building-a-genai-inventory-assistant-with-cap-rag-and-a-vector-database","kind":"content","label":"Building a Generative AI-powered Inventory Assistant with SAP CAP, RAG, and Vector Database","href":"/content/building-a-genai-inventory-assistant-with-cap-rag-and-a-vector-database","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:building-a-pro-code-agent-on-sap-btp-part-2-the-agent-langgraph-genai-hub","kind":"content","label":"Building a Pro-Code Agent on SAP BTP — Part 2: The Agent (LangGraph + GenAI Hub)","href":"/content/building-a-pro-code-agent-on-sap-btp-part-2-the-agent-langgraph-genai-hub","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:building-a-pro-code-agent-on-sap-btp-part-3-joule-integration-via-a2a","kind":"content","label":"Building a Pro-Code Agent on SAP BTP — Part 3: Joule Integration via A2A","href":"/content/building-a-pro-code-agent-on-sap-btp-part-3-joule-integration-via-a2a","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:building-a-real-time-currency-conversion-iflow-using-sap-cloud-integration-cpi","kind":"content","label":"Building a Real‑Time Currency Conversion iFlow using SAP Cloud Integration (CPI)","href":"/content/building-a-real-time-currency-conversion-iflow-using-sap-cloud-integration-cpi","icon":"blog","ecos":["btp","digital-manufacturing","ui5","cap","abap"],"homeEcos":["btp","digital-manufacturing","cap","abap"]},{"id":"content:building-a-saas-multitenant-cap-application-without-a-database","kind":"content","label":"Building a SaaS Multitenant Application Using SAP CAP Framework — Without a Database","href":"/content/building-a-saas-multitenant-cap-application-without-a-database","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:building-an-analytical-list-page-with-cap-odata-v4","kind":"content","label":"Building an Analytical List Page with CAP OData V4","href":"/content/building-an-analytical-list-page-with-cap-odata-v4","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:building-an-enterprise-application-with-fiori-elements-and-cap-part-1","kind":"content","label":"Building an Enterprise Application Using Fiori Elements and CAP - Part 1","href":"/content/building-an-enterprise-application-with-fiori-elements-and-cap-part-1","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:building-an-enterprise-application-with-fiori-elements-and-cap-part-2","kind":"content","label":"Building an Enterprise Application Using Fiori Elements and CAP – Part 2","href":"/content/building-an-enterprise-application-with-fiori-elements-and-cap-part-2","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:building-an-enterprise-application-with-fiori-elements-and-cap-part-3","kind":"content","label":"Building an Enterprise Application Using Fiori Elements and CAP – Part 3","href":"/content/building-an-enterprise-application-with-fiori-elements-and-cap-part-3","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:building-an-enterprise-ready-sap-ai-agent-with-open-source","kind":"content","label":"Building an Enterprise-Ready SAP AI Agent with Open Source","href":"/content/building-an-enterprise-ready-sap-ai-agent-with-open-source","icon":"blog","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"content:building-an-llm-agent-in-cap-java-with-spring-ai","kind":"content","label":"Building an LLM Agent in CAP Java with Spring AI","href":"/content/building-an-llm-agent-in-cap-java-with-spring-ai","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:building-an-llm-agent-using-cap","kind":"content","label":"Building an LLM Agent using CAP","href":"/content/building-an-llm-agent-using-cap","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:building-an-s4hana-cloud-extension-with-cap-cloud-sdk-and-fiori-elements-part-1","kind":"content","label":"Part 1: How to build an extension application for SAP S/4HANA Cloud using CAP, SAP Cloud SDK and SAP Fiori elements","href":"/content/building-an-s4hana-cloud-extension-with-cap-cloud-sdk-and-fiori-elements-part-1","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:building-an-s4hana-cloud-extension-with-cap-cloud-sdk-and-fiori-elements-part-2","kind":"content","label":"Part 2: How to build an extension application for SAP S/4HANA Cloud using CAP, SAP Cloud SDK and SAP Fiori elements","href":"/content/building-an-s4hana-cloud-extension-with-cap-cloud-sdk-and-fiori-elements-part-2","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:building-an-sap-btp-agent-architecture-from-scratch-python-cap-hana","kind":"content","label":"Building an SAP BTP Agent Architecture from Scratch: Python + CAP + HANA","href":"/content/building-an-sap-btp-agent-architecture-from-scratch-python-cap-hana","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp"]},{"id":"content:building-and-consuming-an-mcp-server-in-sap-integration-suite-connecting-it-to-c","kind":"content","label":"Building and Consuming an MCP Server in SAP Integration Suite - Connecting it to Claude and Joule","href":"/content/building-and-consuming-an-mcp-server-in-sap-integration-suite-connecting-it-to-c","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:building-custom-authentication-in-sap-cap","kind":"content","label":"Building Custom Authentication in SAP CAP","href":"/content/building-custom-authentication-in-sap-cap","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:building-custom-joule-skills-via-rfc-guide-for-sap-s-4hana-and-ecc-integration","kind":"content","label":"Building Custom Joule Skills via RFC: Guide for SAP S/4HANA and ECC Integration","href":"/content/building-custom-joule-skills-via-rfc-guide-for-sap-s-4hana-and-ecc-integration","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:building-durable-ai-agents-cds-langgraph-persistence","kind":"content","label":"Building Durable AI Agents - Announcing the cds-langgraph-persistence Plugin","href":"/content/building-durable-ai-agents-cds-langgraph-persistence","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:building-mcp-servers-with-sap-integration-suite","kind":"content","label":"Building MCP Servers with SAP Integration Suite: What to Design, Not Just How to Connect","href":"/content/building-mcp-servers-with-sap-integration-suite","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:building-saas-products-on-sap-btp","kind":"content","label":"Building SaaS Products on SAP BTP","href":"/content/building-saas-products-on-sap-btp","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:building-secure-sapui5-applications-best-practices-for-developers","kind":"content","label":"Building Secure SAPUI5 Applications: Best Practices for Developers","href":"/content/building-secure-sapui5-applications-best-practices-for-developers","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:by-passing-function-modules-in-aunits","kind":"content","label":"By-passing function modules in aunits","href":"/content/by-passing-function-modules-in-aunits","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:calculating-ibp-technical-week-key-figure-date-in-s-4hana-using-cds-view","kind":"content","label":"Calculating IBP Technical Week \"Key Figure Date\" in S/4HANA Using CDS View","href":"/content/calculating-ibp-technical-week-key-figure-date-in-s-4hana-using-cds-view","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:call-a-remote-odata-api-from-a-local-cap-java-project","kind":"content","label":"How to Call a Remote OData API from Your Local CAP Java Project","href":"/content/call-a-remote-odata-api-from-a-local-cap-java-project","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:call-bapi-in-custom-entity-through-rap","kind":"content","label":"CALL BAPI IN CUSTOM ENTITY THROUGH RAP","href":"/content/call-bapi-in-custom-entity-through-rap","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:calling-bound-and-unbound-cap-actions-from-a-fiori-elements-app","kind":"content","label":"Calling bound / unbound CAP actions from Fiori elements application.","href":"/content/calling-bound-and-unbound-cap-actions-from-a-fiori-elements-app","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:calling-claude-from-abap-how-i-wired-sap-ai-core-into-a-real-business-scenario","kind":"content","label":"Calling Claude from ABAP: How I Wired SAP AI Core into a Real Business Scenario","href":"/content/calling-claude-from-abap-how-i-wired-sap-ai-core-into-a-real-business-scenario","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:calling-the-sales-order-a2x-odata-v2-api-from-btp-using-a-service-consumption-mo","kind":"content","label":"Calling the Sales Order (A2X) OData V2 API from BTP Using a Service Consumption Model","href":"/content/calling-the-sales-order-a2x-odata-v2-api-from-btp-using-a-service-consumption-mo","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:calling-the-sales-order-a2x-odata-v4-api-from-btp-using-a-service-consumption-mo","kind":"content","label":"Calling the Sales Order (A2X) OData V4 API from BTP Using a Service Consumption Model","href":"/content/calling-the-sales-order-a2x-odata-v4-api-from-btp-using-a-service-consumption-mo","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:cap-application-with-successfactors-and-hana-cloud","kind":"content","label":"SFSFとHANA Cloudを使用するCAPのアプリケーション開発","href":"/content/cap-application-with-successfactors-and-hana-cloud","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:cap-backend-development-with-productivity-tools-hana-cloud-edition","kind":"content","label":"2024/01最新版！Productivity Toolsを使ったCAPバックエンド開発②~HANA Cloud編~","href":"/content/cap-backend-development-with-productivity-tools-hana-cloud-edition","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:cap-cds-and-fiori-practical-commands","kind":"content","label":"加速开发和部署的CAP CDS和Fiori一些实用命令","href":"/content/cap-cds-and-fiori-practical-commands","icon":"blog","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:cap-cds-cdl-csn-and-jq-finding-associations","kind":"content","label":"CAP, CDS, CDL, CSN and jq - finding associations","href":"/content/cap-cds-cdl-csn-and-jq-finding-associations","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:cap-consume-external-service-part-1","kind":"content","label":"CAP: Consume External Service - Part 1","href":"/content/cap-consume-external-service-part-1","icon":"blog","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:cap-consume-external-service-part-3","kind":"content","label":"CAP: Consume External Service – Part 3","href":"/content/cap-consume-external-service-part-3","icon":"blog","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp","ui5"]},{"id":"content:cap-cors-and-custom-headers","kind":"content","label":"CAP, CORS and custom headers","href":"/content/cap-cors-and-custom-headers","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:cap-deep-insert-4-consume-remote-service","kind":"content","label":"SAP Cloud Application Programming Model: Deep Insert (4) Consume Remote Service","href":"/content/cap-deep-insert-4-consume-remote-service","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:cap-deep-insert-5-consume-remote-service-with-cloud-sdk","kind":"content","label":"SAP Cloud Application Programming Model: Deep Insert (5) Consume Remote Service with SAP Cloud SDK","href":"/content/cap-deep-insert-5-consume-remote-service-with-cloud-sdk","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:cap-developers-call-to-action-for-sap-note-3747787","kind":"content","label":"CAP Developers - Call to Action to mitigate and Apply Solution provided in SAP Note 3747787","href":"/content/cap-developers-call-to-action-for-sap-note-3747787","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5"]},{"id":"content:cap-dynamically-hide-ui-facets-in-fiori-elements","kind":"content","label":"CAP - Dynamically hide UI facets in Fiori Elements","href":"/content/cap-dynamically-hide-ui-facets-in-fiori-elements","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:cap-for-nodejs","kind":"content","label":"CAP for nodejs安全的暴露接口练习","href":"/content/cap-for-nodejs","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:cap-foundry-engineering-sap-cap-applications-from-business-intent-with-guardrail","kind":"content","label":"CAP Foundry: Engineering SAP CAP Applications from Business Intent with Guardrailed AI","href":"/content/cap-foundry-engineering-sap-cap-applications-from-business-intent-with-guardrail","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:cap-full-stack-testing-with-bdd-flavour","kind":"content","label":"CAP full-stack testing with BDD flavour","href":"/content/cap-full-stack-testing-with-bdd-flavour","icon":"blog","ecos":["cap","btp","digital-manufacturing"],"homeEcos":["cap","btp","digital-manufacturing"]},{"id":"content:cap-graphql-as-new-protocol","kind":"content","label":"CAP: GraphQL as new protocol","href":"/content/cap-graphql-as-new-protocol","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:cap-heaven-not-yet-but-you-can-see-it-from-here","kind":"content","label":"CAP Heaven? Not Yet — But You Can See It from Here","href":"/content/cap-heaven-not-yet-but-you-can-see-it-from-here","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5"]},{"id":"content:cap-in-the-age-of-ai-1-the-mcp-adapter","kind":"content","label":"CAP in the age of AI #1 - the MCP adapter","href":"/content/cap-in-the-age-of-ai-1-the-mcp-adapter","icon":"video","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:cap-in-the-age-of-ai-2-more-on-the-mcp-adapter","kind":"content","label":"CAP in the age of AI #2 - more on the MCP adapter","href":"/content/cap-in-the-age-of-ai-2-more-on-the-mcp-adapter","icon":"video","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:cap-in-the-age-of-ai-3-from-mcp-to-a2a","kind":"content","label":"CAP in the age of AI #3 - from MCP to A2A","href":"/content/cap-in-the-age-of-ai-3-from-mcp-to-a2a","icon":"video","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:cap-in-the-age-of-ai-4-more-on-agents","kind":"content","label":"CAP in the age of AI #4 - more on agents","href":"/content/cap-in-the-age-of-ai-4-more-on-agents","icon":"video","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","btp"]},{"id":"content:cap-in-the-age-of-ai-5-agents-wrap-up","kind":"content","label":"CAP in the age of AI #5 - agents wrap-up","href":"/content/cap-in-the-age-of-ai-5-agents-wrap-up","icon":"video","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:cap-in-the-age-of-ai-6-vector-embeddings","kind":"content","label":"CAP in the age of AI #6 - vector embeddings","href":"/content/cap-in-the-age-of-ai-6-vector-embeddings","icon":"video","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap"]},{"id":"content:cap-in-the-age-of-ai-7-vector-embeddings-wrap-up","kind":"content","label":"CAP in the age of AI #7 - vector embeddings wrap-up","href":"/content/cap-in-the-age-of-ai-7-vector-embeddings-wrap-up","icon":"video","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap"]},{"id":"content:cap-in-the-age-of-ai","kind":"content","label":"CAP in the age of AI","href":"/content/cap-in-the-age-of-ai","icon":"series","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","btp","abap"]},{"id":"content:cap-initializr-generate-sap-cap-projects-in-seconds","kind":"content","label":"CAP Initializr: Generate SAP CAP Projects in Seconds","href":"/content/cap-initializr-generate-sap-cap-projects-in-seconds","icon":"blog","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:cap-is-important-because-its-not-important","kind":"content","label":"CAP is important because it's not important","href":"/content/cap-is-important-because-its-not-important","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5"]},{"id":"content:cap-java-implementation-for-authorization-management-service","kind":"content","label":"CAP-JAVA implementation for Authorization Management Service (AMS)","href":"/content/cap-java-implementation-for-authorization-management-service","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:cap-java-nodejs-mixed-mono-multitenant-saas-with-shared-database","kind":"content","label":"Developing CAP java/node.js mixed mono Multitenant SaaS Applications with Shared Database","href":"/content/cap-java-nodejs-mixed-mono-multitenant-saas-with-shared-database","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:cap-java-with-amazon-aurora-postgresql","kind":"content","label":"SAP CAP (Java) with Amazon Aurora PostgreSQL","href":"/content/cap-java-with-amazon-aurora-postgresql","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:cap-java-with-azure-cosmos-db-for-postgresql","kind":"content","label":"SAP CAP (Java) with Azure Cosmos DB for PostgreSQL","href":"/content/cap-java-with-azure-cosmos-db-for-postgresql","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:cap-just-got-faster-whats-new-in-cds-caching-1-0","kind":"content","label":"CAP just got faster: What's new in cds-caching 1.0","href":"/content/cap-just-got-faster-whats-new-in-cds-caching-1-0","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:cap-lessons-learned-run-a-cap-app-using-sqlite-on-cloud-foundry","kind":"content","label":"SAP CAP Lessons Learned: Run a CAP app using SQLite on SAP BTP - Cloud Foundry","href":"/content/cap-lessons-learned-run-a-cap-app-using-sqlite-on-cloud-foundry","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:cap-lessons-learned-sqlite-is-single-threaded-hana-is-not","kind":"content","label":"SAP CAP Lessons Learned: SQLite is single threaded, HANA is not","href":"/content/cap-lessons-learned-sqlite-is-single-threaded-hana-is-not","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:cap-mcp-adapter-guide","kind":"content","label":"Model Context Protocol Adapter — CAP guide","href":"/content/cap-mcp-adapter-guide","icon":"doc","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:cap-multitenancy-with-work-zone","kind":"content","label":"CAP multitenancy with Work Zone","href":"/content/cap-multitenancy-with-work-zone","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:cap-node-js-expert-session-6-the-mcp-adapter","kind":"content","label":"CAP Node.js Expert Session #6 - The MCP Adapter","href":"/content/cap-node-js-expert-session-6-the-mcp-adapter","icon":"video","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:cap-now-supports-reactjs-with-working-demo-ui5-web-components","kind":"content","label":"CAP Now Supports ReactJS - With working demo + UI5 Web components","href":"/content/cap-now-supports-reactjs-with-working-demo-ui5-web-components","icon":"blog","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:cap-on-kyma-deploy-your-cap-apps-to-btp-kyma-runtime","kind":"content","label":"CAP on Kyma - Deploy your CAP apps to SAP BTP, Kyma Runtime","href":"/content/cap-on-kyma-deploy-your-cap-apps-to-btp-kyma-runtime","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:cap-operator-on-kyma-part-2-runtime-architecture-and-cost","kind":"content","label":"Part 2: Runtime Architecture & Cost efficiency gains","href":"/content/cap-operator-on-kyma-part-2-runtime-architecture-and-cost","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:cap-postgresql-local-debugging-using-docker-part-2","kind":"content","label":"CAP PostgreSql setup local debugging using Docker - Part 2","href":"/content/cap-postgresql-local-debugging-using-docker-part-2","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:cap-rap-or-both-stop-hiding-behind-it-depends","kind":"content","label":"CAP, RAP, or Both: Stop Hiding Behind 'It Depends'","href":"/content/cap-rap-or-both-stop-hiding-behind-it-depends","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5"]},{"id":"content:cap-service-to-fetch-create-sales-order-in-s4-hana-public-cloud","kind":"content","label":"CAP Service to Fetch + Create Sales Order in S4 HANA Public Cloud","href":"/content/cap-service-to-fetch-create-sales-order-in-s4-hana-public-cloud","icon":"blog","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp","ui5"]},{"id":"content:cap-specifying-the-queues-to-be-consumed-from-sap-event-mesh","kind":"content","label":"CAP - Specifying the queues to be consumed from SAP Event Mesh","href":"/content/cap-specifying-the-queues-to-be-consumed-from-sap-event-mesh","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:cap-techbytes-input-validation","kind":"content","label":"#CAP-TechBytes Input Validation","href":"/content/cap-techbytes-input-validation","icon":"blog","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:cap-typescript-fiori-typescript-and-live-reload-initial-setup","kind":"content","label":"CAP Typescript + Fiori Typescript + live reload Initial app setup","href":"/content/cap-typescript-fiori-typescript-and-live-reload-initial-setup","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:cap-unit-testing-using-mocha-and-chai","kind":"content","label":"CAP: Unit Testing using Mocha and Chai","href":"/content/cap-unit-testing-using-mocha-and-chai","icon":"blog","ecos":["cap","btp","digital-manufacturing"],"homeEcos":["cap","btp","digital-manufacturing"]},{"id":"content:cap-websockets","kind":"content","label":"CAP WebSockets","href":"/content/cap-websockets","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:cap-with-fiori-elements-actions-on-list-report-and-object-page-part-1","kind":"content","label":"CAP with Fiori Elements: Actions on List Report / Object Page using Annotations - Part1","href":"/content/cap-with-fiori-elements-actions-on-list-report-and-object-page-part-1","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:cap-with-fiori-elements-actions-on-list-report-and-object-page-part-2","kind":"content","label":"CAP with Fiori Elements: Actions on List Report / Object Page using Annotations – Part2","href":"/content/cap-with-fiori-elements-actions-on-list-report-and-object-page-part-2","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:cap-with-fiori-elements-configure-multiple-views-on-list-report-tables","kind":"content","label":"CAP with Fiori Elements: Configure Multiple Views on List Report Tables","href":"/content/cap-with-fiori-elements-configure-multiple-views-on-list-report-tables","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:cap-with-fiori-elements-side-effects-custom-actions-dynamic-expressions","kind":"content","label":"CAP with Fiori Elements: Side Effects, Custom Actions, Dynamic Expressions","href":"/content/cap-with-fiori-elements-side-effects-custom-actions-dynamic-expressions","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:cap-with-local-app-previews","kind":"content","label":"CAP with Local App Previews – Tips for Smooth Development","href":"/content/cap-with-local-app-previews","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:cap-with-mongodb","kind":"content","label":"My Learnings in SAP-CAP Using MongoDB","href":"/content/cap-with-mongodb","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:cap-with-postgresql-db-alternate-to-hana-cloud-part-1","kind":"content","label":"CAP with PostgreSQL DB alternate to HANA Cloud DB - Part 1","href":"/content/cap-with-postgresql-db-alternate-to-hana-cloud-part-1","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:capm-basics-part-2","kind":"content","label":"CAPM Basics - Part 2","href":"/content/capm-basics-part-2","icon":"blog","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"content:capm-basics-part-4","kind":"content","label":"CAPM Basics - Part 4","href":"/content/capm-basics-part-4","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:capturing-background-job-errors-in-sap-using-the-application-log-slg0-slg1","kind":"content","label":"Capturing Background Job Errors in SAP Using the Application Log (SLG0/SLG1)","href":"/content/capturing-background-job-errors-in-sap-using-the-application-log-slg0-slg1","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:capval-a-project-is-born","kind":"content","label":"CAPVAL: A project is born","href":"/content/capval-a-project-is-born","icon":"blog","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:case-insensitive-filters-in-fiori-elements-with-a-cap-backend","kind":"content","label":"Case-insensitive filters in Fiori Elements (List report + CAP)","href":"/content/case-insensitive-filters-in-fiori-elements-with-a-cap-backend","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:ccm-calculate-key-figures","kind":"content","label":"CCM - Calculate Key Figures","href":"/content/ccm-calculate-key-figures","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:cds-deploy-to-sqlite-in-memory-database","kind":"content","label":"cds deploy to sqlite in-memory database","href":"/content/cds-deploy-to-sqlite-in-memory-database","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:cds-launchpad-plugin-supercharged","kind":"content","label":"cds-launchpad-plugin supercharged & ready for the future - CAP Plugin, UI5 Tooling support & Async Launchpad","href":"/content/cds-launchpad-plugin-supercharged","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:cds-toon-ai-protocol-adapter-cutting-token-costs","kind":"content","label":"cds-toon-ai-protocol-adapter: a pragmatic way to cut AI token costs using SAP CAP","href":"/content/cds-toon-ai-protocol-adapter-cutting-token-costs","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:cds-ts-dispatcher-simplifying-sap-cap-typescript-development","kind":"content","label":"CDS-TS-Dispatcher: Simplifying SAP CAP TypeScript Development","href":"/content/cds-ts-dispatcher-simplifying-sap-cap-typescript-development","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:cds-ts-repository-simplify-cap-entity-persistence","kind":"content","label":"CDS-TS-Repository: Simplify SAP CAP Entity persistance with BaseRepository","href":"/content/cds-ts-repository-simplify-cap-entity-persistence","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:centralized-error-handling-in-sap-cloud-integration","kind":"content","label":"Centralized Error Handling in SAP Cloud Integration","href":"/content/centralized-error-handling-in-sap-cloud-integration","icon":"blog","ecos":["btp","digital-manufacturing","ui5"],"homeEcos":["btp","digital-manufacturing"]},{"id":"content:cf-create-app-end-to-end-apps-deployed-to-cloud-foundry","kind":"content","label":"cf-create-app: Create End-to-End apps and deploy to Cloud Foundry in minutes","href":"/content/cf-create-app-end-to-end-apps-deployed-to-cloud-foundry","icon":"blog","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"content:ci-cd-for-hana-cloud-with-cds-add-pipeline","kind":"content","label":"SAP BTP Showcase – SAP Continuous Integration and Delivery (SAP CI&D) for SAP HANA Cloud","href":"/content/ci-cd-for-hana-cloud-with-cds-add-pipeline","icon":"blog","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:claude-code-via-mcp-poor-man-s-joule-or-a-practical-tool","kind":"content","label":"Claude Code via MCP: Poor man's Joule, or a practical tool?","href":"/content/claude-code-via-mcp-poor-man-s-joule-or-a-practical-tool","icon":"blog","ecos":["cap","abap","ui5","btp","commerce"],"homeEcos":["cap","abap","ui5","btp","commerce"]},{"id":"content:claude-ported-abap-functions-to-new-api","kind":"content","label":"Claude ported ABAP functions to new API","href":"/content/claude-ported-abap-functions-to-new-api","icon":"blog","ecos":["abap","cap","btp","ui5"],"homeEcos":["abap","cap","btp","ui5"]},{"id":"content:clean-core-by-design-event-enablement-cockpit-as-a-core-integration-enabler-in-s","kind":"content","label":"Clean Core by Design: Event Enablement Cockpit as a Core Integration Enabler in SAP S/4HANA","href":"/content/clean-core-by-design-event-enablement-cockpit-as-a-core-integration-enabler-in-s","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:clean-core-index","kind":"content","label":"Clean Core Index","href":"/content/clean-core-index","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:clean-core-maturity-and-the-new-extensibility-levels","kind":"content","label":"Clean Core maturity and the new Extensibility Levels","href":"/content/clean-core-maturity-and-the-new-extensibility-levels","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:clean-core","kind":"content","label":"Clean Core清洁核心概况介绍","href":"/content/clean-core","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:cloud-integration-activating-enterprise-messaging-capabilities-for-jms-queue-cf","kind":"content","label":"Cloud Integration- Activating Enterprise Messaging Capabilities for JMS Queue - CF","href":"/content/cloud-integration-activating-enterprise-messaging-capabilities-for-jms-queue-cf","icon":"blog","ecos":["btp","digital-manufacturing","ui5"],"homeEcos":["btp","digital-manufacturing"]},{"id":"content:cloud-integration-with-document-ai","kind":"content","label":"Cloud Integration with Document AI","href":"/content/cloud-integration-with-document-ai","icon":"blog","ecos":["btp","cap","ui5","digital-manufacturing"],"homeEcos":["btp","cap","ui5","digital-manufacturing"]},{"id":"content:cloud-native-with-abap-cloud-the-transactional-outbox-pattern","kind":"content","label":"Cloud-Native with ABAP Cloud – The Transactional Outbox Pattern","href":"/content/cloud-native-with-abap-cloud-the-transactional-outbox-pattern","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:combine-power-automate-microsoft-teams-approvals-and-an-sap-cloud-application-pr","kind":"content","label":"Combine Power Automate, Microsoft Teams Approvals and an SAP Cloud Application Programming Model (CAP) App","href":"/content/combine-power-automate-microsoft-teams-approvals-and-an-sap-cloud-application-pr","icon":"blog","ecos":["btp","ui5"],"homeEcos":["btp","ui5"]},{"id":"content:communicate-from-a-java-application-to-abap-via-websocket-rfc-using-jco-migratio","kind":"content","label":"Communicate from a Java Application to ABAP via WebSocket RFC using JCo - Migration Guide","href":"/content/communicate-from-a-java-application-to-abap-via-websocket-rfc-using-jco-migratio","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:completing-the-b2b-migration-into-sap-integration-suite-vision","kind":"content","label":"Completing the B2B migration into SAP Integration Suite vision","href":"/content/completing-the-b2b-migration-into-sap-integration-suite-vision","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:computed-field-example-in-cap","kind":"content","label":"Computed field example in CAP","href":"/content/computed-field-example-in-cap","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:configure-journal-entry-posting-approval-from-store-template-in-build-process-au","kind":"content","label":"Configure Journal Entry Posting Approval from Store Template in Build Process Automation","href":"/content/configure-journal-entry-posting-approval-from-store-template-in-build-process-au","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:configuring-sap-cloud-integration-for-an-ibp-to-s-4hana-on-prem-private-cloud-in","kind":"content","label":"Configuring SAP Cloud Integration for an IBP to S/4HANA (on prem / private cloud) integration","href":"/content/configuring-sap-cloud-integration-for-an-ibp-to-s-4hana-on-prem-private-cloud-in","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:connect-a-cap-application-to-hana-cloud-in-another-account-without-hdi","kind":"content","label":"Configure an SAP CAP Application to Connect to an SAP HANA Cloud Database in Another Global Account or Subaccount","href":"/content/connect-a-cap-application-to-hana-cloud-in-another-account-without-hdi","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:connect-sap-cap-nodejs-to-private-postgresql-using-cloud-connector","kind":"content","label":"Connect SAP CAP (Node.js) to On-Premise/Private PostgreSQL using SAP Cloud Connector","href":"/content/connect-sap-cap-nodejs-to-private-postgresql-using-cloud-connector","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:connect-to-a-public-cloud-api-in-nodejs-via-authorisation-code","kind":"content","label":"Connect to Public Cloud API in Node.js via Authorisation Code","href":"/content/connect-to-a-public-cloud-api-in-nodejs-via-authorisation-code","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:connecting-a-custom-mcp-server-to-joule-work-desktop-a-seamless-and-secure-authe","kind":"content","label":"Connecting a Custom MCP Server to Joule Work Desktop: A Seamless and Secure Authentication Flow","href":"/content/connecting-a-custom-mcp-server-to-joule-work-desktop-a-seamless-and-secure-authe","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:connecting-sap-integration-suite-with-sap-document-ai-and-sap-business-ai","kind":"content","label":"Connecting SAP Integration Suite with SAP Document AI and SAP Business AI","href":"/content/connecting-sap-integration-suite-with-sap-document-ai-and-sap-business-ai","icon":"blog","ecos":["btp","cap","ui5","abap"],"homeEcos":["btp","cap","ui5","abap"]},{"id":"content:connecting-sap-integration-suite-with-slack-a-hands-on-guide-with-open-connector","kind":"content","label":"Connecting SAP Integration Suite with Slack: A Hands‑On Guide with Open Connectors","href":"/content/connecting-sap-integration-suite-with-slack-a-hands-on-guide-with-open-connector","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:connecting-sap-s-4hana-on-prem-directly-to-advanced-event-mesh-using-cloud-conne","kind":"content","label":"Connecting SAP S/4HANA On-Prem Directly to Advanced Event Mesh using Cloud Connector - finally!","href":"/content/connecting-sap-s-4hana-on-prem-directly-to-advanced-event-mesh-using-cloud-conne","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:connecting-two-sap-cap-projects-without-duplicating-your-data","kind":"content","label":"Connecting Two SAP CAP Projects Without Duplicating Your Data","href":"/content/connecting-two-sap-cap-projects-without-duplicating-your-data","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:connectivity-between-a-local-cap-runtime-and-on-premise-systems","kind":"content","label":"Establishing connectivity between a local CAP runtime and on-premise systems","href":"/content/connectivity-between-a-local-cap-runtime-and-on-premise-systems","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:consume-abap-rfc-function-modules-in-cap","kind":"content","label":"Consume ABAP RFC Function Modules in CAP","href":"/content/consume-abap-rfc-function-modules-in-cap","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:consume-sap-document-management-using-cap-js-sdm","kind":"content","label":"Consume SAP Document Management using @cap-js/sdm plugin","href":"/content/consume-sap-document-management-using-cap-js-sdm","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:consuming-data-from-sap-datasphere-in-cap-applications","kind":"content","label":"Consuming data from SAP Datasphere in SAP BTP CAP Applications","href":"/content/consuming-data-from-sap-datasphere-in-cap-applications","icon":"blog","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp","ui5"]},{"id":"content:consuming-sap-build-apis-with-cloud-sdk-in-a-cap-application","kind":"content","label":"Consuming SAP Build API's made easy with SAP Cloud SDK in your CAP application","href":"/content/consuming-sap-build-apis-with-cloud-sdk-in-a-cap-application","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:control-visibility-of-crud-and-custom-actions-based-on-authorization","kind":"content","label":"How to Control the Visibility of CRUD and Custom Actions in Fiori Elements Based on Authorization","href":"/content/control-visibility-of-crud-and-custom-actions-based-on-authorization","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:create-a-business-service-using-cds-nodejs-sqlite-and-odata","kind":"content","label":"Create a Business Service using CDS, Node.js, SQLite and a OData service","href":"/content/create-a-business-service-using-cds-nodejs-sqlite-and-odata","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:create-a-cap-application-with-hana-cloud-and-deploy-to-cloud-foundry","kind":"content","label":"Create a CAP Application with SAP HANA Cloud from Scratch and Deploy to Cloud Foundry","href":"/content/create-a-cap-application-with-hana-cloud-and-deploy-to-cloud-foundry","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:create-a-fiori-elements-ui-for-cap-nodejs-applications-in-bas","kind":"content","label":"Create an SAP Fiori Elements UI for CAP Node.js applications in SAP Business Application Studio","href":"/content/create-a-fiori-elements-ui-for-cap-nodejs-applications-in-bas","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:create-a-fiori-list-report-with-object-page-using-a-capm-nodejs-service","kind":"content","label":"Create Fiori List Report with object page using CAPM(node.js) Service","href":"/content/create-a-fiori-list-report-with-object-page-using-a-capm-nodejs-service","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:create-an-api-to-run-a-hana-cloud-stored-procedure-in-cloud-foundry","kind":"content","label":"How to create an API to run a HANA Cloud Stored Procedure in Cloud Foundry","href":"/content/create-an-api-to-run-a-hana-cloud-stored-procedure-in-cloud-foundry","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:create-cds-views-and-expose-them-through-odata-in-capm","kind":"content","label":"Create CDS Views and expose through OData service in CAPM","href":"/content/create-cds-views-and-expose-them-through-odata-in-capm","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:create-your-first-cap-plugin","kind":"content","label":"Create your first CAP plugin","href":"/content/create-your-first-cap-plugin","icon":"blog","ecos":["cap","ui5"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:creating-a-custom-f4-help-for-currency-fields-in-abap-using-f4if-int-table-value","kind":"content","label":"Creating a Custom F4 Help for Currency Fields in ABAP Using F4IF_INT_TABLE_VALUE_REQUEST","href":"/content/creating-a-custom-f4-help-for-currency-fields-in-abap-using-f4if-int-table-value","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:creating-a-hybrid-cap-nodejs-profile-with-postgresql-from-bas","kind":"content","label":"Creating a Hybrid CAP (Node.js) Profile with PostgreSQL on BTP from Business Application Studio","href":"/content/creating-a-hybrid-cap-nodejs-profile-with-postgresql-from-bas","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:creating-a-meal-generator-application-with-sap-build-and-cap","kind":"content","label":"Creating a meal generator application with SAP Build, Cloud Application Programming and openAI","href":"/content/creating-a-meal-generator-application-with-sap-build-and-cap","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:creating-an-arc-1-btp-diagram-with-codex-and-a-drawio-skill","kind":"content","label":"Creating an ARC-1 BTP Diagram with Codex and a draw.io Skill","href":"/content/creating-an-arc-1-btp-diagram-with-codex-and-a-drawio-skill","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:creating-an-sap-sd-billing-document-using-a-bapi-in-sap-build-and-accessing-it-t","kind":"content","label":"Creating an SAP SD Billing Document Using a BAPI in SAP Build and Accessing It Through 'Joule Work'","href":"/content/creating-an-sap-sd-billing-document-using-a-bapi-in-sap-build-and-accessing-it-t","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:creating-and-deploying-a-cap-application-with-hana-part-1","kind":"content","label":"Part 1: Creating and Deploying a SAP CAP Application with SAP HANA on SAP BTP (Cloud Foundry)","href":"/content/creating-and-deploying-a-cap-application-with-hana-part-1","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:creating-and-deploying-a-cap-application-with-postgresql-hyperscaler","kind":"content","label":"Part 2: Creating and Deploying a CAP Application with PostgreSQL, Hyperscaler Option","href":"/content/creating-and-deploying-a-cap-application-with-postgresql-hyperscaler","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:creating-material-master-data-in-sap-s-4hana-using-rap-and-eml","kind":"content","label":"Creating Material Master Data in SAP S/4HANA Using RAP and EML .","href":"/content/creating-material-master-data-in-sap-s-4hana-using-rap-and-eml","icon":"blog","ecos":["abap","cap","ui5"],"homeEcos":["abap","cap","ui5"]},{"id":"content:creating-new-services-using-the-cds-graphical-modeler","kind":"content","label":"Creating new services using the CDS Graphical Modeler for SAP Business Application Studio","href":"/content/creating-new-services-using-the-cds-graphical-modeler","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:creating-structured-types-enums-and-named-aspects-in-the-graphical-modeler","kind":"content","label":"Creating structured types, enums and named aspects using the CDS Graphical Modeler","href":"/content/creating-structured-types-enums-and-named-aspects-in-the-graphical-modeler","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:custom-form-with-custom-data-source-in-sap-public-cloud-grow-with-sap","kind":"content","label":"Custom Form with Custom Data Source in SAP Public Cloud (Grow with SAP)","href":"/content/custom-form-with-custom-data-source-in-sap-public-cloud-grow-with-sap","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:custom-functions-in-odata-v4-in-cap","kind":"content","label":"Custom Functions in OData V4 – SAP Cloud Application Programming Model","href":"/content/custom-functions-in-odata-v4-in-cap","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:custom-handlers-for-draft-enabled-entities-in-sap-cap","kind":"content","label":"Custom Handlers for Entities in SAP CAP","href":"/content/custom-handlers-for-draft-enabled-entities-in-sap-cap","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:custom-joule-agent-for-sap-ariba-slp-building-an-ai-agent-for-supplier-registrat","kind":"content","label":"Custom Joule Agent for SAP Ariba SLP - Building an AI Agent for Supplier Registration Approval","href":"/content/custom-joule-agent-for-sap-ariba-slp-building-an-ai-agent-for-supplier-registrat","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:debug-a-cap-app-with-ui5-typescript-ui-component-with-vs-code","kind":"content","label":"debug a CAP app with UI5 TypeScript UI component with VS Code","href":"/content/debug-a-cap-app-with-ui5-typescript-ui-component-with-vs-code","icon":"blog","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:debugging-in-abap-development-tool-part-1","kind":"content","label":"Debugging in ABAP Development Tool (Part 1)","href":"/content/debugging-in-abap-development-tool-part-1","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:decision-logic-modernization-in-sap-integrations-using-sap-rpt-1-for-intelligent","kind":"content","label":"Decision Logic Modernization in SAP Integrations: Using SAP-RPT-1 for Intelligent Routing Decisions","href":"/content/decision-logic-modernization-in-sap-integrations-using-sap-rpt-1-for-intelligent","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:declarative-programming-in-cap-less-code-more-value","kind":"content","label":"Declarative Programming in CAP: Less Code, More Value","href":"/content/declarative-programming-in-cap-less-code-more-value","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap"]},{"id":"content:deep-insert-in-cap-using-composition-and-fiori-elements","kind":"content","label":"Deep Insert in SAP CAPM Using Composition and Fiori Elements","href":"/content/deep-insert-in-cap-using-composition-and-fiori-elements","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:dependency-injection-and-di-containers-on-cap-nodejs","kind":"content","label":"Quick Implementation of DI/DI Container on SAP CAP: Node.js Hands-on Part","href":"/content/dependency-injection-and-di-containers-on-cap-nodejs","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:deploy-and-run-the-incident-management-application-in-the-sap-btp-kyma-runtime-w","kind":"content","label":"Deploy and Run the Incident Management Application in the SAP BTP, Kyma Runtime with a Mock Server","href":"/content/deploy-and-run-the-incident-management-application-in-the-sap-btp-kyma-runtime-w","icon":"tutorial","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:deploying-a-cap-app-with-fiori-app-standalone-html5-repo-host","kind":"content","label":"Deploying a CAP app with Fiori app standalone (HTML5 Repo Host)","href":"/content/deploying-a-cap-app-with-fiori-app-standalone-html5-repo-host","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:deploying-a-cap-application-to-kyma-and-connecting-an-ios-app","kind":"content","label":"Deploying a CAP Application to SAP Cloud Platform, Kyma runtime & connecting an iOS app","href":"/content/deploying-a-cap-application-to-kyma-and-connecting-an-ios-app","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:deploying-cap-services-with-the-in-memory-sqlite-database","kind":"content","label":"Deploying CAP services with the in-memory SQLite database","href":"/content/deploying-cap-services-with-the-in-memory-sqlite-database","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:deploying-the-ui-of-an-mta-app-with-application-frontend-service","kind":"content","label":"Exploring Application Frontend Service: Deploying the UI of an MTA App","href":"/content/deploying-the-ui-of-an-mta-app-with-application-frontend-service","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:deploying-your-first-cap-project-in-sap-cloud","kind":"content","label":"Deploying first CAP Project in SAP Cloud : A Step-by-Step Guide","href":"/content/deploying-your-first-cap-project-in-sap-cloud","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:designing-multi-tenant-solutions-on-btp-architecture-and-prototype","kind":"content","label":"Designing a Multi‑Tenant Solutions on SAP BTP – Architecture and Prototype Walkthrough","href":"/content/designing-multi-tenant-solutions-on-btp-architecture-and-prototype","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:designing-scalable-integration-flows-in-sap-btp-using-pallets-and-adapters","kind":"content","label":"Designing Scalable Integration Flows in SAP BTP Using Pallets and Adapters","href":"/content/designing-scalable-integration-flows-in-sap-btp-using-pallets-and-adapters","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:develop-a-full-stack-business-application-with-sap-cloud-application-programming","kind":"content","label":"Develop a full stack Business application with SAP Cloud Application Programming Model","href":"/content/develop-a-full-stack-business-application-with-sap-cloud-application-programming","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:develop-and-deploy-a-html-angular-vue-react-app-on-sap-btp-access-s-4-op-part-ii","kind":"content","label":"Develop and deploy a HTML (Angular/Vue/React) app on SAP BTP access S/4 OP, Part III","href":"/content/develop-and-deploy-a-html-angular-vue-react-app-on-sap-btp-access-s-4-op-part-ii","icon":"blog","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp","ui5"]},{"id":"content:develop-cap-project-with-lazyvim-in-docker","kind":"content","label":"Develop CAP Project with Lazyvim in Docker","href":"/content/develop-cap-project-with-lazyvim-in-docker","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:develop-sap-cap-apps-inside-a-vs-code-docker-container","kind":"content","label":"Develop SAP CAP apps inside a VS Code Docker Container","href":"/content/develop-sap-cap-apps-inside-a-vs-code-docker-container","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:developing-a-fiori-elements-app-with-cap-and-fiori-tools","kind":"content","label":"Developing a Fiori elements app with CAP and Fiori Tools","href":"/content/developing-a-fiori-elements-app-with-cap-and-fiori-tools","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:developing-a-fiori-elements-application-using-cap","kind":"content","label":"Developing SAP Fiori Element application by using SAP Cloud Application Programming Model","href":"/content/developing-a-fiori-elements-application-using-cap","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:developing-a-fiori-elements-list-report-and-object-page-on-a-cap-odata-service","kind":"content","label":"Developing Fiori Element Application (List Report and Object Page) consuming the OData service created using SAP Cloud Application Programming model","href":"/content/developing-a-fiori-elements-list-report-and-object-page-on-a-cap-odata-service","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:developing-a-shell-plugin-for-work-zone-custom-notifications","kind":"content","label":"Developing a Shell Plugin for SAP Build Work Zone to Display Custom Notifications","href":"/content/developing-a-shell-plugin-for-work-zone-custom-notifications","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:developing-business-services-with-cloud-application-programming-cap-model-in-sap","kind":"content","label":"Developing Business Services with Cloud Application Programming(CAP) Model in SAP Business Studio","href":"/content/developing-business-services-with-cloud-application-programming-cap-model-in-sap","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:developing-cap-applications-in-sap-business-application-studio","kind":"content","label":"Developing CAP applications in SAP Business Application Studio","href":"/content/developing-cap-applications-in-sap-business-application-studio","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:developing-mobile-apps-with-sap-build","kind":"content","label":"Developing Mobile Apps with SAP Build","href":"/content/developing-mobile-apps-with-sap-build","icon":"blog","ecos":["btp","cap","ui5"],"homeEcos":["btp","cap","ui5"]},{"id":"content:devtoberfest-2026-aba-32-business-ai-abap-cloud","kind":"content","label":"How to implement business AI capabilities in ABAP Cloud","href":"/content/devtoberfest-2026-aba-32-business-ai-abap-cloud","icon":"talk","ecos":["abap","btp","cap","ui5"],"homeEcos":["abap","btp","cap","ui5"]},{"id":"content:devtoberfest-2026-aba-33-embedded-analytics-abap-cloud","kind":"content","label":"Updates on Embedded Analytics in ABAP Cloud for Developers","href":"/content/devtoberfest-2026-aba-33-embedded-analytics-abap-cloud","icon":"talk","ecos":["abap","btp"],"homeEcos":["abap","btp"]},{"id":"content:devtoberfest-2026-aba-44-abap-ai-sdk-islm","kind":"content","label":"ABAP AI SDK powered by ISLM - How to implement your own AI use cases in ABAP","href":"/content/devtoberfest-2026-aba-44-abap-ai-sdk-islm","icon":"talk","ecos":["abap","cap","ui5","btp"],"homeEcos":["abap","cap","ui5","btp"]},{"id":"content:devtoberfest-2026-abap-development-tools-for-vs-code","kind":"content","label":"ABAP Development Tools for VS Code","href":"/content/devtoberfest-2026-abap-development-tools-for-vs-code","icon":"talk","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:devtoberfest-2026-abap-environment-partner-solutions-certification","kind":"content","label":"SAP BAIP, ABAP environment  – How to build partner solutions and get them certified","href":"/content/devtoberfest-2026-abap-environment-partner-solutions-certification","icon":"talk","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"content:devtoberfest-2026-agentic-development-with-sapui5","kind":"content","label":"Beyond copilots: Agentic development with SAPUI5","href":"/content/devtoberfest-2026-agentic-development-with-sapui5","icon":"talk","ecos":["ui5","cap","abap","btp","commerce"],"homeEcos":["ui5","abap","btp","cap","commerce"]},{"id":"content:devtoberfest-2026-agentic-enterprise-automation-integration-suite-joule-studio","kind":"content","label":"Achieve Agentic Enterprise Automation with SAP Integration Suite and Joule Studio","href":"/content/devtoberfest-2026-agentic-enterprise-automation-integration-suite-joule-studio","icon":"talk","ecos":["btp","cap","ui5"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:devtoberfest-2026-agentic-loop-with-joule-for-developers-and-adt-mcp-server","kind":"content","label":"Agentic Loop with Joule for Developers and ADT MCP Server","href":"/content/devtoberfest-2026-agentic-loop-with-joule-for-developers-and-adt-mcp-server","icon":"talk","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:devtoberfest-2026-agentic-ui-extensibility","kind":"content","label":"Agentic UI Extensibility: The Next Chapter of SAPUI5 Flexibility","href":"/content/devtoberfest-2026-agentic-ui-extensibility","icon":"talk","ecos":["ui5","abap","btp"],"homeEcos":["ui5","abap","btp"]},{"id":"content:devtoberfest-2026-agentic-workflows-n8n-joule-studio","kind":"content","label":"Building Agentic Workflows with n8n in Joule Studio","href":"/content/devtoberfest-2026-agentic-workflows-n8n-joule-studio","icon":"talk","ecos":["btp","cap","ui5","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:devtoberfest-2026-ai-assisted-cap-development","kind":"content","label":"AI Assisted CAP Development","href":"/content/devtoberfest-2026-ai-assisted-cap-development","icon":"talk","ecos":["cap","btp","ui5","abap","commerce"],"homeEcos":["cap","btp","ui5","abap","commerce"]},{"id":"content:devtoberfest-2026-ai-assisted-sap-development-with-mcp","kind":"content","label":"AI-assisted SAP development with MCP","href":"/content/devtoberfest-2026-ai-assisted-sap-development-with-mcp","icon":"talk","ecos":["ui5","cap","abap","btp"],"homeEcos":["ui5","abap","btp","cap"]},{"id":"content:devtoberfest-2026-ai-in-abap-with-islm","kind":"content","label":"🟣 Bring AI into Your ABAP Applications with ISLM: Build, Integrate, and Consume AI Natively","href":"/content/devtoberfest-2026-ai-in-abap-with-islm","icon":"talk","ecos":["abap","btp","cap","ui5"],"homeEcos":["abap","btp","cap","ui5"]},{"id":"content:devtoberfest-2026-ai21-multiple-models","kind":"content","label":"🟣 Enable Your AI application to Run on Multiple Models to Ensure Resilience and Compliance","href":"/content/devtoberfest-2026-ai21-multiple-models","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap","ui5"]},{"id":"content:devtoberfest-2026-ai22-joule-work-desktop-brain","kind":"content","label":"🟣 AI Eating Brains! How I Fed Mine to Joule Work Desktop","href":"/content/devtoberfest-2026-ai22-joule-work-desktop-brain","icon":"talk","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:devtoberfest-2026-bridging-python-and-sap-hana-sqlalchemy-hana","kind":"content","label":"Bridging Python and SAP HANA: Inside the sqlalchemy-hana Open-Source Dialect","href":"/content/devtoberfest-2026-bridging-python-and-sap-hana-sqlalchemy-hana","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","abap","cap"]},{"id":"content:devtoberfest-2026-cap-cds-oyster-extensibility","kind":"content","label":"Custom Business Logic Extensibility in CAP (CDS-Oyster)","href":"/content/devtoberfest-2026-cap-cds-oyster-extensibility","icon":"talk","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:devtoberfest-2026-cap-level-data-federation","kind":"content","label":"CAP-level Data Federation","href":"/content/devtoberfest-2026-cap-level-data-federation","icon":"talk","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:devtoberfest-2026-cap-mcp-ui5-webmcp","kind":"content","label":"SAP Meets the Agentic Web: CAP MCP - UI5 WebMCP","href":"/content/devtoberfest-2026-cap-mcp-ui5-webmcp","icon":"talk","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:devtoberfest-2026-cap-the-road-ahead","kind":"content","label":"CAP: The Road Ahead - Simplicity in an AI Era","href":"/content/devtoberfest-2026-cap-the-road-ahead","icon":"talk","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:devtoberfest-2026-cds-associations-and-joins","kind":"content","label":"CDS Associations & Joins","href":"/content/devtoberfest-2026-cds-associations-and-joins","icon":"talk","ecos":["abap","cap"],"homeEcos":["abap","cap"]},{"id":"content:devtoberfest-2026-cloud-integration-chamber-of-horrors","kind":"content","label":"SAP Cloud Integration chamber of horrors","href":"/content/devtoberfest-2026-cloud-integration-chamber-of-horrors","icon":"talk","ecos":["btp","digital-manufacturing","ui5"],"homeEcos":["btp","digital-manufacturing"]},{"id":"content:devtoberfest-2026-code-based-ai-agents-baip","kind":"content","label":"Building Code-Based AI Agents on the BAIP","href":"/content/devtoberfest-2026-code-based-ai-agents-baip","icon":"talk","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap"]},{"id":"content:devtoberfest-2026-daniel-hutzel-brain","kind":"content","label":"What's in Daniel Hutzel's brain?","href":"/content/devtoberfest-2026-daniel-hutzel-brain","icon":"talk","ecos":["cap","btp","abap","ui5","commerce"],"homeEcos":["cap","btp","abap","ui5","commerce"]},{"id":"content:devtoberfest-2026-dat-11-knowledge-graph-hana-cloud","kind":"content","label":"Building your knowledge graph on SAP HANA Cloud","href":"/content/devtoberfest-2026-dat-11-knowledge-graph-hana-cloud","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:devtoberfest-2026-dat-12-ai-agents-hana-embedded-ml","kind":"content","label":"Combining AI Agents with the power of SAP HANA embedded ML (part 1)","href":"/content/devtoberfest-2026-dat-12-ai-agents-hana-embedded-ml","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:devtoberfest-2026-dat-13-bw-modernization-bdc","kind":"content","label":"Strategy and Tool Updates on BW Modernization with SAP Business Data Cloud","href":"/content/devtoberfest-2026-dat-13-bw-modernization-bdc","icon":"talk","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"content:devtoberfest-2026-dat-31-bdc-contextualize-and-reason","kind":"content","label":"SAP BDC in Business AI Platform: Contextualize and Reason","href":"/content/devtoberfest-2026-dat-31-bdc-contextualize-and-reason","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:devtoberfest-2026-dat-41-data-product-governance-bdc","kind":"content","label":"Data Product Governance in SAP Business Data Cloud","href":"/content/devtoberfest-2026-dat-41-data-product-governance-bdc","icon":"talk","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:devtoberfest-2026-developers-sap-com-in-your-dev-environment","kind":"content","label":"Bring \"developers.sap.com\" Into Your Dev Environment: SAP Developer Context for AI Coding Agents","href":"/content/devtoberfest-2026-developers-sap-com-in-your-dev-environment","icon":"talk","ecos":["cap","abap","ui5","btp"],"homeEcos":["btp","cap","abap","ui5"]},{"id":"content:devtoberfest-2026-dry-cap-plugins","kind":"content","label":"DRY CAP – Making Sustainable Solutions Through Plugins","href":"/content/devtoberfest-2026-dry-cap-plugins","icon":"talk","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:devtoberfest-2026-ecc-to-cap-starter-kit","kind":"content","label":"The ECC-to-CAP Starter Kit","href":"/content/devtoberfest-2026-ecc-to-cap-starter-kit","icon":"talk","ecos":["cap","btp","abap","ui5","digital-manufacturing"],"homeEcos":["cap","btp","abap","ui5","digital-manufacturing"]},{"id":"content:devtoberfest-2026-errors-in-bapis-or-rap-bos","kind":"content","label":"S/4HANA Custom Development - What happens in case of errors in BAPIs or RAP BOs?","href":"/content/devtoberfest-2026-errors-in-bapis-or-rap-bos","icon":"talk","ecos":["abap","cap"],"homeEcos":["abap","cap"]},{"id":"content:devtoberfest-2026-event-driven-intelligence","kind":"content","label":"IntegrAItion: Event-Driven Intelligence","href":"/content/devtoberfest-2026-event-driven-intelligence","icon":"talk","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:devtoberfest-2026-fiori-elements-adt-vscode-ui-33","kind":"content","label":"Intelligent App Development at Scale: SAP Fiori Elements + ABAP Development Tools for VS Code","href":"/content/devtoberfest-2026-fiori-elements-adt-vscode-ui-33","icon":"talk","ecos":["ui5","cap","abap","btp","commerce"],"homeEcos":["ui5","abap","btp","cap","commerce"]},{"id":"content:devtoberfest-2026-from-apis-to-agent-tools-mcp-gateway","kind":"content","label":"From APIs to Agent Tools: How MCP Gateway changes what Integration means","href":"/content/devtoberfest-2026-from-apis-to-agent-tools-mcp-gateway","icon":"talk","ecos":["btp","abap","cap"],"homeEcos":["btp","abap","cap"]},{"id":"content:devtoberfest-2026-hana-data-lake-files","kind":"content","label":"SAP HANA Data Lake Files (HDLF) Basic Functionalities","href":"/content/devtoberfest-2026-hana-data-lake-files","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:devtoberfest-2026-how-to-build-application-jobs-abap-environment","kind":"content","label":"How to Build Application Jobs in SAP Business AI Platform, ABAP environment","href":"/content/devtoberfest-2026-how-to-build-application-jobs-abap-environment","icon":"talk","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:devtoberfest-2026-inbox-to-quotation-react-cap","kind":"content","label":"From Inbox to Quotation: An AI-Assisted Sales Workbench in React on SAP CAP","href":"/content/devtoberfest-2026-inbox-to-quotation-react-cap","icon":"talk","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:devtoberfest-2026-int-12-ai-adapter-credit-checks","kind":"content","label":"From opportunity to decision: Intelligent Credit Checks with AI Adapter in SAP Cloud Integration","href":"/content/devtoberfest-2026-int-12-ai-adapter-credit-checks","icon":"talk","ecos":["btp","digital-manufacturing","ui5"],"homeEcos":["btp","digital-manufacturing"]},{"id":"content:devtoberfest-2026-int-13-joule-desktop-mcp-gateway","kind":"content","label":"Supercharge Joule Desktop: Connect Any SAP API in Minutes with MCP Gateway","href":"/content/devtoberfest-2026-int-13-joule-desktop-mcp-gateway","icon":"talk","ecos":["btp","abap","cap"],"homeEcos":["btp","abap","cap"]},{"id":"content:devtoberfest-2026-int-21-mcp-gateway-in-practice","kind":"content","label":"MCP Gateway in Practice: Architecture, configuration, and hands-on","href":"/content/devtoberfest-2026-int-21-mcp-gateway-in-practice","icon":"talk","ecos":["btp","abap","cap","commerce","successfactors"],"homeEcos":["btp","abap","cap","commerce","successfactors"]},{"id":"content:devtoberfest-2026-int-31-agentic-ai-integration-suite","kind":"content","label":"Powering Enterprise-Ready Agentic AI with SAP Integration Suite","href":"/content/devtoberfest-2026-int-31-agentic-ai-integration-suite","icon":"talk","ecos":["btp","abap","cap","digital-manufacturing","ui5"],"homeEcos":["btp","abap","digital-manufacturing","cap"]},{"id":"content:devtoberfest-2026-int-41-edge-integration-cell","kind":"content","label":"Edge Integration Cell - what's new?","href":"/content/devtoberfest-2026-int-41-edge-integration-cell","icon":"talk","ecos":["btp","abap","cap"],"homeEcos":["btp","abap","cap"]},{"id":"content:devtoberfest-2026-int-43-event-studio","kind":"content","label":"Event Add-On for ERP: All you need to know about the new Event Studio","href":"/content/devtoberfest-2026-int-43-event-studio","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:devtoberfest-2026-int23-agent-calls-sap","kind":"content","label":"🔴 Your Agent Wants to Call SAP. Now What?","href":"/content/devtoberfest-2026-int23-agent-calls-sap","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","abap","cap"]},{"id":"content:devtoberfest-2026-intent-to-arcade-joulebert","kind":"content","label":"From Intent to Arcade: Building Joule*Bert with Joule Studio and AI-Assisted Pro Code","href":"/content/devtoberfest-2026-intent-to-arcade-joulebert","icon":"talk","ecos":["btp","cap","ui5"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:devtoberfest-2026-joule-work-agentic-thinking","kind":"content","label":"Be the First to Understand Joule Work's Agentic Thinking","href":"/content/devtoberfest-2026-joule-work-agentic-thinking","icon":"talk","ecos":["btp","cap","ui5"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:devtoberfest-2026-meet-joule-studio-first-ai-agent","kind":"content","label":"Meet Joule Studio and Build your First AI Agent","href":"/content/devtoberfest-2026-meet-joule-studio-first-ai-agent","icon":"talk","ecos":["btp","cap","ui5"],"homeEcos":["btp","cap"]},{"id":"content:devtoberfest-2026-n8n-for-agentic-integrations","kind":"content","label":"How to Use n8n for Agentic Integrations and Cool Insights","href":"/content/devtoberfest-2026-n8n-for-agentic-integrations","icon":"talk","ecos":["btp","cap","ui5"],"homeEcos":["btp","cap","ui5"]},{"id":"content:devtoberfest-2026-news-from-custom-code-migration-ecc-to-s4hana","kind":"content","label":"News from Custom Code Migration: ECC to SAP S/4HANA Powered by Agentic AI","href":"/content/devtoberfest-2026-news-from-custom-code-migration-ecc-to-s4hana","icon":"talk","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:devtoberfest-2026-rap-authorizations-business-users","kind":"content","label":"Developing authorizations for business users in SAP Business AI Platform, ABAP environment","href":"/content/devtoberfest-2026-rap-authorizations-business-users","icon":"talk","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:devtoberfest-2026-rap-draft-handling","kind":"content","label":"What's new with draft handling in RAP?","href":"/content/devtoberfest-2026-rap-draft-handling","icon":"talk","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:devtoberfest-2026-rap-side-effects","kind":"content","label":"Always in Sync — Field-level and event-driven side effects for reactive UIs in RAP","href":"/content/devtoberfest-2026-rap-side-effects","icon":"talk","ecos":["abap","cap","btp"],"homeEcos":["abap","cap","btp"]},{"id":"content:devtoberfest-2026-real-pro-code-joule-studio","kind":"content","label":"Real Pro-Code Development with Joule Studio","href":"/content/devtoberfest-2026-real-pro-code-joule-studio","icon":"talk","ecos":["btp","cap","ui5","abap","commerce"],"homeEcos":["btp","cap","ui5","abap","commerce"]},{"id":"content:devtoberfest-2026-sap-bdc-and-ai","kind":"content","label":"SAP BDC and AI: A Perfect Match","href":"/content/devtoberfest-2026-sap-bdc-and-ai","icon":"talk","ecos":["btp","cap","ui5"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:devtoberfest-2026-sap-customers-adopted-n8n","kind":"content","label":"How Have SAP Customers Adopted n8n","href":"/content/devtoberfest-2026-sap-customers-adopted-n8n","icon":"talk","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"content:devtoberfest-2026-sap-themes-with-coding-agents","kind":"content","label":"Bringing SAP themes to any web app with coding agents","href":"/content/devtoberfest-2026-sap-themes-with-coding-agents","icon":"talk","ecos":["ui5","cap","btp","abap","commerce"],"homeEcos":["ui5","cap","btp","abap","commerce"]},{"id":"content:devtoberfest-2026-tabular-foundation-models","kind":"content","label":"Unlocking Tabular Foundation Models: From Experimentation to Production","href":"/content/devtoberfest-2026-tabular-foundation-models","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"content:devtoberfest-2026-tabular-predictions-tabpfn","kind":"content","label":"How We Make Tabular Predictions in 2026 with TabPFN","href":"/content/devtoberfest-2026-tabular-predictions-tabpfn","icon":"talk","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:devtoberfest-2026-token-efficiency","kind":"content","label":"Token Efficiency – Your Guide To Smart AI Development","href":"/content/devtoberfest-2026-token-efficiency","icon":"talk","ecos":["cap","ui5","btp","abap","commerce"],"homeEcos":["cap","ui5","btp","abap","commerce"]},{"id":"content:devtoberfest-2026-ui5-views-type-safe-tsx","kind":"content","label":"UI5 Views, Reimagined: Type-Safe TSX for a Modern Dev Experience","href":"/content/devtoberfest-2026-ui5-views-type-safe-tsx","icon":"talk","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"content:diagrams-related-to-odata-entities-cap-ecc","kind":"content","label":"Diagrams related to OData entities (CAP & ECC)","href":"/content/diagrams-related-to-odata-entities-cap-ecc","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:discovering-fiori-elements-analytical-functions-with-sap-support-messages","kind":"content","label":"Discovering SAP Fiori Elements Analytical functions by implementing SAP Support Message Reporting","href":"/content/discovering-fiori-elements-analytical-functions-with-sap-support-messages","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:display-of-hierarchical-data-in-sap-fiori-elements-using-cap","kind":"content","label":"Display of hierarchical data in SAP Fiori elements using SAP Cloud Application Programming Model","href":"/content/display-of-hierarchical-data-in-sap-fiori-elements-using-cap","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:display-pdf-from-btp-forms-service-in-a-cap-sapui5-application","kind":"content","label":"Using Custom Actions to display PDF from SAP BTP Forms service into a CAP SAPUI5 application","href":"/content/display-pdf-from-btp-forms-service-in-a-cap-sapui5-application","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:distributed-resiliency-of-cap-applications-with-hana-multi-zone-replication","kind":"content","label":"Distributed Resiliency of SAP CAP applications using SAP HANA Cloud (Multi-Zone Replication)","href":"/content/distributed-resiliency-of-cap-applications-with-hana-multi-zone-replication","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:diy-jdbc-sender-adapter-for-sap-integration-suite","kind":"content","label":"DIY JDBC Sender Adapter for SAP Integration Suite","href":"/content/diy-jdbc-sender-adapter-for-sap-integration-suite","icon":"blog","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:don-t-let-it-crash-is-this-the-new-cap-guideline","kind":"content","label":"Don't \"let it crash\", is this the new CAP guideline?","href":"/content/don-t-let-it-crash-is-this-the-new-cap-guideline","icon":"blog","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5"]},{"id":"content:dynamic-authorisation-with-user-attributes-in-sap-cap-and-ams","kind":"content","label":"Dynamic authorisation with user attributes in SAP CAP and AMS","href":"/content/dynamic-authorisation-with-user-attributes-in-sap-cap-and-ams","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:dynamic-criticality-in-cap-using-fiori-elements-and-nodejs","kind":"content","label":"Dynamic Criticality in SAP CAP Using Fiori Elements and Node.js","href":"/content/dynamic-criticality-in-cap-using-fiori-elements-and-nodejs","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:dynamic-field-control-in-cap-java-object-pages","kind":"content","label":"CAP JavaでObject Pageの項目の動的な入力制御を実装する","href":"/content/dynamic-field-control-in-cap-java-object-pages","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:dynamic-odata-from-any-api-through-sap-btp-kyma","kind":"content","label":"Dynamic OData from \"any\" API through SAP BTP Kyma","href":"/content/dynamic-odata-from-any-api-through-sap-btp-kyma","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:e2e-sap-iot-to-sap-analytics-cloud","kind":"content","label":"E2E: SAP Cloud Platform Internet of Things to SAP Analytics Cloud","href":"/content/e2e-sap-iot-to-sap-analytics-cloud","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:edge-integration-cell-design-deploy-and-manage-apis","kind":"content","label":"Edge Integration Cell : Design, deploy and manage APIs","href":"/content/edge-integration-cell-design-deploy-and-manage-apis","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:effective-axios-error-logging-for-robust-sap-integrations","kind":"content","label":"Effective Axios Error Logging for Robust SAP Integrations","href":"/content/effective-axios-error-logging-for-robust-sap-integrations","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:effective-from-june-30th-2026-xsuaa-deprecation-of-get-method-for-oauth-token-re","kind":"content","label":"Effective from June 30th 2026 - XSUAA Deprecation of GET Method for OAuth Token Retrieval","href":"/content/effective-from-june-30th-2026-xsuaa-deprecation-of-get-method-for-oauth-token-re","icon":"blog","ecos":["cap","btp","abap","ui5","digital-manufacturing"],"homeEcos":["cap","btp","abap","ui5","digital-manufacturing"]},{"id":"content:efficient-data-entry-in-sap-fiori-elements-applications","kind":"content","label":"How to ensure that users can efficiently enter data in SAP Fiori elements applications","href":"/content/efficient-data-entry-in-sap-fiori-elements-applications","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:elevating-data-privacy-in-cap-genai-applications-with-cap-llm-plugin","kind":"content","label":"Elevating Data Privacy in SAP CAP based GenAI Applications with CAP LLM Plugin","href":"/content/elevating-data-privacy-in-cap-genai-applications-with-cap-llm-plugin","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:embed-btp-attachment-reuse-ui-in-a-fiori-elements-cap-app","kind":"content","label":"Unlocking Efficiency: Leveraging SAP BTP Document Management Service in Fiori Applications # 2","href":"/content/embed-btp-attachment-reuse-ui-in-a-fiori-elements-cap-app","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:empowering-your-data-analytics-with-gpt-3-and-sap-cap-integration","kind":"content","label":"Empowering Your Data Analytics with GPT-3 and SAP CAP Integration","href":"/content/empowering-your-data-analytics-with-gpt-3-and-sap-cap-integration","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:enable-app-to-app-navigation-in-bas","kind":"content","label":"Enable App-to-App Navigation in BAS","href":"/content/enable-app-to-app-navigation-in-bas","icon":"blog","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"content:enabling-authorization-policies-in-ias-with-ams-and-cap","kind":"content","label":"Enabling Authorization Policies in SAP Cloud Identity Services - IAS with AMS/CAP","href":"/content/enabling-authorization-policies-in-ias-with-ams-and-cap","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:end-to-end-currency-conversion-integration-using-sap-integration-suite-sap-cpi","kind":"content","label":"End to End Currency Conversion Integration using SAP Integration Suite (SAP CPI)","href":"/content/end-to-end-currency-conversion-integration-using-sap-integration-suite-sap-cpi","icon":"blog","ecos":["btp","digital-manufacturing","ui5"],"homeEcos":["btp","digital-manufacturing"]},{"id":"content:end-to-end-error-handling-with-general-splitter-and-local-flows","kind":"content","label":"End-to-End Error Handling with General Splitter and Local Flows","href":"/content/end-to-end-error-handling-with-general-splitter-and-local-flows","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:end-to-end-mail-adapter-setup-in-sap-cpi-using-gmail-step-by-step-guide","kind":"content","label":"End-to-End Mail Adapter Setup in SAP CPI Using Gmail (Step-by-Step Guide)","href":"/content/end-to-end-mail-adapter-setup-in-sap-cpi-using-gmail-step-by-step-guide","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:enhancing-business-processes-with-sap-btp-ai-in-sap-integration-suite","kind":"content","label":"Enhancing Business Processes with SAP BTP AI in SAP Integration Suite","href":"/content/enhancing-business-processes-with-sap-btp-ai-in-sap-integration-suite","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:enhancing-customer-master-with-a-custom-tab-using-sap-taxi-framework-badi-se80","kind":"content","label":"Enhancing Customer Master with a Custom Tab Using SAP TAXI Framework (BAdI + SE80)","href":"/content/enhancing-customer-master-with-a-custom-tab-using-sap-taxi-framework-badi-se80","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:enhancing-sap-business-events-with-custom-payload-fields-using-rap","kind":"content","label":"Enhancing SAP Business Events with Custom Payload Fields using RAP","href":"/content/enhancing-sap-business-events-with-custom-payload-fields-using-rap","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:enhancing-standard-bapis-when-and-how-to-do-it","kind":"content","label":"Enhancing Standard BAPIs: When and How to Do It","href":"/content/enhancing-standard-bapis-when-and-how-to-do-it","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:enhancing-standard-cds-views-in-fiori-my-inbox","kind":"content","label":"Enhancing Standard CDS Views in FIORI My Inbox","href":"/content/enhancing-standard-cds-views-in-fiori-my-inbox","icon":"blog","ecos":["btp","ui5"],"homeEcos":["btp","ui5"]},{"id":"content:enhancing-unit-testing-in-cap-java-with-github-copilot","kind":"content","label":"Enhancing Unit Testing in SAP CAP Java Applications with GitHub Copilot","href":"/content/enhancing-unit-testing-in-cap-java-with-github-copilot","icon":"blog","ecos":["cap","btp","digital-manufacturing","ui5","abap","commerce"],"homeEcos":["cap","btp","digital-manufacturing","ui5","abap","commerce"]},{"id":"content:evaluating-saps-new-mcp-servers-ui5-cap-fiori-tools","kind":"content","label":"Evaluating SAP’s new MCP servers: UI5, CAP, and Fiori tools in practice","href":"/content/evaluating-saps-new-mcp-servers-ui5-cap-fiori-tools","icon":"blog","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"content:event-driven-architecture-with-event-mesh-part-1","kind":"content","label":"Event Driven Architecture with Event Mesh - Part-1","href":"/content/event-driven-architecture-with-event-mesh-part-1","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:event-driven-architecture-with-event-mesh-part-2","kind":"content","label":"Event Driven Architecture with Event Mesh – Part-2","href":"/content/event-driven-architecture-with-event-mesh-part-2","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:event-driven-cap-on-kyma-with-agentic-ai-and-ui-auto-refresh","kind":"content","label":"Event Driven SAP CAP on Kyma with Agentic AI and UI Auto Refresh","href":"/content/event-driven-cap-on-kyma-with-agentic-ai-and-ui-auto-refresh","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:event-driven-extensions-for-sap-successfactors-on-sap-btp-connecting-the-dots","kind":"content","label":"Event-driven Extensions for SAP SuccessFactors on SAP BTP – Connecting the Dots","href":"/content/event-driven-extensions-for-sap-successfactors-on-sap-btp-connecting-the-dots","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:event-driven-multi-tenant-architecture-with-cap-and-sap-event-mesh","kind":"content","label":"Event-Driven Multi-Tenant Architecture on SAP BTP with CAP and SAP Event Mesh","href":"/content/event-driven-multi-tenant-architecture-with-cap-and-sap-event-mesh","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:event-enabling-sap-data-replication-framework-with-advanced-event-mesh-aifaem","kind":"content","label":"Event enabling SAP Data Replication Framework with Advanced Event Mesh & AIFAEM","href":"/content/event-enabling-sap-data-replication-framework-with-advanced-event-mesh-aifaem","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:event-mesh-amqp-the-retry-trap-nobody-warns-you-about","kind":"content","label":"Event Mesh + AMQP: The Retry Trap Nobody Warns You About","href":"/content/event-mesh-amqp-the-retry-trap-nobody-warns-you-about","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:event-task-scheduling-in-cap-nodejs-alpha","kind":"content","label":"Quick tip: event/task scheduling in CAP Node.js (in alpha state)","href":"/content/event-task-scheduling-in-cap-nodejs-alpha","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:execute-oauth2-client-credentials-protected-rest-request-from-cap","kind":"content","label":"Execute [OAuth2 client credentials] protected REST request with SAP CAP Application","href":"/content/execute-oauth2-client-credentials-protected-rest-request-from-cap","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:explaining-sap-joule-for-hr-business-users-functional-consultants","kind":"content","label":"Explaining SAP Joule for HR Business Users & Functional Consultants.","href":"/content/explaining-sap-joule-for-hr-business-users-functional-consultants","icon":"blog","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:exploring-sap-salesforce-adapter-retry-mechanism-with-jms-queue","kind":"content","label":"Exploring SAP Salesforce Adapter - retry mechanism with JMS queue","href":"/content/exploring-sap-salesforce-adapter-retry-mechanism-with-jms-queue","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:exploring-the-typescript-ecosystem-with-cds-typer-part-1","kind":"content","label":"Exploring the TypeScript Ecosystem with @cap-js/cds-typer, cds-ts, and node-ts","href":"/content/exploring-the-typescript-ecosystem-with-cds-typer-part-1","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:exploring-the-typescript-ecosystem-with-cds-typer-part-2","kind":"content","label":"Exploring the TypeScript Ecosystem with @cap-js/cds-typer, cds-ts, and node-ts Part - 2","href":"/content/exploring-the-typescript-ecosystem-with-cds-typer-part-2","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:expose-rfcs-as-mcp-tools-in-integration-suite","kind":"content","label":"Expose RFCs as MCP Tools in Integration Suite","href":"/content/expose-rfcs-as-mcp-tools-in-integration-suite","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:expose-s-4hana-cloud-odata-api-as-an-mcp-server-via-cap-node-js-2","kind":"content","label":"Expose S/4HANA Cloud OData API as an MCP Server via CAP Node.js","href":"/content/expose-s-4hana-cloud-odata-api-as-an-mcp-server-via-cap-node-js-2","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:expose-s-4hana-cloud-odata-api-as-an-mcp-server-via-cap-node-js","kind":"content","label":"Expose S/4HANA Cloud OData API as an MCP Server via CAP Node.js","href":"/content/expose-s-4hana-cloud-odata-api-as-an-mcp-server-via-cap-node-js","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:exposing-calculation-view-with-dynamic-client-via-odata-api","kind":"content","label":"Exposing Calculation View with Dynamic Client via OData API","href":"/content/exposing-calculation-view-with-dynamic-client-via-odata-api","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:exposing-sap-s4-onprem-data-to-external-system-odata-service-btp-destination-con","kind":"content","label":"Exposing SAP S4 Onprem data to external System || Odata Service || BTP || Destination-Connectivity","href":"/content/exposing-sap-s4-onprem-data-to-external-system-odata-service-btp-destination-con","icon":"blog","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp","ui5"]},{"id":"content:extend-cap-validations-with-the-capval-plugin","kind":"content","label":"Extend SAP Cloud Application Programming Model(CAP) Validations with the CAPVAL Plugin","href":"/content/extend-cap-validations-with-the-capval-plugin","icon":"blog","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:extend-sap-successfactors-on-sap-btp-with-cap-create-the-cap-service","kind":"content","label":"Extend SAP SuccessFactors on SAP BTP with CAP - Create the CAP Service","href":"/content/extend-sap-successfactors-on-sap-btp-with-cap-create-the-cap-service","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:extend-sap-successfactors-on-sap-btp-with-cap-import-sap-successfactors-odata-se","kind":"content","label":"Extend SAP SuccessFactors on SAP BTP with CAP - Import SAP SuccessFactors OData Services definitions","href":"/content/extend-sap-successfactors-on-sap-btp-with-cap-import-sap-successfactors-odata-se","icon":"blog","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp","ui5"]},{"id":"content:extend-successfactors-on-btp-with-cap-deploy-to-hana-cloud","kind":"content","label":"Extend SAP SuccessFactors on SAP BTP with CAP - Deploy to SAP HANA Cloud","href":"/content/extend-successfactors-on-btp-with-cap-deploy-to-hana-cloud","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:extend-successfactors-on-btp-with-cap-develop-the-fiori-elements-application","kind":"content","label":"Extend SAP SuccessFactors on SAP BTP with CAP - Develop the SAP Fiori Elements Application","href":"/content/extend-successfactors-on-btp-with-cap-develop-the-fiori-elements-application","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:extend-upload-set-to-fiori-elements-and-utilize-dms","kind":"content","label":"Extend Upload Set to Fiori Elements and utilize Document Management Service","href":"/content/extend-upload-set-to-fiori-elements-and-utilize-dms","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:extend-upload-set-with-table-to-fiori-elements-and-utilize-object-store","kind":"content","label":"Extend Upload Set with Table to Fiori Elements and utilize Object Store","href":"/content/extend-upload-set-with-table-to-fiori-elements-and-utilize-object-store","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:extending-fiori-elements-with-the-flexible-programming-model","kind":"content","label":"SAP BTP Developer's Guide: Extending Fiori Elements with the Flexible Programming Model","href":"/content/extending-fiori-elements-with-the-flexible-programming-model","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:extending-sap-sales-and-service-cloud-v2-using-cap","kind":"content","label":"Extending SAP Sales and Service Cloud V2 Using CAP","href":"/content/extending-sap-sales-and-service-cloud-v2-using-cap","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:extending-standard-s-4-hana-odata-api-s","kind":"content","label":"Extending Standard S/4 HANA OData API's","href":"/content/extending-standard-s-4-hana-odata-api-s","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:extensions-for-sap-build-process-automation-actions-from-cap-nodejs","kind":"content","label":"Extensions for SAP Build Process Automation - Actions from CAP Node.js Service","href":"/content/extensions-for-sap-build-process-automation-actions-from-cap-nodejs","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:extract-rev-trac-requests-by-custom-program-and-rev-trac-api","kind":"content","label":"Extract Rev-Trac requests by custom program and Rev-Trac API","href":"/content/extract-rev-trac-requests-by-custom-program-and-rev-trac-api","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:federating-replicating-and-caching-remote-data-in-cap-part-1","kind":"content","label":"The Full Picture: Federating, Replicating, and Caching Remote Data in CAP — Part 1","href":"/content/federating-replicating-and-caching-remote-data-in-cap-part-1","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:federating-replicating-and-caching-remote-data-in-cap-part-2","kind":"content","label":"Federating, Replicating, and Caching Remote Data in CAP — Part 2","href":"/content/federating-replicating-and-caching-remote-data-in-cap-part-2","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:finally-an-mcp-server-for-abap","kind":"content","label":"Finally: An MCP Server for ABAP","href":"/content/finally-an-mcp-server-for-abap","icon":"blog","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:fiori-elements-analytical-table-with-cap-does-it-work-with-v2-and-v4","kind":"content","label":"Fiori Elements Analytical Table with CAP: Does it work with V2 and V4?","href":"/content/fiori-elements-analytical-table-with-cap-does-it-work-with-v2-and-v4","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:fiori-elements-standard-app-extension-using-virtual-elements","kind":"content","label":"Fiori Elements Standard App Extension using virtual Elements: Manage Billing Document ( Real Time Extension Scenario)","href":"/content/fiori-elements-standard-app-extension-using-virtual-elements","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:first-java-cap-application","kind":"content","label":"First Java Cap Application","href":"/content/first-java-cap-application","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:first-release-of-the-sap-fiori-mcp-server","kind":"content","label":"SAP Fiori Tools Update – First Release of the SAP Fiori MCP Server for Agentic AI","href":"/content/first-release-of-the-sap-fiori-mcp-server","icon":"blog","ecos":["ui5","cap","abap","btp"],"homeEcos":["ui5","abap","btp","cap"]},{"id":"content:fixing-the-npm-notarget-error-for-sap-hdi-deploy","kind":"content","label":"How to fix npm error notarget @sap/hdi-deploy when you create a CAP app in BAS","href":"/content/fixing-the-npm-notarget-error-for-sap-hdi-deploy","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:from-application-logging-to-cloud-logging-service-innovation-guide","kind":"content","label":"From Application Logging to Cloud Logging: Service Innovation Guide","href":"/content/from-application-logging-to-cloud-logging-service-innovation-guide","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:from-application-logging-to-cloud-logging-service-migration-guide","kind":"content","label":"From Application Logging to Cloud Logging: Service Migration Guide","href":"/content/from-application-logging-to-cloud-logging-service-migration-guide","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:from-dashboard-to-conversational-ai-in-minutes-adding-mcp-to-an-existing-cap-app","kind":"content","label":"From Dashboard to Conversational AI in Minutes: Adding MCP to an Existing CAP Application","href":"/content/from-dashboard-to-conversational-ai-in-minutes-adding-mcp-to-an-existing-cap-app","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:from-r3-abap-to-cap-and-fiori-elements-deployment","kind":"content","label":"From R/3 ABAP to CAP/Fiori Elements on SAP BTP- Deployment","href":"/content/from-r3-abap-to-cap-and-fiori-elements-deployment","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:from-r3-abap-to-cap-and-fiori-elements-on-sap-cloud","kind":"content","label":"From R/3 ABAP to CAP/Fiori Elements on SAP Cloud","href":"/content/from-r3-abap-to-cap-and-fiori-elements-on-sap-cloud","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:from-rest-to-datasphere-a-cap-based-integration-approach","kind":"content","label":"From REST to Datasphere: A CAP-based Integration Approach","href":"/content/from-rest-to-datasphere-a-cap-based-integration-approach","icon":"blog","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp","ui5"]},{"id":"content:from-sap-integration-suite-iflow-to-mcp-tools-exposing-odata-apis-to-ai-agents","kind":"content","label":"From SAP Integration Suite iFlow to MCP Tools: Exposing OData APIs to AI Agents","href":"/content/from-sap-integration-suite-iflow-to-mcp-tools-exposing-odata-apis-to-ai-agents","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:from-sap-sales-and-service-cloud-v2-apis-to-ai-building-an-mcp-server-with-cap-n","kind":"content","label":"From SAP Sales and Service Cloud V2 APIs to AI: Building an MCP Server with CAP Node.js","href":"/content/from-sap-sales-and-service-cloud-v2-apis-to-ai-building-an-mcp-server-with-cap-n","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:from-segw-and-legacy-ui5-to-rap-with-arc-1","kind":"content","label":"From SEGW and Legacy UI5 to RAP with ARC-1","href":"/content/from-segw-and-legacy-ui5-to-rap-with-arc-1","icon":"blog","ecos":["abap","btp","cap","ui5"],"homeEcos":["abap","btp","cap","ui5"]},{"id":"content:from-segw-to-odata-publish-expose-your-cds-view-as-odata-in-s-4hana","kind":"content","label":"From SEGW to @OData.publish: Expose Your CDS View as OData in S/4HANA","href":"/content/from-segw-to-odata-publish-expose-your-cds-view-as-odata-in-s-4hana","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:from-seo-to-meo-designing-joule-ready-api-layers-for-sap-commerce-cloud","kind":"content","label":"From SEO to MEO: Designing Joule-Ready API Layers for SAP Commerce Cloud","href":"/content/from-seo-to-meo-designing-joule-ready-api-layers-for-sap-commerce-cloud","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:from-strategy-doc-to-runtime-rule-embedding-sap-ai-standards","kind":"content","label":"From Strategy Doc to Runtime Rule: Embedding SAP AI Standards into Claude Code","href":"/content/from-strategy-doc-to-runtime-rule-embedding-sap-ai-standards","icon":"blog","ecos":["cap","ui5","btp","abap","commerce"],"homeEcos":["cap","ui5","btp","abap","commerce"]},{"id":"content:from-xsuaa-to-ams-policy-based-authorization-for-s4hana-extensions","kind":"content","label":"From XSUAA to AMS: Architecting S4HANA CAP Extensions with Policy-Based Authorization","href":"/content/from-xsuaa-to-ams-policy-based-authorization-for-s4hana-extensions","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:from-zero-to-fiori-building-sap-apps-with-ai-agents","kind":"content","label":"From Zero to Fiori: Building SAP Apps with AI Agents (And Why I Use Markdown Files Instead of MCP)","href":"/content/from-zero-to-fiori-building-sap-apps-with-ai-agents","icon":"blog","ecos":["cap","ui5","btp","abap","commerce"],"homeEcos":["cap","ui5","btp","abap","commerce"]},{"id":"content:full-stack-typescript-app-for-cloud-foundry-sample-repository","kind":"content","label":"Full Stack TypeScript App for Cloud Foundry - Sample Repository","href":"/content/full-stack-typescript-app-for-cloud-foundry-sample-repository","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:fullstack-cap-with-hana-cloud-part-1-local-with-sqlite","kind":"content","label":"Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-1]","href":"/content/fullstack-cap-with-hana-cloud-part-1-local-with-sqlite","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:fullstack-cap-with-hana-cloud-part-2-cds-annotations","kind":"content","label":"Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-2]","href":"/content/fullstack-cap-with-hana-cloud-part-2-cds-annotations","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:fullstack-cap-with-hana-cloud-part-3-setting-up-hana-cloud","kind":"content","label":"Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-3]","href":"/content/fullstack-cap-with-hana-cloud-part-3-setting-up-hana-cloud","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:fullstack-cap-with-hana-cloud-part-4-connect-and-deploy","kind":"content","label":"Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-4]","href":"/content/fullstack-cap-with-hana-cloud-part-4-connect-and-deploy","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:fullstack-cap-with-hana-cloud-part-5-btp-destination","kind":"content","label":"Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-5]","href":"/content/fullstack-cap-with-hana-cloud-part-5-btp-destination","icon":"blog","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp","ui5"]},{"id":"content:fullstack-cap-with-hana-cloud-part-6-fiori-to-html5-repository","kind":"content","label":"Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-6]","href":"/content/fullstack-cap-with-hana-cloud-part-6-fiori-to-html5-repository","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:genai-mail-insights-generative-ai-hub-for-customer-support","kind":"content","label":"GenAI Mail Insights - Leveraging the generative AI hub in SAP AI Core to improve customer support","href":"/content/genai-mail-insights-generative-ai-hub-for-customer-support","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:generate-and-download-pdfs-on-the-fly-in-cap","kind":"content","label":"How to Generate and Download PDFs on the fly without persisting in CAP Application","href":"/content/generate-and-download-pdfs-on-the-fly-in-cap","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:generating-adobe-form-using-rap-framework-odata-services","kind":"content","label":"Generating Adobe Form Using RAP framework OData Services","href":"/content/generating-adobe-form-using-rap-framework-odata-services","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:generating-pdf-on-btp-cf-using-cap-and-puppeteer","kind":"content","label":"Generating PDF on BTP CF using CAP and Puppeteer","href":"/content/generating-pdf-on-btp-cf-using-cap-and-puppeteer","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:generation-of-message-processing-logs-report-for-edi-transactions-using-sap-ci","kind":"content","label":"Generation of Message Processing logs report for EDI transactions using SAP CI.","href":"/content/generation-of-message-processing-logs-report-for-edi-transactions-using-sap-ci","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:get-authenticated-user-information-with-cap-using-the-xsuaa-api","kind":"content","label":"How to get authenticated user information with CAP in three different ways – Using the XSUAA API","href":"/content/get-authenticated-user-information-with-cap-using-the-xsuaa-api","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:get-familiar-with-your-first-capm-project-using-the-cds-graphical-modeler","kind":"content","label":"Get familiar with your first CAPM project using CDS graphic modeler","href":"/content/get-familiar-with-your-first-capm-project-using-the-cds-graphical-modeler","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:getting-started-with-cap-on-postgresql-nodejs","kind":"content","label":"Getting started with CAP on PostgreSQL (Node.js)","href":"/content/getting-started-with-cap-on-postgresql-nodejs","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:getting-started-with-cds-ql-in-nodejs-for-cap-101-on-how-to-query-data","kind":"content","label":"Getting started with cds.ql in NodeJS for CAP - 101 on how to query data","href":"/content/getting-started-with-cds-ql-in-nodejs-for-cap-101-on-how-to-query-data","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5"]},{"id":"content:getting-started-with-sap-event-mesh-concepts-setup-and-best-practices","kind":"content","label":"Getting Started with SAP Event Mesh: Concepts, Setup, and Best Practices","href":"/content/getting-started-with-sap-event-mesh-concepts-setup-and-best-practices","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:getting-started-with-unit-testing-in-cap-java","kind":"content","label":"Getting Started with Unit Testing in SAP CAP Java Applications","href":"/content/getting-started-with-unit-testing-in-cap-java","icon":"blog","ecos":["cap","btp","digital-manufacturing"],"homeEcos":["cap","btp","digital-manufacturing"]},{"id":"content:getting-your-head-into-cap-multitenancy","kind":"content","label":"Getting your head into Cloud Application Programming model multitenancy","href":"/content/getting-your-head-into-cap-multitenancy","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:github-copilot-vscode-my-own-sap-development-rules","kind":"content","label":"Github Copilot VSCode - My Own SAP Development Rules","href":"/content/github-copilot-vscode-my-own-sap-development-rules","icon":"blog","ecos":["cap","ui5","btp","abap","commerce"],"homeEcos":["cap","ui5","btp","abap","commerce"]},{"id":"content:give-your-ai-agent-some-tools-introducing-the-ui5-mcp-server","kind":"content","label":"Give Your AI Agent Some Tools: Introducing the UI5 MCP Server","href":"/content/give-your-ai-agent-some-tools-introducing-the-ui5-mcp-server","icon":"blog","ecos":["ui5","cap","abap","btp"],"homeEcos":["ui5","abap","btp","cap"]},{"id":"content:governance-at-scale-why-a-clean-core-is-what-makes-agent-governance-enforceable","kind":"content","label":"Governance at Scale: Why a Clean Core Is What Makes Agent Governance Enforceable","href":"/content/governance-at-scale-why-a-clean-core-is-what-makes-agent-governance-enforceable","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:graph-intro-series-part-8-use-graph-with-odata-v4","kind":"content","label":"Graph intro series, part 8: Use Graph With OData v4","href":"/content/graph-intro-series-part-8-use-graph-with-odata-v4","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:graph-on-integration-suite-simplifying-multi-api-data-retrieval-with-unified-bus","kind":"content","label":"Graph on Integration Suite: Simplifying Multi-API Data Retrieval with Unified Business Data Graph","href":"/content/graph-on-integration-suite-simplifying-multi-api-data-retrieval-with-unified-bus","icon":"blog","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:guide-to-process-automation-apis-part-i-getting-started","kind":"content","label":"Guide to Process Automation APIs - Part I - Getting Started","href":"/content/guide-to-process-automation-apis-part-i-getting-started","icon":"blog","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap","ui5"]},{"id":"content:hana-cloud-knowledge-graph-for-ai-driven-tender-analysis","kind":"content","label":"A Use Case for HANA Cloud Knowledge Graph: AI‑Driven Tender Analysis","href":"/content/hana-cloud-knowledge-graph-for-ai-driven-tender-analysis","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:hana-clouds-vector-embedding-in-cap-compared-with-openai","kind":"content","label":"HANA Cloud’s VECTOR EMBEDDING in CAP and Comparison with OpenAI Embedding","href":"/content/hana-clouds-vector-embedding-in-cap-compared-with-openai","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:hana-database-migration-handling-incompatible-changes","kind":"content","label":"HANA Database Migration: Handling Incompatible Changes to Existing Tables","href":"/content/hana-database-migration-handling-incompatible-changes","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:hana-sql-notebooks-in-sap-build-business-application-studio-bas-visual-studio-co","kind":"content","label":"HANA SQL NOTEBOOKS in SAP BUILD / Business Application Studio(BAS) / Visual Studio Code","href":"/content/hana-sql-notebooks-in-sap-build-business-application-studio-bas-visual-studio-co","icon":"blog","ecos":["btp","abap","ui5","cap"],"homeEcos":["btp","abap","ui5","cap"]},{"id":"content:handling-concurrent-updates-in-sap-cap-java","kind":"content","label":"Handling Concurrent Updates in SAP CAP Java","href":"/content/handling-concurrent-updates-in-sap-cap-java","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:handling-csv-data-deployment-in-cap-hdi-without-data-loss","kind":"content","label":"Handling CSV Data Deployment in CAP HDI Without Data Loss","href":"/content/handling-csv-data-deployment-in-cap-hdi-without-data-loss","icon":"blog","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:handling-file-routing-and-alerts-in-sap-cpi-based-on-file-type","kind":"content","label":"Handling File Routing and Alerts in SAP CPI Based on File Type","href":"/content/handling-file-routing-and-alerts-in-sap-cpi-based-on-file-type","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:hands-on-with-the-cap-operator-and-the-partner-reference-application","kind":"content","label":"From Concept to action: Hands-On with the CAP Operator and the Partner Reference Application","href":"/content/hands-on-with-the-cap-operator-and-the-partner-reference-application","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:hello-react-and-vue-caps-new-ui-layer","kind":"content","label":"Hello React & Vue : SAP CAP’s New UI Layer is Here!","href":"/content/hello-react-and-vue-caps-new-ui-layer","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5"]},{"id":"content:hey-abap-cloud-please-let-me-save-my-data-export-to-azure-storage-please-part-4","kind":"content","label":"Hey ABAP Cloud please let me save my data export to Azure Storage please🥺🙏- part 4","href":"/content/hey-abap-cloud-please-let-me-save-my-data-export-to-azure-storage-please-part-4","icon":"blog","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp","ui5"]},{"id":"content:how-i-use-ai-for-development-and-why-context-matters","kind":"content","label":"How I Use AI for Development and Why Context Matters","href":"/content/how-i-use-ai-for-development-and-why-context-matters","icon":"blog","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"content:how-redwood-software-and-sap-are-shaping-the-next-era-of-automation-with-joule-s","kind":"content","label":"How Redwood Software and SAP are shaping the next era of automation with Joule Studio","href":"/content/how-redwood-software-and-sap-are-shaping-the-next-era-of-automation-with-joule-s","icon":"blog","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp"]},{"id":"content:how-to-access-hana-cloud-database-and-hdi-container-in-btp","kind":"content","label":"[BTP HANA Cloud Database] : How to access HANA Cloud Database & HDI Container in BTP","href":"/content/how-to-access-hana-cloud-database-and-hdi-container-in-btp","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:how-to-access-on-premise-odata-from-bas-in-capm-development","kind":"content","label":"How to Access On-premise OData from the Business Application Studio - CAPM Development","href":"/content/how-to-access-on-premise-odata-from-bas-in-capm-development","icon":"blog","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp","ui5"]},{"id":"content:how-to-access-sap-cloud-logging-service-dashboards-using-ias-saml-authentication","kind":"content","label":"How to Access SAP Cloud Logging Service Dashboards Using IAS SAML Authentication","href":"/content/how-to-access-sap-cloud-logging-service-dashboards-using-ias-saml-authentication","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:how-to-add-odata-v2-adapter-proxy-to-your-cap-project","kind":"content","label":"How to add OData v2 adapter proxy to your CAP project","href":"/content/how-to-add-odata-v2-adapter-proxy-to-your-cap-project","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:how-to-approve-reject-task-via-api-in-sap-build-process-automation","kind":"content","label":"How to Approve/Reject Task via API in SAP Build Process Automation","href":"/content/how-to-approve-reject-task-via-api-in-sap-build-process-automation","icon":"blog","ecos":["btp","cap","ui5"],"homeEcos":["btp","cap","ui5"]},{"id":"content:how-to-build-reusable-plugin-components-for-cap-java-applications","kind":"content","label":"How to build reusable plugin components for CAP Java applications","href":"/content/how-to-build-reusable-plugin-components-for-cap-java-applications","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:how-to-check-fiori-apps-related-authorization-object-mass","kind":"content","label":"How to Check Fiori Apps Related Authorization Object Mass","href":"/content/how-to-check-fiori-apps-related-authorization-object-mass","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:how-to-configure-retry-mechanism-in-sap-btp-ci-is-to-handle-only-connectivity-er","kind":"content","label":"How to Configure Retry Mechanism in SAP BTP CI/IS to Handle Only Connectivity Errors when using AEM","href":"/content/how-to-configure-retry-mechanism-in-sap-btp-ci-is-to-handle-only-connectivity-er","icon":"blog","ecos":["btp","digital-manufacturing","ui5"],"homeEcos":["btp","digital-manufacturing"]},{"id":"content:how-to-connect-claude-code-to-abap-with-zero-config-mcp","kind":"content","label":"How to Connect Claude Code to ABAP with Zero-Config MCP","href":"/content/how-to-connect-claude-code-to-abap-with-zero-config-mcp","icon":"blog","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"content:how-to-connect-to-remote-services-locally-in-a-cap-application","kind":"content","label":"BTP CAP : How to Connect to Remote Services Locally in CAP Application","href":"/content/how-to-connect-to-remote-services-locally-in-a-cap-application","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:how-to-consume-ui5-custom-libraries-in-bas-or-vs-code","kind":"content","label":"How to consume UI5 custom libraries in BAS or VS Code","href":"/content/how-to-consume-ui5-custom-libraries-in-bas-or-vs-code","icon":"blog","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"content:how-to-create-a-purchase-order-through-bapi-in-the-sap-through-program-se38-t-co","kind":"content","label":"How to create a Purchase Order through BAPI in the SAP through program ( SE38 ) T-CODE .","href":"/content/how-to-create-a-purchase-order-through-bapi-in-the-sap-through-program-se38-t-co","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:how-to-create-an-application-job-apj-in-sap-s-4hana-abap-with-single-values-sele","kind":"content","label":"How to Create an Application Job (APJ) in SAP S/4HANA ABAP — With Single Values & Select Options","href":"/content/how-to-create-an-application-job-apj-in-sap-s-4hana-abap-with-single-values-sele","icon":"blog","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:how-to-create-and-expose-odata-apis","kind":"content","label":"how to create and expose OData APIs","href":"/content/how-to-create-and-expose-odata-apis","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:how-to-deploy-a-custom-fiori-app-to-s-4hana-public-cloud-and-add-a-tile-in-sap-b","kind":"content","label":"How to Deploy a Custom Fiori App to S/4HANA Public Cloud and Add a Tile in SAP Build Work Zone","href":"/content/how-to-deploy-a-custom-fiori-app-to-s-4hana-public-cloud-and-add-a-tile-in-sap-b","icon":"blog","ecos":["btp","ui5"],"homeEcos":["btp","ui5"]},{"id":"content:how-to-enable-sap-audit-log-viewer-service-to-collect-all-audit-logs-from-btp-se","kind":"content","label":"How to enable SAP Audit Log Viewer service to collect all Audit logs from BTP Services - Part 1","href":"/content/how-to-enable-sap-audit-log-viewer-service-to-collect-all-audit-logs-from-btp-se","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:how-to-extend-abap-test-cockpit-on-sap-btp-for-custom-use-cases","kind":"content","label":"How to extend ABAP Test Cockpit on SAP BTP for custom use cases","href":"/content/how-to-extend-abap-test-cockpit-on-sap-btp-for-custom-use-cases","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:how-to-handle-usernames-global-user-ids-and-external-ids-in-your-landscape","kind":"content","label":"How to handle “usernames”, “Global User IDs” and “external IDs” in your landscape?","href":"/content/how-to-handle-usernames-global-user-ids-and-external-ids-in-your-landscape","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:how-to-implement-alert-notification-service-in-cap","kind":"content","label":"How To Implement Alert Notification Service in Cloud Application Programming","href":"/content/how-to-implement-alert-notification-service-in-cap","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:how-to-implement-sap-btp-audit-log-service-in-a-cap-application","kind":"content","label":"How to implement SAP BTP Audit log service in a CAP Application","href":"/content/how-to-implement-sap-btp-audit-log-service-in-a-cap-application","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:how-to-implement-sap-change-document","kind":"content","label":"How to Implement SAP Change Document","href":"/content/how-to-implement-sap-change-document","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:how-to-mass-upload-from-a-spreadsheet-file-into-an-sap-fiori-app-in-sap-btp-abap","kind":"content","label":"How to mass upload from a spreadsheet file into an SAP Fiori app in SAP BTP ABAP Environment Part 1","href":"/content/how-to-mass-upload-from-a-spreadsheet-file-into-an-sap-fiori-app-in-sap-btp-abap","icon":"blog","ecos":["abap","ui5","cap"],"homeEcos":["abap","ui5","cap"]},{"id":"content:how-to-merge-two-separate-smart-forms-into-a-single-pdf-in-sap","kind":"content","label":"How to Merge Two Separate Smart Forms into a Single PDF in SAP","href":"/content/how-to-merge-two-separate-smart-forms-into-a-single-pdf-in-sap","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:how-to-perform-initial-loads-from-s-4hana-to-advanced-event-mesh-with-odata-poll","kind":"content","label":"How to Perform Initial Loads from S/4HANA to Advanced Event Mesh with Odata Poll","href":"/content/how-to-perform-initial-loads-from-s-4hana-to-advanced-event-mesh-with-odata-poll","icon":"blog","ecos":["cap","btp","abap","digital-manufacturing","ui5"],"homeEcos":["cap","btp","abap","digital-manufacturing"]},{"id":"content:how-to-reduce-prompt-token-costs-using-toon","kind":"content","label":"How to Reduce Prompt Token Costs Using Toon = Save Money","href":"/content/how-to-reduce-prompt-token-costs-using-toon","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:how-to-rename-an-odata-v4-service","kind":"content","label":"How to rename an OData V4 service?","href":"/content/how-to-rename-an-odata-v4-service","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:how-to-scan-custom-abap-for-security-issues-in-eclipse-step-by-step","kind":"content","label":"How to Scan Custom ABAP for Security Issues in Eclipse (Step-by-Step)","href":"/content/how-to-scan-custom-abap-for-security-issues-in-eclipse-step-by-step","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:how-to-share-tables-across-different-cap-projects","kind":"content","label":"How to share tables across different CAP projects","href":"/content/how-to-share-tables-across-different-cap-projects","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:how-to-subscribe-or-fetch-data-from-solace-to-cpi-using-aem-adapter-part-5","kind":"content","label":"How to subscribe or fetch data from solace to CPI using AEM Adapter : part-5","href":"/content/how-to-subscribe-or-fetch-data-from-solace-to-cpi-using-aem-adapter-part-5","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:how-to-transfer-a-file-from-the-cap-backend","kind":"content","label":"How to transfer file from CAP backside","href":"/content/how-to-transfer-a-file-from-the-cap-backend","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:how-to-use-npm-modules-like-crypto-js-in-sapui5-using-ui5-tooling-modules","kind":"content","label":"How to Use NPM Modules Like crypto-js in SAPUI5 Using UI5 Tooling Modules","href":"/content/how-to-use-npm-modules-like-crypto-js-in-sapui5-using-ui5-tooling-modules","icon":"blog","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"content:how-to-use-reserved-words-as-property-names-in-your-odata-service","kind":"content","label":"How to use reserved words as property names in your OData service?","href":"/content/how-to-use-reserved-words-as-property-names-in-your-odata-service","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:how-to-use-sap-data-intelligence-with-sap-cloud-connector","kind":"content","label":"How to use SAP Data Intelligence with SAP Cloud Connector","href":"/content/how-to-use-sap-data-intelligence-with-sap-cloud-connector","icon":"blog","ecos":["btp","abap","cap"],"homeEcos":["btp","abap","cap"]},{"id":"content:how-we-could-potentially-have-nestjs-as-runtime-for-sap-cap","kind":"content","label":"How we could potentially have nestjs as runtime for SAP CAP","href":"/content/how-we-could-potentially-have-nestjs-as-runtime-for-sap-cap","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:html5-timeout-for-cap-destinations-in-mta-yaml","kind":"content","label":"HTML5.Timeout for CAP destinations in mta.yaml longer than default","href":"/content/html5-timeout-for-cap-destinations-in-mta-yaml","icon":"blog","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp","ui5"]},{"id":"content:hybrid-testing-using-postgresql-on-btp-hyperscaler-option","kind":"content","label":"Hybrid testing using PostgreSQL on SAP BTP, hyperscaler option","href":"/content/hybrid-testing-using-postgresql-on-btp-hyperscaler-option","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:identity-and-access-management-in-sap-navigating-sso-across-web-and-on-prem-land","kind":"content","label":"Identity and Access Management in SAP: Navigating SSO Across Web and On-Prem Landscapes","href":"/content/identity-and-access-management-in-sap-navigating-sso-across-web-and-on-prem-land","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:implementation-of-observability-using-opentelemetry-in-sap-btp","kind":"content","label":"Implementation of Observability using OpenTelemetry in SAP BTP","href":"/content/implementation-of-observability-using-opentelemetry-in-sap-btp","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:implementing-b2b-advisory-in-sap-integration-suite-for-custom-xml-edifact-scenar","kind":"content","label":"Implementing B2B Advisory in SAP Integration Suite for Custom XML EDIFACT Scenario Part - 3","href":"/content/implementing-b2b-advisory-in-sap-integration-suite-for-custom-xml-edifact-scenar","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:implementing-custom-audit-logging-in-cap-applications","kind":"content","label":"Implementing Custom Audit Logging in SAP CAP Applications","href":"/content/implementing-custom-audit-logging-in-cap-applications","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:implementing-dynamic-subaccount-based-routing-in-sap-cap","kind":"content","label":"Implementing Dynamic Subaccount-Based Routing in SAP CAP with SAP BTP Destinations","href":"/content/implementing-dynamic-subaccount-based-routing-in-sap-cap","icon":"blog","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp","ui5"]},{"id":"content:implementing-event-driven-architecture-in-cap-java-using-sap-event-mesh","kind":"content","label":"Implementing Event-Driven Architecture in CAP Java using SAP Event Mesh","href":"/content/implementing-event-driven-architecture-in-cap-java-using-sap-event-mesh","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:importing-an-external-data-model-using-cds-graphical-modeler-for-visual-studio-c","kind":"content","label":"Importing an external data model using CDS Graphical Modeler for Visual Studio Code","href":"/content/importing-an-external-data-model-using-cds-graphical-modeler-for-visual-studio-c","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:importing-external-edmx-files-using-the-cds-graphical-modeler","kind":"content","label":"Importing external edmx files to your CAP project using the CDS Graphical Modeler","href":"/content/importing-external-edmx-files-using-the-cds-graphical-modeler","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:importing-sap-cds-common-cds-using-the-cds-graphical-modeler","kind":"content","label":"Importing @sap/cds common.cds to your CAP project using the CDS Graphical Modeler","href":"/content/importing-sap-cds-common-cds-using-the-cds-graphical-modeler","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:improved-search-performance-in-sap-btp-core-sap-cloud-application-programming-mo","kind":"content","label":"Improved Search Performance in SAP BTP Core, SAP Cloud Application Programming Model, Node.js Runtime","href":"/content/improved-search-performance-in-sap-btp-core-sap-cloud-application-programming-mo","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:improving-exception-handling-using-generative-ai-in-sap-cloud-integration-sap-ci","kind":"content","label":"Improving Exception Handling using Generative AI in SAP Cloud Integration (SAP CI/CPI)","href":"/content/improving-exception-handling-using-generative-ai-in-sap-cloud-integration-sap-ci","icon":"blog","ecos":["btp","cap","ui5","abap"],"homeEcos":["btp","cap","ui5","abap"]},{"id":"content:information-map-introduction-series-graph-in-sap-integration-suite","kind":"content","label":"Information Map – Introduction Series: Graph in SAP Integration Suite","href":"/content/information-map-introduction-series-graph-in-sap-integration-suite","icon":"series","ecos":["btp","cap","abap"],"homeEcos":["btp","abap"]},{"id":"content:insights-of-cloud-sdk-cap-xsuaa-ssh-and-other-btp-topics-from-2021","kind":"content","label":"Insights of Cloud SDK, CAP, XSUAA, SSH and other BTP topics from 2021","href":"/content/insights-of-cloud-sdk-cap-xsuaa-ssh-and-other-btp-topics-from-2021","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:instance-sharing-sap-cloud-logging","kind":"content","label":"Instance Sharing - SAP Cloud Logging","href":"/content/instance-sharing-sap-cloud-logging","icon":"blog","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"content:integrate-cap-as-outbound-channel-for-sap-document-ai","kind":"content","label":"Integrate CAP application as outbound channel for SAP Document AI","href":"/content/integrate-cap-as-outbound-channel-for-sap-document-ai","icon":"blog","ecos":["btp","cap","ui5"],"homeEcos":["btp","cap","ui5"]},{"id":"content:integrate-document-information-extraction-into-ui5-application","kind":"content","label":"Integrate Document Information Extraction into UI5 application","href":"/content/integrate-document-information-extraction-into-ui5-application","icon":"blog","ecos":["btp","cap","ui5"],"homeEcos":["btp","cap","ui5"]},{"id":"content:integrate-sap-business-technology-platform-audit-logs-with-ibm-security-qradar","kind":"content","label":"Integrate SAP Business Technology Platform audit logs with IBM Security QRadar","href":"/content/integrate-sap-business-technology-platform-audit-logs-with-ibm-security-qradar","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:integrating-a-custom-ai-model-into-cap-using-ai-launchpad","kind":"content","label":"Integrating a Custom AI Model into SAP CAP Using AI Launchpad","href":"/content/integrating-a-custom-ai-model-into-cap-using-ai-launchpad","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:integrating-s4hana-invoicing-with-ksef-using-event-mesh-and-cap","kind":"content","label":"Integrating SAP S/4HANA Invoicing with KSeF Using SAP Event Mesh and CAP","href":"/content/integrating-s4hana-invoicing-with-ksef-using-event-mesh-and-cap","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:integrating-sap-cloud-identity-services-identity-authentication-ias-with-sap-aud","kind":"content","label":"Integrating SAP Cloud Identity Services (Identity Authentication - IAS) with SAP Audit Log Viewer","href":"/content/integrating-sap-cloud-identity-services-identity-authentication-ias-with-sap-aud","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:integrating-sap-cpi-with-microsoft-sharepoint-part-2-creating-an-api-to-upload-f","kind":"content","label":"Integrating SAP CPI with Microsoft SharePoint: Part 2- Creating an API to Upload Files to SharePoint","href":"/content/integrating-sap-cpi-with-microsoft-sharepoint-part-2-creating-an-api-to-upload-f","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:integrating-sap-document-information-extraction-with-cap","kind":"content","label":"Integrating SAP Document Information Extraction (Document AI) with SAP CAP – Step by Step","href":"/content/integrating-sap-document-information-extraction-with-cap","icon":"blog","ecos":["btp","cap","ui5"],"homeEcos":["btp","cap","ui5"]},{"id":"content:integrating-using-google-cloud-storage-adapter-gcp-authentication-adapter-config","kind":"content","label":"Integrating Using Google Cloud Storage Adapter (GCP Authentication & adapter config)","href":"/content/integrating-using-google-cloud-storage-adapter-gcp-authentication-adapter-config","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:integration-suite-automating-email-alerts-for-failed-interfaces-in-sap-cpi","kind":"content","label":"Integration Suite: Automating Email Alerts for Failed Interfaces in SAP CPI","href":"/content/integration-suite-automating-email-alerts-for-failed-interfaces-in-sap-cpi","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:integration-suite-building-an-mcp-server-for-a-sap-ci-monitoring-assistant","kind":"content","label":"Integration Suite: Building an MCP Server for a SAP CI Monitoring Assistant","href":"/content/integration-suite-building-an-mcp-server-for-a-sap-ci-monitoring-assistant","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:integration-suite-mcp-http-configuration","kind":"content","label":"Configure an MCP Server Created from an HTTP Endpoint","href":"/content/integration-suite-mcp-http-configuration","icon":"doc","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:integration-suite-mcp-server","kind":"content","label":"MCP Server — SAP Integration Suite","href":"/content/integration-suite-mcp-server","icon":"doc","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:integration-tests-in-a-cloud-foundry-java-app-using-cap","kind":"content","label":"Integration Tests in a Cloud Foundry Java App using SAP Cloud Application Programming Model","href":"/content/integration-tests-in-a-cloud-foundry-java-app-using-cap","icon":"blog","ecos":["cap","btp","digital-manufacturing"],"homeEcos":["cap","btp","digital-manufacturing"]},{"id":"content:intelligent-error-handling-in-sap-cpi-using-ai-adapter","kind":"content","label":"Intelligent Error Handling in SAP CPI Using AI Adapter","href":"/content/intelligent-error-handling-in-sap-cpi-using-ai-adapter","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:introducing-arc-1-a-secure-adt-mcp-server-for-enterprise-sap-development","kind":"content","label":"Introducing ARC-1: A Secure ADT MCP Server for Enterprise SAP Development","href":"/content/introducing-arc-1-a-secure-adt-mcp-server-for-enterprise-sap-development","icon":"blog","ecos":["abap","btp","cap","ui5"],"homeEcos":["abap","btp","cap","ui5"]},{"id":"content:introducing-eslint-plugin-better-cap-config","kind":"content","label":"Introducing eslint-plugin-better-cap-config an ESLint plugin to improve CAP configuration","href":"/content/introducing-eslint-plugin-better-cap-config","icon":"blog","ecos":["cap","ui5"],"homeEcos":["cap","ui5"]},{"id":"content:introducing-open-rfc-calling-sap-rfc-from-nodejs-without-the-sdk","kind":"content","label":"Introducing open-rfc: Calling SAP RFC from Node.js Without the SDK","href":"/content/introducing-open-rfc-calling-sap-rfc-from-nodejs-without-the-sdk","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:introducing-scim-api-for-sap-sales-service-cloud-v2-seamless-user-sync-between-s","kind":"content","label":"🚀 Introducing SCIM API for SAP Sales & Service Cloud v2: Seamless User Sync between Source & Target","href":"/content/introducing-scim-api-for-sap-sales-service-cloud-v2-seamless-user-sync-between-s","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:introducing-the-cloud-application-programming-model-cap","kind":"content","label":"Introducing the Cloud Application Programming Model (CAP)","href":"/content/introducing-the-cloud-application-programming-model-cap","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:introducing-the-mcp-server-for-cap","kind":"content","label":"Boost your CAP Development with AI: Introducing the MCP Server for CAP","href":"/content/introducing-the-mcp-server-for-cap","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:invoke-openapi-documented-apis-remotely-with-cap","kind":"content","label":"Invoke OpenAPI-documented APIs remotely with SAP Cloud Application Programming Model","href":"/content/invoke-openapi-documented-apis-remotely-with-cap","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:invoking-business-agent-foundation-agents-from-abap-a-step-by-step-guide","kind":"content","label":"Invoking Business Agent Foundation Agents from ABAP: A Step-by-Step Guide","href":"/content/invoking-business-agent-foundation-agents-from-abap-a-step-by-step-guide","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:ips-provisioning-to-abap-cloud-developer-trial","kind":"content","label":"IPS provisioning to ABAP Cloud Developer Trial","href":"/content/ips-provisioning-to-abap-cloud-developer-trial","icon":"blog","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:is-it-time-to-switch-to-odata-v4","kind":"content","label":"Is it time to switch to OData v4?","href":"/content/is-it-time-to-switch-to-odata-v4","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:iso-content-for-common-cap-types","kind":"content","label":"ISO content for common CAP types","href":"/content/iso-content-for-common-cap-types","icon":"blog","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"content:joule-for-developers-with-sap-btp-abap-environment-setup-guide","kind":"content","label":"Joule for Developers with SAP BTP ABAP Environment-Setup Guide","href":"/content/joule-for-developers-with-sap-btp-abap-environment-setup-guide","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:joule-studio-cap","kind":"content","label":"Joule Studioがリリースされたので早速CAPアプリを自然言語で操作するカスタムスキルを構築してみた","href":"/content/joule-studio-cap","icon":"blog","ecos":["btp","cap","ui5","abap"],"homeEcos":["btp","cap","abap","ui5"]},{"id":"content:keep-the-core-clean-with-rizing-cdsx","kind":"content","label":"Keep the Core Clean with Rizing CDSX","href":"/content/keep-the-core-clean-with-rizing-cdsx","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:kyma-evolution-transforming-kyma-into-a-tailor-made-saas-platform","kind":"content","label":"Kyma Evolution: Transforming SAP Kyma into a tailor-made SaaS Platform for sbs extensions","href":"/content/kyma-evolution-transforming-kyma-into-a-tailor-made-saas-platform","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:kyma-integration-with-sap-cloud-logging-part-1-introduction-and-shipping-logs","kind":"content","label":"Kyma Integration with SAP Cloud Logging. Part 1: Introduction and shipping Logs","href":"/content/kyma-integration-with-sap-cloud-logging-part-1-introduction-and-shipping-logs","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:kyma-integration-with-sap-cloud-logging-part-2-let-s-ship-some-traces","kind":"content","label":"Kyma Integration with SAP Cloud Logging. Part 2: Let's ship some traces","href":"/content/kyma-integration-with-sap-cloud-logging-part-2-let-s-ship-some-traces","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:leanix-adapter-for-sap-integration-suite","kind":"content","label":"LeanIX Adapter for SAP Integration Suite","href":"/content/leanix-adapter-for-sap-integration-suite","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:lessons-learned-fetching-learning-history-from-successfactors-lms-using-odata-ap","kind":"content","label":"Lessons Learned: Fetching Learning History from SuccessFactors LMS Using OData APIs","href":"/content/lessons-learned-fetching-learning-history-from-successfactors-lms-using-odata-ap","icon":"blog","ecos":["btp","digital-manufacturing","ui5"],"homeEcos":["btp","digital-manufacturing"]},{"id":"content:lets-deep-dive-into-capm-and-hana-cloud","kind":"content","label":"Lets Deep dive into CAPM and HANA Cloud --> HANACap","href":"/content/lets-deep-dive-into-capm-and-hana-cloud","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:major-updates-to-the-attachments-plugin","kind":"content","label":"Major updates to the Attachments plugin – multi-cloud support, malware scanning and more","href":"/content/major-updates-to-the-attachments-plugin","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:making-cap-development-easier-with-storyboard-in-bas","kind":"content","label":"Making CAP Application Development Easier and Faster with the Help of Storyboard in SAP Business Application Studio","href":"/content/making-cap-development-easier-with-storyboard-in-bas","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:making-the-case-for-enhanced-rest-adapter-in-sap-integration-suite","kind":"content","label":"Making the Case for Enhanced REST Adapter in SAP Integration Suite","href":"/content/making-the-case-for-enhanced-rest-adapter-in-sap-integration-suite","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:making-the-ias-based-pkce-flow-great-again-mobile-first","kind":"content","label":"Mobile First - Making the SAP IAS-based Proof Key for Code Exchange (PKCE) great again! 🎉","href":"/content/making-the-ias-based-pkce-flow-great-again-mobile-first","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:manage-dmq-messages-on-advanced-event-mesh-with-a-cap-application","kind":"content","label":"How to use a CAP application to manage DMQ messages on SAP Advanced Event Mesh","href":"/content/manage-dmq-messages-on-advanced-event-mesh-with-a-cap-application","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:managing-jms-queues-programmatically-with-the-new-sap-cloud-integration-jms-odat","kind":"content","label":"Managing JMS Queues Programmatically with the new SAP Cloud Integration JMS OData API","href":"/content/managing-jms-queues-programmatically-with-the-new-sap-cloud-integration-jms-odat","icon":"blog","ecos":["btp","digital-manufacturing","ui5"],"homeEcos":["btp","digital-manufacturing"]},{"id":"content:mastering-internal-actions-in-sap-rap-automatic-header-calculation-in-abap-cloud","kind":"content","label":"Mastering Internal Actions in SAP RAP: Automatic Header Calculation in ABAP Cloud","href":"/content/mastering-internal-actions-in-sap-rap-automatic-header-calculation-in-abap-cloud","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:mcp-server-for-sap-incentive-management","kind":"content","label":"MCP Server for SAP Incentive Management","href":"/content/mcp-server-for-sap-incentive-management","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:mcp-servers-are-the-new-z-tables","kind":"content","label":"MCP Servers are the New Z-Tables","href":"/content/mcp-servers-are-the-new-z-tables","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:mcp-servers-on-sap-integration-suite-build-your-first-mcp-server-from-an-api","kind":"content","label":"MCP Servers on SAP Integration Suite : Build Your First MCP Server from an API","href":"/content/mcp-servers-on-sap-integration-suite-build-your-first-mcp-server-from-an-api","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:media-handling-in-sap-capm-backend-and-frontend","kind":"content","label":"Media Handling in SAP CAPM – Backend and Frontend Implementation","href":"/content/media-handling-in-sap-capm-backend-and-frontend","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:merge-multiple-pdf-forms-into-a-single-document-for-download-or-printing","kind":"content","label":"Merge multiple PDF forms into a single document for download or printing.","href":"/content/merge-multiple-pdf-forms-into-a-single-document-for-download-or-printing","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:message-mapping-in-sap-integration-suite-custom-scripts-and-conditional-mapping","kind":"content","label":"Message Mapping in SAP Integration Suite - Custom Scripts and Conditional Mapping","href":"/content/message-mapping-in-sap-integration-suite-custom-scripts-and-conditional-mapping","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:messaging-system-for-odata-error-warning-and-information-messages","kind":"content","label":"Messaging System for Transferring Error, Warning, and Information Messages from OData V4 Services to HTTP Client Applications","href":"/content/messaging-system-for-odata-error-warning-and-information-messages","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:microsoft-graph-api-read-and-extract-attachments-of-outlook-email-from-cloud-int","kind":"content","label":"Microsoft GRAPH API - Read and extract attachments of Outlook email from Cloud Integration","href":"/content/microsoft-graph-api-read-and-extract-attachments-of-outlook-email-from-cloud-int","icon":"blog","ecos":["btp","digital-manufacturing","ui5"],"homeEcos":["btp","digital-manufacturing"]},{"id":"content:microsoft-sentinel-for-sap-goes-agentless","kind":"content","label":"Microsoft Sentinel for SAP goes agentless","href":"/content/microsoft-sentinel-for-sap-goes-agentless","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:migrate-your-code-with-ui5-linter-autofix-has-landed","kind":"content","label":"Migrate your code with UI5 linter – Autofix has landed","href":"/content/migrate-your-code-with-ui5-linter-autofix-has-landed","icon":"blog","ecos":["cap","ui5"],"homeEcos":["cap","ui5"]},{"id":"content:migrating-an-on-prem-xsa-cds3-solution-to-cds6-and-sqlite","kind":"content","label":"How I migrated my on-prem xsa cds3+hana solution to cds6+sqlite","href":"/content/migrating-an-on-prem-xsa-cds3-solution-to-cds6-and-sqlite","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:migrating-from-application-logging-service-to-cloud-logging","kind":"content","label":"Migrating from Application Logging Service to Cloud Logging","href":"/content/migrating-from-application-logging-service-to-cloud-logging","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:migrating-from-asanwee-to-asaaemee-from-sap-event-mesh-to-sap-advanced-event-mes","kind":"content","label":"Migrating from ASANWEE to ASAAEMEE: From SAP Event Mesh to SAP Advanced Event Mesh","href":"/content/migrating-from-asanwee-to-asaaemee-from-sap-event-mesh-to-sap-advanced-event-mes","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:migrating-your-cap-applications-from-web-ide-to-bas","kind":"content","label":"Migrating Your CAP Applications from SAP Web IDE to SAP Business Application Studio","href":"/content/migrating-your-cap-applications-from-web-ide-to-bas","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:migration-journey-from-mulesoft-to-sap-integration-suite-ci","kind":"content","label":"Migration Journey from MuleSoft to SAP Integration Suite (CI)","href":"/content/migration-journey-from-mulesoft-to-sap-integration-suite-ci","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:mj-live-an-ai-cognitive-pipeline-on-cap-hana-and-solace","kind":"content","label":"Michael Jackson: AI Cognitive Pipeline on SAP BTP, SAP CAP, ElevenLabs, Claude, HANA DB, Solace","href":"/content/mj-live-an-ai-cognitive-pipeline-on-cap-hana-and-solace","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:modernizing-rfc-bapi-based-integrations-for-a-clean-core-with-sap-integration-su","kind":"content","label":"Modernizing RFC/BAPI-based Integrations for a Clean Core with SAP Integration Suite","href":"/content/modernizing-rfc-bapi-based-integrations-for-a-clean-core-with-sap-integration-su","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:monitoring-cap-container-metrics-with-sap-cloud-logging-service","kind":"content","label":"SAP Cloud Logging Serviceでコンテナメトリクスを監視する","href":"/content/monitoring-cap-container-metrics-with-sap-cloud-logging-service","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:moving-from-hub-gateway-to-direct-s-4hana-odata-v4-a-customized-reusable-rap-pro","kind":"content","label":"Moving from Hub Gateway to Direct S/4HANA OData V4: A Customized Reusable RAP Processing Framework","href":"/content/moving-from-hub-gateway-to-direct-s-4hana-odata-v4-a-customized-reusable-rap-pro","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:multi-modal-rag-proof-of-concept-facilitating-tech-support","kind":"content","label":"Multi-modal RAG Proof of Concept: facilitating tech support","href":"/content/multi-modal-rag-proof-of-concept-facilitating-tech-support","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:multi-origin-service-testing-and-troubleshooting-in-sap-gateway","kind":"content","label":"Multi-Origin Service Testing and Troubleshooting in SAP Gateway","href":"/content/multi-origin-service-testing-and-troubleshooting-in-sap-gateway","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:multitenant-application-using-cap-java-sdk-and-mtx-sidecar","kind":"content","label":"Multitenant application using Cloud Application Programming Model (CAP)","href":"/content/multitenant-application-using-cap-java-sdk-and-mtx-sidecar","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:multitenant-business-applications-with-cap-hands-on-video-tutorials","kind":"content","label":"Multitenant Business Applications with CAP | Hands-on Video Tutorials","href":"/content/multitenant-business-applications-with-cap-hands-on-video-tutorials","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:multitenant-mta-providing-a-cloud-portal-with-fiori-apps-to-subscribers","kind":"content","label":"Multitenant MTA: providing a Cloud Portal Service with FIORI apps to subscriber accounts","href":"/content/multitenant-mta-providing-a-cloud-portal-with-fiori-apps-to-subscribers","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:multitenant-saas-applications-on-btp-using-cap-kyma-runtime","kind":"content","label":"Multitenant SaaS applications on SAP BTP using CAP? SAP BTP, Kyma Runtime!","href":"/content/multitenant-saas-applications-on-btp-using-cap-kyma-runtime","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:multitenant-saas-on-btp-using-cap-the-reloaded-version","kind":"content","label":"Multitenant SaaS applications on SAP BTP using CAP - The Reloaded Version!","href":"/content/multitenant-saas-on-btp-using-cap-the-reloaded-version","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:multitenant-saas-on-btp-using-cap-tried-and-true-advanced","kind":"content","label":"Multitenant SaaS apps on SAP BTP using CAP? Tried-and-True! – The Advanced Version","href":"/content/multitenant-saas-on-btp-using-cap-tried-and-true-advanced","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:multitenant-saas-on-btp-using-cap-tried-and-true-basic","kind":"content","label":"Multitenant SaaS apps on SAP BTP using CAP? Tried-and-True! – The Basic Version","href":"/content/multitenant-saas-on-btp-using-cap-tried-and-true-basic","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:multitenant-saas-on-btp-using-cap-tried-and-true-expert-features","kind":"content","label":"Multitenant SaaS apps on SAP BTP using CAP? Tried-and-True! – The Expert Features","href":"/content/multitenant-saas-on-btp-using-cap-tried-and-true-expert-features","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:multitenant-saas-on-btp-using-cap-tried-and-true-overview","kind":"content","label":"Multitenant SaaS applications on SAP BTP using CAP? Tried-and-True!","href":"/content/multitenant-saas-on-btp-using-cap-tried-and-true-overview","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:my-cap-projects-toolbox","kind":"content","label":"My CAP Projects Toolbox","href":"/content/my-cap-projects-toolbox","icon":"blog","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:named-user-attribution-across-btp-subaccounts-a-two-hop-ias-token-exchange-for-c","kind":"content","label":"Named-User Attribution Across BTP Subaccounts: A Two-Hop IAS Token Exchange for Cloud Integration","href":"/content/named-user-attribution-across-btp-subaccounts-a-two-hop-ias-token-exchange-for-c","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:natural-language-queries-for-sap-cap-via-mcp","kind":"content","label":"Natural Language Queries for SAP CAP via MCP: The LLM Translates, CDS Executes","href":"/content/natural-language-queries-for-sap-cap-via-mcp","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:new-and-improved-change-tracking-plugin","kind":"content","label":"New and improved: Change Tracking plugin","href":"/content/new-and-improved-change-tracking-plugin","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:new-ci-pipeline-restart-extension-features-supporting-new-pipeline-package-and-i","kind":"content","label":"New CI Pipeline Restart Extension features: supporting new Pipeline package and improved Restart Job","href":"/content/new-ci-pipeline-restart-extension-features-supporting-new-pipeline-package-and-i","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:new-pipeline-concept-features-integrated-runtimes-and-supporting-landscape-stage","kind":"content","label":"New Pipeline Concept features: integrated runtimes and supporting landscape stages","href":"/content/new-pipeline-concept-features-integrated-runtimes-and-supporting-landscape-stage","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:new-pipeline-for-cloud-integration-features-with-version-1-0-11","kind":"content","label":"New Pipeline for Cloud Integration features with version 1.0.11","href":"/content/new-pipeline-for-cloud-integration-features-with-version-1-0-11","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:new-pod-2-0-framework-the-new-generation-of-sap-digital-manufacturing-worker-uis","kind":"content","label":"New POD 2.0 Framework: The New Generation of SAP Digital Manufacturing Worker UIs","href":"/content/new-pod-2-0-framework-the-new-generation-of-sap-digital-manufacturing-worker-uis","icon":"blog","ecos":["digital-manufacturing"],"homeEcos":["digital-manufacturing"],"homeEco":"digital-manufacturing"},{"id":"content:new-sap-cloud-application-programming-model-sample-for-many-to-many-relationship","kind":"content","label":"New SAP Cloud Application Programming Model Sample for Many-to-Many Relationships and Fiori Annotations","href":"/content/new-sap-cloud-application-programming-model-sample-for-many-to-many-relationship","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:new-tutorial-for-ui5-middleware-fe-mockserver","kind":"content","label":"New tutorial for UI5 Middleware FE Mockserver","href":"/content/new-tutorial-for-ui5-middleware-fe-mockserver","icon":"blog","ecos":["cap","btp","digital-manufacturing","abap","ui5"],"homeEcos":["cap","btp","digital-manufacturing","abap","ui5"]},{"id":"content:nice-patch-sap-revisiting-your-sap-btp-security-measures-after-ai-core-vulnerabi","kind":"content","label":"Nice patch SAP! Revisiting your SAP BTP security measures after AI Core vulnerability fix","href":"/content/nice-patch-sap-revisiting-your-sap-btp-security-measures-after-ai-core-vulnerabi","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:no-code-mcp-servers-with-sap-integration-suite-from-rest-api-to-ai-agent","kind":"content","label":"No-Code MCP Servers with SAP Integration Suite: From REST API to AI Agent","href":"/content/no-code-mcp-servers-with-sap-integration-suite-from-rest-api-to-ai-agent","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:object-release-state-in-cloudification-repository-viewer-for-clean-core-extensib","kind":"content","label":"Object Release State in Cloudification Repository Viewer for Clean Core Extensibility","href":"/content/object-release-state-in-cloudification-repository-viewer-for-clean-core-extensib","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:odata-batch-deleting-records-across-multiple-tables-in-single-transaction","kind":"content","label":"OData $batch Deleting Records Across Multiple Tables in Single Transaction","href":"/content/odata-batch-deleting-records-across-multiple-tables-in-single-transaction","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:odata-deep-insert-implementation-and-real-life-examples","kind":"content","label":"OData Deep Insert: Implementation and Real-Life Examples","href":"/content/odata-deep-insert-implementation-and-real-life-examples","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:on-the-fly-excel-download-in-a-rap-fiori-app-no-database-table-no-persistence-pu","kind":"content","label":"On‑the‑Fly Excel Download in a RAP Fiori App — No Database Table, No Persistence, Pure CDS + ABAP","href":"/content/on-the-fly-excel-download-in-a-rap-fiori-app-no-database-table-no-persistence-pu","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:open-source-ui5-form-validator","kind":"content","label":"Open Source UI5 Form Validator","href":"/content/open-source-ui5-form-validator","icon":"blog","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:open-sourcing-cap-how-to-learn-more-or-get-involved","kind":"content","label":"Open Sourcing CAP – how to learn more or get involved","href":"/content/open-sourcing-cap-how-to-learn-more-or-get-involved","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:openapis-in-the-sap-ecosystem","kind":"content","label":"OpenAPIs in the SAP ecosystem","href":"/content/openapis-in-the-sap-ecosystem","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:optimize-your-mta-build-with-several-ui-apps","kind":"content","label":"SAP CAP - Optimize your build MTA projects with several ui apps","href":"/content/optimize-your-mta-build-with-several-ui-apps","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:optimized-idoc-routing-in-sap-ci-with-value-mapping-and-groovy-based-receiver-de","kind":"content","label":"Optimized IDoc Routing in SAP CI with Value Mapping and Groovy-Based Receiver Determination","href":"/content/optimized-idoc-routing-in-sap-ci-with-value-mapping-and-groovy-based-receiver-de","icon":"blog","ecos":["btp","digital-manufacturing","ui5"],"homeEcos":["btp","digital-manufacturing"]},{"id":"content:out-of-the-box-document-grounding-in-sap-ai-core-rag-with-sap-help-portal","kind":"content","label":"Out-of-the-Box Document Grounding in SAP AI Core: RAG with SAP Help Portal","href":"/content/out-of-the-box-document-grounding-in-sap-ai-core-rag-with-sap-help-portal","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:outbound-integration-from-sap-btp-abap-to-sap-s-4hana-cloud-via-service-consumpt","kind":"content","label":"Outbound Integration from SAP BTP, ABAP to SAP S/4HANA Cloud via Service Consumption Model","href":"/content/outbound-integration-from-sap-btp-abap-to-sap-s-4hana-cloud-via-service-consumpt","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:parallel-data-filtering-and-dropbox-integration-using-sap-cloud-integration","kind":"content","label":"Parallel Data Filtering and Dropbox Integration Using SAP Cloud Integration","href":"/content/parallel-data-filtering-and-dropbox-integration-using-sap-cloud-integration","icon":"blog","ecos":["btp","digital-manufacturing","ui5","cap","abap"],"homeEcos":["btp","digital-manufacturing","cap","abap"]},{"id":"content:part-1-enrich-cap-based-services-with-behaviors-using-annotations","kind":"content","label":"[Part - 1] Enrich CAP based Services with Behaviors using Annotations","href":"/content/part-1-enrich-cap-based-services-with-behaviors-using-annotations","icon":"blog","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"content:part-1-how-to-create-a-capm-project-in-bas","kind":"content","label":"Part 1: How to create CAPM project in BAS","href":"/content/part-1-how-to-create-a-capm-project-in-bas","icon":"blog","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"content:part-2-empowering-sap-btp-cap-services-through-open-api-spec-and-annotations-for","kind":"content","label":"Part 2 – Empowering SAP BTP CAP Services through Open API Spec and Annotations for Effective Communication, Collaboration and Governance","href":"/content/part-2-empowering-sap-btp-cap-services-through-open-api-spec-and-annotations-for","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:part-2-enrich-cap-based-services-with-behaviors-using-annotations","kind":"content","label":"[Part – 2] Enrich CAP based Services with Behaviors using Annotations","href":"/content/part-2-enrich-cap-based-services-with-behaviors-using-annotations","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:part-3-empowering-sap-btp-cap-services-through-open-api-spec-and-annotations-for","kind":"content","label":"Part 3 – Empowering SAP BTP CAP Services through Open API Spec and Annotations for Effective Communication, Collaboration and Governance","href":"/content/part-3-empowering-sap-btp-cap-services-through-open-api-spec-and-annotations-for","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:pattern-function-for-rfc","kind":"content","label":"Pattern Function for RFC","href":"/content/pattern-function-for-rfc","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:patterns-for-using-llms-in-abap-development","kind":"content","label":"Patterns for using LLMs in ABAP development","href":"/content/patterns-for-using-llms-in-abap-development","icon":"doc","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"content:perform-sap-principal-propagation-with-microsoft-entra-id-for-sap-successfactors","kind":"content","label":"Perform SAP Principal Propagation with Microsoft Entra ID for SAP SuccessFactors!","href":"/content/perform-sap-principal-propagation-with-microsoft-entra-id-for-sap-successfactors","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:performance-boost-and-caching-strategy-with-cds-caching","kind":"content","label":"Performance Boost and Caching Strategy for Faster Data Access using \"cds-caching\" in SAP CAP","href":"/content/performance-boost-and-caching-strategy-with-cds-caching","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:performance-trace-node-js-app-on-btp-with-dynatrace","kind":"content","label":"Performance Trace Node.js App on BTP with Dynatrace","href":"/content/performance-trace-node-js-app-on-btp-with-dynatrace","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:postgresql-persistence-adapter-for-cap-nodejs","kind":"content","label":"PostgreSQL persistence adapter for CAP (Node.js)","href":"/content/postgresql-persistence-adapter-for-cap-nodejs","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:predictive-asset-insights-embedded-live-analytics-using-cap-and-sac","kind":"content","label":"Predictive Asset Insights embedded Live analytics using CAP and SAC","href":"/content/predictive-asset-insights-embedded-live-analytics-using-cap-and-sac","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:presenting-sap-cap-sdm-plugin","kind":"content","label":"Presenting sap-cap-sdm-plugin: Effortless Integration Between CAP (Node.js) and DMS","href":"/content/presenting-sap-cap-sdm-plugin","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:principal-propagation-from-btp-web-app-to-s-4hana-via-sap-integration-suite","kind":"content","label":"Principal Propagation from BTP Web App to S/4HANA via SAP Integration Suite","href":"/content/principal-propagation-from-btp-web-app-to-s-4hana-via-sap-integration-suite","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:principal-propagation-in-sbpa-actions-with-a-cap-nodejs-service","kind":"content","label":"SAP Build Process Automation – Use Principal Propagation in Actions sample: CAP Node.js Service","href":"/content/principal-propagation-in-sbpa-actions-with-a-cap-nodejs-service","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:print-preview-from-rap-action-with-v4-odata-and-multiple-selection","kind":"content","label":"Print Preview from RAP Action with v4 OData and Multiple Selection","href":"/content/print-preview-from-rap-action-with-v4-odata-and-multiple-selection","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:process-integration-pipeline-extension-restart-via-data-store","kind":"content","label":"Process Integration Pipeline Extension - Restart via Data Store","href":"/content/process-integration-pipeline-extension-restart-via-data-store","icon":"blog","ecos":["btp","digital-manufacturing","ui5"],"homeEcos":["btp","digital-manufacturing"]},{"id":"content:product-updates-for-sap-build-code-june-2025-edition","kind":"content","label":"Product Updates for SAP Build Code – June 2025 Edition","href":"/content/product-updates-for-sap-build-code-june-2025-edition","icon":"blog","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"content:prompt-driven-development-building-full-stack-cap-apps-from-user-stories","kind":"content","label":"Prompt-Driven Development: Building Full-Stack SAP CAP Apps from User Stories","href":"/content/prompt-driven-development-building-full-stack-cap-apps-from-user-stories","icon":"blog","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"content:publish-events-from-cap-nodejs-to-integration-suite-event-mesh","kind":"content","label":"Publish events from CAP Node.js applications to Event Mesh of Integration Suite","href":"/content/publish-events-from-cap-nodejs-to-integration-suite-event-mesh","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:qualtrics-integration-with-domain-based-authorization-in-a-cap-project","kind":"content","label":"Qualtrics integration with domain based authorization in CAP project on HANA cloud","href":"/content/qualtrics-integration-with-domain-based-authorization-in-a-cap-project","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:quickly-deploy-a-sample-cap-application-to-btp","kind":"content","label":"Quickly Deploy a Sample CAP Application to BTP","href":"/content/quickly-deploy-a-sample-cap-application-to-btp","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:rag-with-hana-cloud-vector-engine-genai-hub-and-cap","kind":"content","label":"RAG with SAP HANA Cloud Vector Engine, GenAI Hub & CAP","href":"/content/rag-with-hana-cloud-vector-engine-genai-hub-and-cap","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:random-collection-of-useful-code-fragments-for-cap-fiori-elements-and-sapui5","kind":"content","label":"Random collection of useful code fragments for CAP Fiori Elements and SAPUI5","href":"/content/random-collection-of-useful-code-fragments-for-cap-fiori-elements-and-sapui5","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:random-numbers-and-probability-distributions-in-the-abap-environments-for-2508","kind":"content","label":"Random Numbers and Probability Distributions in the ABAP Environments for 2508","href":"/content/random-numbers-and-probability-distributions-in-the-abap-environments-for-2508","icon":"blog","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:rap-feature-control-part-2","kind":"content","label":"RAP - Feature Control (Part 2)","href":"/content/rap-feature-control-part-2","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:rap-native-file-upload","kind":"content","label":"RAP - Native File Upload","href":"/content/rap-native-file-upload","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:rap-navigation-app-to-app","kind":"content","label":"RAP - Navigation (App to App)","href":"/content/rap-navigation-app-to-app","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:rap-singleton-pattern","kind":"content","label":"RAP - Singleton Pattern","href":"/content/rap-singleton-pattern","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:reading-between-the-lines-under-documented-fiori-elements-capabilities-in-sapui5","kind":"content","label":"Reading Between the Lines: Under-Documented Fiori Elements Capabilities in SAPUI5 1.149","href":"/content/reading-between-the-lines-under-documented-fiori-elements-capabilities-in-sapui5","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:real-time-architecture-in-cap-async-jobs-and-websockets","kind":"content","label":"Real-Time Architecture in SAP CAP: Mastering Asynchronous Jobs, Gateways with WebSockets","href":"/content/real-time-architecture-in-cap-async-jobs-and-websockets","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:receive-events-from-event-mesh-of-integration-suite-to-cap-node-js-applications","kind":"content","label":"Receive Events from Event Mesh of Integration Suite to CAP Node.js Applications","href":"/content/receive-events-from-event-mesh-of-integration-suite-to-cap-node-js-applications","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:receive-notifications-from-amazon-sns-in-a-cap-s4hana-extension","kind":"content","label":"Receive Notifications from Amazon Simple Notification Service for SAP S/4HANA BTP Extension App","href":"/content/receive-notifications-from-amazon-sns-in-a-cap-s4hana-extension","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:recommendations-for-customers-on-using-the-direct-push-based-integration","kind":"content","label":"Recommendations for Customers on using the Direct Push-Based Integration","href":"/content/recommendations-for-customers-on-using-the-direct-push-based-integration","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:recommendations-for-wrapper-interface-design","kind":"content","label":"Recommendations for Wrapper Interface Design","href":"/content/recommendations-for-wrapper-interface-design","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:remote-debugging-of-a-capm-nodejs-app","kind":"content","label":"Remote Debugging of SAP CAPM App - Nodejs","href":"/content/remote-debugging-of-a-capm-nodejs-app","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:resend-http-messages-with-configured-pause-and-fixed-max-iteration-followed-by-e","kind":"content","label":"Resend HTTP messages with configured pause and fixed max iteration followed by error handling","href":"/content/resend-http-messages-with-configured-pause-and-fixed-max-iteration-followed-by-e","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:resolving-date-serialization-issues-with-an-external-odata-v2-service","kind":"content","label":"Resolving date serialization issues when using an external OData v2 service with CAP","href":"/content/resolving-date-serialization-issues-with-an-external-odata-v2-service","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:restrict-crud-operations-in-capm-with-capabilities-and-readonly","kind":"content","label":"How to Restrict CRUD Operations in SAP CAPM Using @Capabilities, @readonly and Test APIs with .http","href":"/content/restrict-crud-operations-in-capm-with-capabilities-and-readonly","icon":"blog","ecos":["cap","btp","abap","digital-manufacturing"],"homeEcos":["cap","btp","abap","digital-manufacturing"]},{"id":"content:reusable-components-for-cap-with-cds-plugin","kind":"content","label":"Reusable components for CAP with cds-plugin","href":"/content/reusable-components-for-cap-with-cds-plugin","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:rfc-bapis-meet-ai-agents-why-sap-integration-suite-mcp-server-matters","kind":"content","label":"RFC/BAPIs Meet AI Agents: Why SAP Integration Suite MCP Server Matters","href":"/content/rfc-bapis-meet-ai-agents-why-sap-integration-suite-mcp-server-matters","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:run-and-deploy-cap-java-with-postgresql-on-cloud-foundry-2023","kind":"content","label":"Run and Deploy SAP CAP (Java) with PostgreSQL on SAP BTP Cloud Foundry","href":"/content/run-and-deploy-cap-java-with-postgresql-on-cloud-foundry-2023","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:run-and-deploy-cap-java-with-postgresql-using-cap-js-postgres","kind":"content","label":"Run and Deploy SAP CAP (Java) with PostgreSQL using Official Database Adapter @cap-js/postgres","href":"/content/run-and-deploy-cap-java-with-postgresql-using-cap-js-postgres","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:run-and-deploy-cap-nodejs-or-java-with-postgresql-on-cloud-foundry","kind":"content","label":"Run and Deploy SAP CAP (Node.js or Java) with PostgreSQL on SAP BTP Cloud Foundry","href":"/content/run-and-deploy-cap-nodejs-or-java-with-postgresql-on-cloud-foundry","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:run-and-deploy-cap-with-postgresql-on-cloud-foundry","kind":"content","label":"Run and Deploy CAP with PostgreSQL on SAP BTP Cloud Foundry (Node.js)","href":"/content/run-and-deploy-cap-with-postgresql-on-cloud-foundry","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:running-ai-agents-against-sap-ecc-6-0-lessons-from-building-an-in-system-mcp-ser","kind":"content","label":"Running AI agents against SAP ECC 6.0: lessons from building an in-system MCP server","href":"/content/running-ai-agents-against-sap-ecc-6-0-lessons-from-building-an-in-system-mcp-ser","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:running-cap-node-applications-in-bas-run-configurations","kind":"content","label":"Running CAP Node Applications in SAP Business Application Studio","href":"/content/running-cap-node-applications-in-bas-run-configurations","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:s-4hana-abap","kind":"content","label":"S/4HANA公有云版的内部ABAP拓展","href":"/content/s-4hana-abap","icon":"blog","ecos":["abap","cap","btp","ui5"],"homeEcos":["abap","cap","btp","ui5"]},{"id":"content:s-4hana-observability-streaming-sap-cloud-alm-logserv-telemetry-to-bigquery-vert","kind":"content","label":"S/4HANA Observability: Streaming SAP Cloud ALM & LogServ Telemetry to BigQuery & Vertex AI","href":"/content/s-4hana-observability-streaming-sap-cloud-alm-logserv-telemetry-to-bigquery-vert","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:saas-self-onboarding-and-one-domain-in-kyma-using-cap","kind":"content","label":"SaaS Self-Onboarding and One-Domain Concept in SAP BTP, Kyma Runtime using CAP","href":"/content/saas-self-onboarding-and-one-domain-in-kyma-using-cap","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:sap-advanced-event-mesh-manage-advance-event-mesh-with-api-s","kind":"content","label":"SAP Advanced Event Mesh – Manage Advance Event Mesh with API’s","href":"/content/sap-advanced-event-mesh-manage-advance-event-mesh-with-api-s","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:sap-agentic-ai-in-practice-building-the-sap-exception-log-triage-agent-part-3-of","kind":"content","label":"SAP Agentic AI in Practice: Building the SAP Exception Log Triage Agent (Part 3 of 6)","href":"/content/sap-agentic-ai-in-practice-building-the-sap-exception-log-triage-agent-part-3-of","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:sap-ai-core-agent-part-8-cloudfoundry","kind":"content","label":"🚀 秒速で学ぶ SAP AI Core Agent 開発 🚀 - Part 8 CloudFoundry にデプロイ","href":"/content/sap-ai-core-agent-part-8-cloudfoundry","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap"]},{"id":"content:sap-ai-services-dox-gen-ai-with-sap-cap-plugin-part-3","kind":"content","label":"SAP AI Services - DOX - Gen AI with SAP CAP Plugin - Part 3","href":"/content/sap-ai-services-dox-gen-ai-with-sap-cap-plugin-part-3","icon":"blog","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp","ui5"]},{"id":"content:sap-api-management-for-beginners-part-1-what-is-apim-a-complete-features-tour","kind":"content","label":"SAP API Management for Beginners – Part 1: What Is APIM & A Complete Features Tour","href":"/content/sap-api-management-for-beginners-part-1-what-is-apim-a-complete-features-tour","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:sap-api-management-for-beginners-part-4-oauth-2-0-kvm-traffic-policies-threat-pr","kind":"content","label":"SAP API Management for Beginners – Part 4: OAuth 2.0, KVM, Traffic Policies, Threat Protection&CORS","href":"/content/sap-api-management-for-beginners-part-4-oauth-2-0-kvm-traffic-policies-threat-pr","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:sap-api-management-sap-cloud-logging","kind":"content","label":"SAP API ManagementのアクセスログをSAP Cloud Loggingで可視化する方法","href":"/content/sap-api-management-sap-cloud-logging","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:sap-btp-account-architecture-best-practices-a-practitioner-s-field-guide","kind":"content","label":"SAP BTP Account Architecture Best Practices: A Practitioner's Field Guide","href":"/content/sap-btp-account-architecture-best-practices-a-practitioner-s-field-guide","icon":"blog","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"content:sap-btp-audit-log-access-just-got-easier-here-s-what-s-new","kind":"content","label":"SAP BTP Audit Log Access Just Got Easier - Here’s What’s New","href":"/content/sap-btp-audit-log-access-just-got-easier-here-s-what-s-new","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:sap-btp-audit-log-enable-and-retrieve-logs","kind":"content","label":"SAP BTP Audit log Enable and retrieve logs","href":"/content/sap-btp-audit-log-enable-and-retrieve-logs","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:sap-btp-ci-building-open-source-custom-adapter-eventsmartkafka-from-zero-with-sa","kind":"content","label":"SAP BTP - CI - Building Open-Source Custom Adapter EventSmartKafka from Zero with SAP ADK - Part II","href":"/content/sap-btp-ci-building-open-source-custom-adapter-eventsmartkafka-from-zero-with-sa","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:sap-btp-ci-eventsmartkafka-custom-kafka-adapter-from-esa-v1-1-0-validated-runtim","kind":"content","label":"SAP BTP - CI - EventSmartKafka - Custom Kafka Adapter From .ESA v1.1.0 - Validated Runtime - Part IV","href":"/content/sap-btp-ci-eventsmartkafka-custom-kafka-adapter-from-esa-v1-1-0-validated-runtim","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:sap-btp-ci-eventsmartkafka-custom-kafka-adapter-part-v-final","kind":"content","label":"SAP BTP - CI - EventSmartKafka - Custom Kafka Adapter - Part V FINAL","href":"/content/sap-btp-ci-eventsmartkafka-custom-kafka-adapter-part-v-final","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:sap-btp-ci-how-i-built-an-open-source-enterprise-custom-kafka-adapter-from-scrat","kind":"content","label":"SAP BTP - CI - How I Built an Open-Source Enterprise Custom Kafka Adapter from Scratch - Part I","href":"/content/sap-btp-ci-how-i-built-an-open-source-enterprise-custom-kafka-adapter-from-scrat","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:sap-btp-ci-immutable-event-routing-per-domain-with-metadata-driven-consumer-orch","kind":"content","label":"SAP BTP - CI - Immutable Event Routing per Domain with Metadata-Driven Consumer Orchestration","href":"/content/sap-btp-ci-immutable-event-routing-per-domain-with-metadata-driven-consumer-orch","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:sap-btp-cloud-foundry-job-scheduling-for-cap-based-project","kind":"content","label":"SAP BTP Cloud foundry Job Scheduling for CAP based project","href":"/content/sap-btp-cloud-foundry-job-scheduling-for-cap-based-project","icon":"blog","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:sap-btp-destinations-in-a-nutshell-part-1-motivation-noauthentication-destinatio","kind":"content","label":"SAP BTP Destinations in a Nutshell Part 1 - Motivation & NoAuthentication Destinations","href":"/content/sap-btp-destinations-in-a-nutshell-part-1-motivation-noauthentication-destinatio","icon":"blog","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp","ui5"]},{"id":"content:sap-btp-kyma-service-mesh","kind":"content","label":"SAP BTP - KYMA - SERVICE MESH","href":"/content/sap-btp-kyma-service-mesh","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:sap-btp-platform-technical-user-for-ctms-integration","kind":"content","label":"SAP BTP Platform Technical User for CTMS Integration","href":"/content/sap-btp-platform-technical-user-for-ctms-integration","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:sap-btp-sdk-for-ios-and-cap-with-odata-v4-support","kind":"content","label":"SAP BTP SDK for iOS & CAP with OData V4 support","href":"/content/sap-btp-sdk-for-ios-and-cap-with-odata-v4-support","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:sap-build-process-automation","kind":"content","label":"SAP Build Process Automationで「グループ宛て承認ワークフロー」を構築する","href":"/content/sap-build-process-automation","icon":"blog","ecos":["btp","ui5","cap"],"homeEcos":["btp","ui5","cap"]},{"id":"content:sap-business-technology-platform-authorization-and-trust-management-service","kind":"content","label":"SAP Business Technology Platform: Authorization and Trust Management Service","href":"/content/sap-business-technology-platform-authorization-and-trust-management-service","icon":"blog","ecos":["cap","btp","abap","ui5","digital-manufacturing"],"homeEcos":["cap","btp","abap","ui5","digital-manufacturing"]},{"id":"content:sap-cap-adapter-to-expose-odata-as-custom-rest-service","kind":"content","label":"SAP CAP Adapter to expose OData as custom REST Service","href":"/content/sap-cap-adapter-to-expose-odata-as-custom-rest-service","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:sap-cap-best-vscode-extensions-for-typescript-development","kind":"content","label":"SAP CAP: Best VSCode extensions for TypeScript development (UI5 & NodeJS)","href":"/content/sap-cap-best-vscode-extensions-for-typescript-development","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:sap-cap-cloud-application-programming","kind":"content","label":"SAP CAP(Cloud Application Programming)开发框架概述","href":"/content/sap-cap-cloud-application-programming","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:sap-cap-consume-sap-api-hub-sandbox-data-as-an-external-service-part-1","kind":"content","label":"SAP CAP: Consume SAP API Hub Sandbox Data as an external service Part- 1","href":"/content/sap-cap-consume-sap-api-hub-sandbox-data-as-an-external-service-part-1","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:sap-cap-controller-service-repository-architecture","kind":"content","label":"SAP CAP: Controller - Service - Repository architecture","href":"/content/sap-cap-controller-service-repository-architecture","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:sap-cap-function-and-action-with-unstructured-dynamic-type-input-output","kind":"content","label":"SAP CAP function and action with Unstructured/Dynamic Type Input/Output","href":"/content/sap-cap-function-and-action-with-unstructured-dynamic-type-input-output","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:sap-cap-jwt-token-flow-in-code","kind":"content","label":"SAP CAP JWT Token Flow in code","href":"/content/sap-cap-jwt-token-flow-in-code","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:sap-cap-lessons-learned-quick-deployment-with-manifest-and-cf-push","kind":"content","label":"SAP CAP Lessons Learned: Quick deployment with manifest and cf push","href":"/content/sap-cap-lessons-learned-quick-deployment-with-manifest-and-cf-push","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:sap-cap-on-hana-xsa-scaling-industrial-data-applications","kind":"content","label":"SAP CAP on HANA XSA: Scaling Industrial Data Applications Beyond the Cloud","href":"/content/sap-cap-on-hana-xsa-scaling-industrial-data-applications","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:sap-cap-recent-enhancements-the-hana-dev-should-know-about","kind":"content","label":"SAP CAP Recent Enhancements the HANA Dev Should Know About","href":"/content/sap-cap-recent-enhancements-the-hana-dev-should-know-about","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:sap-cap-remote-services-and-sap-fiori-elements","kind":"content","label":"SAP CAP Remote Services & SAP Fiori Elements","href":"/content/sap-cap-remote-services-and-sap-fiori-elements","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:sap-cap-with-prostgres-serice-in-btp","kind":"content","label":"SAP CAP With Prostgres Serice in BTP","href":"/content/sap-cap-with-prostgres-serice-in-btp","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:sap-capv7-node-js-highlights-and-experiences","kind":"content","label":"SAP CAPv7 - Node.js Highlights and Experiences","href":"/content/sap-capv7-node-js-highlights-and-experiences","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5"]},{"id":"content:sap-ci-to-abap-integration-seamless-xml-to-internal-table-mapping","kind":"content","label":"SAP CI to ABAP Integration: Seamless XML to Internal Table Mapping","href":"/content/sap-ci-to-abap-integration-seamless-xml-to-internal-table-mapping","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:sap-cloud-application-programming-model-cap-part-1","kind":"content","label":"SAP Cloud Application Programming Model（CAP）：概要およびデモ - Part 1","href":"/content/sap-cloud-application-programming-model-cap-part-1","icon":"blog","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"content:sap-cloud-application-programming-model-cap-part-2","kind":"content","label":"SAP Cloud Application Programming Model（CAP）：カスタムロジックの実装 – Part 2","href":"/content/sap-cloud-application-programming-model-cap-part-2","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:sap-cloud-application-programming-model-start-here","kind":"content","label":"SAP Cloud Application Programming Model (CAP) - start here","href":"/content/sap-cloud-application-programming-model-start-here","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5"]},{"id":"content:sap-cloud-integration-ci-cpi-reusable-script-collection-pattern-for-sensitive-da","kind":"content","label":"SAP Cloud Integration (CI/CPI) - Reusable Script Collection Pattern for Sensitive Data Masking","href":"/content/sap-cloud-integration-ci-cpi-reusable-script-collection-pattern-for-sensitive-da","icon":"blog","ecos":["cap","abap","btp","digital-manufacturing","ui5"],"homeEcos":["cap","abap","btp","digital-manufacturing"]},{"id":"content:sap-cloud-integration","kind":"content","label":"SAP集成套件中的Cloud Integration云集成功能概况介绍","href":"/content/sap-cloud-integration","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:sap-cloud-platform-backend-service-tutorial-11-cds-magic-key-generation","kind":"content","label":"SAP Cloud Platform Backend service: Tutorial [11]: CDS : magic: key: generation","href":"/content/sap-cloud-platform-backend-service-tutorial-11-cds-magic-key-generation","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:sap-cloud-platform-backend-service-tutorial-12-cds-local-build","kind":"content","label":"SAP Cloud Platform Backend service: Tutorial [12]: CDS : local: build","href":"/content/sap-cloud-platform-backend-service-tutorial-12-cds-local-build","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:sap-codejam-on-event-driven-build-process","kind":"content","label":"SAP Codejam on Event Driven Build Process","href":"/content/sap-codejam-on-event-driven-build-process","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:sap-data-and-analytics-showcase-cap-machine-learning-application","kind":"content","label":"SAP Data and Analytics Showcase – Use SAP Cloud Application Programming Model to Develop a Machine Learning Application on SAP BTP","href":"/content/sap-data-and-analytics-showcase-cap-machine-learning-application","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:sap-data-and-analytics-showcase-machine-learning-on-btp","kind":"content","label":"SAP Data and Analytics Showcase - Develop a Machine Learning Application on SAP BTP","href":"/content/sap-data-and-analytics-showcase-machine-learning-on-btp","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:sap-datasphere-integration-patterns-lessons-learned-from-two-years-of-implementa","kind":"content","label":"SAP Datasphere Integration Patterns: Lessons Learned from Two Years of Implementations","href":"/content/sap-datasphere-integration-patterns-lessons-learned-from-two-years-of-implementa","icon":"blog","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"content:sap-developer-new-july-3rd-2026","kind":"content","label":"SAP Developer New, July 3rd 2026","href":"/content/sap-developer-new-july-3rd-2026","icon":"video","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:sap-ehs-public-cloud-extending-your-existing-landscape-side-by-side-guidebook-pa","kind":"content","label":"SAP EHS Public Cloud: Extending Your Existing Landscape Side-by-Side - Guidebook (Part 4)","href":"/content/sap-ehs-public-cloud-extending-your-existing-landscape-side-by-side-guidebook-pa","icon":"blog","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:sap-email-functionality-in-sap-with-a-custom-function-module","kind":"content","label":"SAP: Email Functionality in SAP with a Custom Function Module","href":"/content/sap-email-functionality-in-sap-with-a-custom-function-module","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:sap-event-mesh-architecture-patterns","kind":"content","label":"SAP Event Mesh Architecture Patterns","href":"/content/sap-event-mesh-architecture-patterns","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:sap-event-mesh-cap-based-implementation-single-tenant","kind":"content","label":"[Blog Post] SAP Event Mesh – CAP based implementation of SAP Event Mesh in a Single-Tenant Scenario","href":"/content/sap-event-mesh-cap-based-implementation-single-tenant","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:sap-event-mesh-consuming-s4-events-in-cap-and-integration-suite","kind":"content","label":"[Blog Post] SAP Event Mesh - Consuming S4 events simultaneously in CAP-based applications and SAP Integration Suite","href":"/content/sap-event-mesh-consuming-s4-events-in-cap-and-integration-suite","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:sap-event-mesh-s4-hana-on-prem-and-sap-ci-btp-is-through-websocket-and-webhooks","kind":"content","label":"SAP Event Mesh: S4 HANA On-Prem and SAP CI(BTP IS) through WebSocket and Webhooks","href":"/content/sap-event-mesh-s4-hana-on-prem-and-sap-ci-btp-is-through-websocket-and-webhooks","icon":"blog","ecos":["cap","btp","abap","digital-manufacturing","ui5"],"homeEcos":["cap","btp","abap","digital-manufacturing"]},{"id":"content:sap-fiori-application-generator-available-in-open-source","kind":"content","label":"SAP Fiori Application Generator Available in Open Source","href":"/content/sap-fiori-application-generator-available-in-open-source","icon":"blog","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:sap-fiori-elements-using-cap-model-introduction","kind":"content","label":"SAP Fiori Elements using CAP Model - Introduction","href":"/content/sap-fiori-elements-using-cap-model-introduction","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:sap-fiori-elements-using-cap-model-list-report-app","kind":"content","label":"SAP Fiori Element using CAP Model – List Report App","href":"/content/sap-fiori-elements-using-cap-model-list-report-app","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:sap-graphql-in-capm-nodejs","kind":"content","label":"SAP GraphQL in CAPm (node.js)","href":"/content/sap-graphql-in-capm-nodejs","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:sap-group-consume-remote-services-in-a-full-stack-cap-application","kind":"content","label":"Consume Remote Services in a Full-Stack CAP Application","href":"/content/sap-group-consume-remote-services-in-a-full-stack-cap-application","icon":"workshop","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:sap-group-create-a-simple-cap-application-and-explore-the-defaults","kind":"content","label":"Create a Simple CAP Application and Explore the Defaults","href":"/content/sap-group-create-a-simple-cap-application-and-explore-the-defaults","icon":"workshop","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:sap-group-deploy-a-full-stack-cap-application","kind":"content","label":"Deploy a Full-Stack CAP Application in SAP BTP","href":"/content/sap-group-deploy-a-full-stack-cap-application","icon":"workshop","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:sap-group-develop-full-stack-cap-application","kind":"content","label":"Develop a Full-Stack CAP Application Following SAP BTP Developer's Guide","href":"/content/sap-group-develop-full-stack-cap-application","icon":"workshop","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:sap-hana-xsa-part-2-smart-variants-and-odata-v4-to-v2","kind":"content","label":"SAP HANA XSA pt. 2 – Smart variants, OData v4 -> v2","href":"/content/sap-hana-xsa-part-2-smart-variants-and-odata-v4-to-v2","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:sap-integration-suite-intelligent-integration-with-ai-adapter","kind":"content","label":"SAP Integration Suite: Intelligent Integration with AI Adapter","href":"/content/sap-integration-suite-intelligent-integration-with-ai-adapter","icon":"blog","ecos":["btp","cap","ui5","abap"],"homeEcos":["btp","cap","ui5","abap"]},{"id":"content:sap-integration-suite-mcp-a-practical-architecture-for-ai-agents-and-sap","kind":"content","label":"SAP Integration Suite + MCP: A Practical Architecture for AI Agents and SAP","href":"/content/sap-integration-suite-mcp-a-practical-architecture-for-ai-agents-and-sap","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:sap-job-scheduling-service-generate-your-own-client-library-from-openapi-spec","kind":"content","label":"SAP Job Scheduling Service: 🔧 Generate Your Own Client Library from OpenAPI Spec","href":"/content/sap-job-scheduling-service-generate-your-own-client-library-from-openapi-spec","icon":"blog","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:sap-job-scheduling-service-set-job-run-status-with-the-rest-api-and-node-js","kind":"content","label":"SAP Job Scheduling Service: Set Job Run Status with the REST API and Node.js","href":"/content/sap-job-scheduling-service-set-job-run-status-with-the-rest-api-and-node-js","icon":"blog","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:sap-joule-implementation-in-an-s-4hana-private-cloud-3-system-landscape","kind":"content","label":"SAP Joule implementation in an S/4HANA private cloud 3 system landscape","href":"/content/sap-joule-implementation-in-an-s-4hana-private-cloud-3-system-landscape","icon":"blog","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap","ui5"]},{"id":"content:sap-joule-invoice-agent-for-faster-supplier-invoice-release-in-sap-s-4hana-accou","kind":"content","label":"SAP Joule: Invoice Agent for Faster Supplier Invoice Release in SAP S/4HANA Accounts Payable","href":"/content/sap-joule-invoice-agent-for-faster-supplier-invoice-release-in-sap-s-4hana-accou","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:sap-joule-me-my-first-joule-skill-in-sap-ehsm-incident-management-without-coding","kind":"content","label":"SAP JOULE & ME : My First JOULE Skill in SAP EHSM-Incident Management Without Coding","href":"/content/sap-joule-me-my-first-joule-skill-in-sap-ehsm-incident-management-without-coding","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:sap-just-became-ai-agent-ready-here-s-a-step-by-step-mcp-walkthrough","kind":"content","label":"SAP Just Became AI-Agent Ready — Here's a Step-by-Step MCP Walkthrough","href":"/content/sap-just-became-ai-agent-ready-here-s-a-step-by-step-mcp-walkthrough","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:sap-mdg-cloud-ready-mode-5-solution-patterns-zero-badis-how-we-implemented-5-typ","kind":"content","label":"SAP MDG Cloud Ready Mode: 5 Solution Patterns, Zero BADIs: How We implemented 5 typical requirements","href":"/content/sap-mdg-cloud-ready-mode-5-solution-patterns-zero-badis-how-we-implemented-5-typ","icon":"blog","ecos":["btp","ui5"],"homeEcos":["btp","ui5"]},{"id":"content:sap-mission-build-a-business-application-using-cap-for-java","kind":"content","label":"Build a Business Application Using CAP for Java","href":"/content/sap-mission-build-a-business-application-using-cap-for-java","icon":"workshop","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:sap-mission-build-a-business-application-using-cap-for-nodejs","kind":"content","label":"Build a Business Application Using CAP for Node.js","href":"/content/sap-mission-build-a-business-application-using-cap-for-nodejs","icon":"workshop","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:sap-mission-extend-successfactors-with-cap","kind":"content","label":"Extend SAP SuccessFactors on SAP BTP with the SAP Cloud Application Programming Model","href":"/content/sap-mission-extend-successfactors-with-cap","icon":"workshop","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:sap-neo-retires-integration-developers-must-know-before-migrating-from-neo-to-cf","kind":"content","label":"SAP Neo Retires – Integration Developers Must Know Before Migrating from Neo to CF","href":"/content/sap-neo-retires-integration-developers-must-know-before-migrating-from-neo-to-cf","icon":"blog","ecos":["btp","digital-manufacturing","ui5"],"homeEcos":["btp","digital-manufacturing"]},{"id":"content:sap-ord-made-simple-what-it-does-and-why-it-s-crucial-in-your-sap-landscape-purp","kind":"content","label":"SAP ORD Made Simple: What It Does and Why It’s Crucial in your SAP Landscape + Purpose and Value","href":"/content/sap-ord-made-simple-what-it-does-and-why-it-s-crucial-in-your-sap-landscape-purp","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:sap-pi-migration-to-btp-integration-suite-patterns-and-learning-experiences","kind":"content","label":"SAP PI Migration to BTP Integration Suite Patterns and learning experiences","href":"/content/sap-pi-migration-to-btp-integration-suite-patterns-and-learning-experiences","icon":"blog","ecos":["btp","digital-manufacturing","ui5","cap"],"homeEcos":["btp","digital-manufacturing"]},{"id":"content:sap-rpt-1-5-is-now-generally-available-more-accurate-predictions-better-explaina","kind":"content","label":"SAP-RPT-1.5 Is Now Generally Available: More Accurate Predictions, Better Explainability, What's New","href":"/content/sap-rpt-1-5-is-now-generally-available-more-accurate-predictions-better-explaina","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:sap-s-4hana-cloud-scheduling-background-jobs-using-application-job-templates","kind":"content","label":"SAP S/4HANA Cloud: Scheduling Background Jobs Using Application Job Templates","href":"/content/sap-s-4hana-cloud-scheduling-background-jobs-using-application-job-templates","icon":"blog","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:sap-s-api-policy-on-ai-agents-what-it-prohibits-allows-and-leaves-open","kind":"content","label":"SAP's API Policy on AI Agents: What It Prohibits, Allows, and Leaves Open","href":"/content/sap-s-api-policy-on-ai-agents-what-it-prohibits-allows-and-leaves-open","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:sap-soap-sender-receiver-adapters-your-integration-game-changers","kind":"content","label":"SAP SOAP Sender & Receiver Adapters: Your Integration Game Changers","href":"/content/sap-soap-sender-receiver-adapters-your-integration-game-changers","icon":"blog","ecos":["btp","digital-manufacturing","ui5"],"homeEcos":["btp","digital-manufacturing"]},{"id":"content:sap-successfactors-extensibility-from-btp-kyma-runtime","kind":"content","label":"SAP SuccessFactors extensibility easy with SAP BTP, Kyma runtime","href":"/content/sap-successfactors-extensibility-from-btp-kyma-runtime","icon":"blog","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp","ui5"]},{"id":"content:sap-tech-bytes-adding-service-implementation-to-an-sap-hana-project","kind":"content","label":"SAP Tech Bytes: Adding Service Implementation to an SAP HANA Project","href":"/content/sap-tech-bytes-adding-service-implementation-to-an-sap-hana-project","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:sap-tutorial-add-mcp-capabilities-to-a-cap-service","kind":"content","label":"Add MCP capabilities to a CAP service","href":"/content/sap-tutorial-add-mcp-capabilities-to-a-cap-service","icon":"tutorial","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:sap-tutorial-api-composition-supply-risk","kind":"content","label":"Build a Supply Risk API with API Composition","href":"/content/sap-tutorial-api-composition-supply-risk","icon":"tutorial","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:sap-tutorial-cap-define-constraints-declaratively","kind":"content","label":"Learn how to define constraints declaratively in your CDS model","href":"/content/sap-tutorial-cap-define-constraints-declaratively","icon":"tutorial","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:sap-tutorial-cap-examine-mcp-startup","kind":"content","label":"Examine the details of the Model Context Protocol on startup","href":"/content/sap-tutorial-cap-examine-mcp-startup","icon":"tutorial","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:sap-tutorial-cap-intro-to-repl","kind":"content","label":"Get an introduction to the cds REPL","href":"/content/sap-tutorial-cap-intro-to-repl","icon":"tutorial","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:sap-tutorial-cap-mocking-auth","kind":"content","label":"Use mocking to embrace auth in your domain model from the outset","href":"/content/sap-tutorial-cap-mocking-auth","icon":"tutorial","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:sap-tutorial-cap-self-contained-dev-env","kind":"content","label":"Set up a self-contained development environment for CAP Node.js","href":"/content/sap-tutorial-cap-self-contained-dev-env","icon":"tutorial","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:sap-tutorial-cap-soap-service","kind":"content","label":"Consume SOAP Web Services in SAP Cloud Application Programming Model","href":"/content/sap-tutorial-cap-soap-service","icon":"tutorial","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp","ui5"]},{"id":"content:sap-tutorial-cap-status-transition-flows","kind":"content","label":"Explore the declarative power of status-transition flows","href":"/content/sap-tutorial-cap-status-transition-flows","icon":"tutorial","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:sap-tutorial-cicd-start-cap","kind":"content","label":"Get Started with an SAP Cloud Application Programming Model Project in SAP Continuous Integration and Delivery","href":"/content/sap-tutorial-cicd-start-cap","icon":"tutorial","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"content:sap-tutorial-cicd-wdi5-cap","kind":"content","label":"Create Automated System Tests for SAP Cloud Application Programming Model Projects","href":"/content/sap-tutorial-cicd-wdi5-cap","icon":"tutorial","ecos":["cap","btp","digital-manufacturing","ui5"],"homeEcos":["cap","btp","digital-manufacturing","ui5"]},{"id":"content:sap-tutorial-cloudsdk-integrate-cap","kind":"content","label":"Use the SAP Cloud SDK in the SAP Cloud Application Programming Model","href":"/content/sap-tutorial-cloudsdk-integrate-cap","icon":"tutorial","ecos":["cap","btp","ui5"],"homeEcos":["cap","btp","ui5"]},{"id":"content:sap-tutorial-cp-cap-java-hana-db","kind":"content","label":"Use SAP HANA as the Database for a CAP Java Application","href":"/content/sap-tutorial-cp-cap-java-hana-db","icon":"tutorial","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:sap-tutorial-integration-suite-mcp-server","kind":"content","label":"Create an MCP Server for Enterprise AI Agents","href":"/content/sap-tutorial-integration-suite-mcp-server","icon":"tutorial","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:sapcap-win-customer-trust-using-data-privacy-and-protection-services-on-btp-part-2","kind":"content","label":"#SAPCAP: Win Customer Trust using Data Privacy and Protection Services on BTP - Part 3","href":"/content/sapcap-win-customer-trust-using-data-privacy-and-protection-services-on-btp-part-2","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:sapcap-win-customer-trust-using-data-privacy-and-protection-services-on-btp-part-3","kind":"content","label":"#SAPCAP: Win Customer Trust using Data Privacy and Protection Services on BTP - Part 1","href":"/content/sapcap-win-customer-trust-using-data-privacy-and-protection-services-on-btp-part-3","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:sapcap-win-customer-trust-using-data-privacy-and-protection-services-on-btp-part","kind":"content","label":"#SAPCAP: Win Customer Trust using Data Privacy and Protection Services on BTP - Part 2","href":"/content/sapcap-win-customer-trust-using-data-privacy-and-protection-services-on-btp-part","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:scheduling-a-background-job-for-the-bdc-session-method-using-rsbdcsub","kind":"content","label":"Scheduling a Background Job for the BDC Session Method Using RSBDCSUB","href":"/content/scheduling-a-background-job-for-the-bdc-session-method-using-rsbdcsub","icon":"blog","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:securing-a-cap-endpoint-called-by-the-job-scheduling-service","kind":"content","label":"SAP Job Scheduling Service + Cloud Application Programming Model application (CAP) + SAP Authorization and Trust Management Service (XSUAA)","href":"/content/securing-a-cap-endpoint-called-by-the-job-scheduling-service","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:securing-a-cap-nodejs-app-with-sap-ams-on-btp-cloud-foundry","kind":"content","label":"Securing a CAP Node.js App with SAP AMS on BTP Cloud Foundry","href":"/content/securing-a-cap-nodejs-app-with-sap-ams-on-btp-cloud-foundry","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:securing-cap-applications-with-cloud-identity-services-and-ams","kind":"content","label":"Securing CAP Applications with SAP Cloud Identity Services and AMS","href":"/content/securing-cap-applications-with-cloud-identity-services-and-ams","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:securing-multiple-cap-java-apps-with-one-xsuaa-instance","kind":"content","label":"An approach to secure multiple integrated SAP CAP java applications with a common XSUAA service instance","href":"/content/securing-multiple-cap-java-apps-with-one-xsuaa-instance","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:securing-sap-cap-applications-xsuaa-roles-and-authorization-best-practices","kind":"content","label":"Securing SAP CAP Applications: XSUAA, Roles, and Authorization Best Practices","href":"/content/securing-sap-cap-applications-xsuaa-roles-and-authorization-best-practices","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:semantic-search-in-cap-nodejs-vector-embeddings","kind":"content","label":"Semantic search in CAP (Node.js): vector embeddings and cosine similarity","href":"/content/semantic-search-in-cap-nodejs-vector-embeddings","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:sending-email-through-an-on-premise-mail-destination-from-cap","kind":"content","label":"Connecting On Premise Mail Destination and Sending Email Using SAP Cloud SDK JavaScript Version 3 on SAP CAP","href":"/content/sending-email-through-an-on-premise-mail-destination-from-cap","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:sending-emails-from-sap-cap-applications-with-any-smtp-provider","kind":"content","label":"Sending Emails from SAP CAP Applications with Any SMTP Provider","href":"/content/sending-emails-from-sap-cap-applications-with-any-smtp-provider","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:september-15th-what-s-new-on-developers-sap-com","kind":"content","label":"September 15th: What's New on developers.sap.com","href":"/content/september-15th-what-s-new-on-developers-sap-com","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:service-interfaces-and-abap-proxy-generation-support-in-sap-integration-suite","kind":"content","label":"Service Interfaces and ABAP Proxy generation support in SAP Integration Suite","href":"/content/service-interfaces-and-abap-proxy-generation-support-in-sap-integration-suite","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:set-up-the-sap-cloud-connector-integrating-on-premise-systems-with-cloud-service","kind":"content","label":"Set up the SAP Cloud Connector: Integrating On‑Premise Systems with Cloud Services","href":"/content/set-up-the-sap-cloud-connector-integrating-on-premise-systems-with-cloud-service","icon":"blog","ecos":["btp","abap","cap","ui5"],"homeEcos":["btp","abap","cap","ui5"]},{"id":"content:set-up-vs-code-on-chrome-os-for-local-cap-development","kind":"content","label":"Set up VS Code on Chrome OS for local Application Programming Model development","href":"/content/set-up-vs-code-on-chrome-os-for-local-cap-development","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:setting-the-right-expectations-around-ai-for-code-generation","kind":"content","label":"Setting the right expectations around AI for code generation and getting past the inherent limits","href":"/content/setting-the-right-expectations-around-ai-for-code-generation","icon":"blog","ecos":["cap","ui5","btp","abap","commerce"],"homeEcos":["cap","ui5","btp","abap","commerce"]},{"id":"content:setting-up-alerts-for-sap-cloud-integration-using-sap-alert-notification-service","kind":"content","label":"Setting Up Alerts for SAP Cloud Integration Using SAP Alert Notification Service","href":"/content/setting-up-alerts-for-sap-cloud-integration-using-sap-alert-notification-service","icon":"blog","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"content:setting-up-cap-plugin-for-advanced-event-mesh-with-oauth","kind":"content","label":"Complete Guide: Setting Up CAP Plugin for Advanced Event Mesh with OAuth Authentication","href":"/content/setting-up-cap-plugin-for-advanced-event-mesh-with-oauth","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:setting-up-postgresql-for-sap-btp-development","kind":"content","label":"Setting Up PostgreSQL for SAP BTP Development: A Practical Guide","href":"/content/setting-up-postgresql-for-sap-btp-development","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:sftp-authentication-setup-in-sap-btp-integration-suite-a-step-by-step-guide","kind":"content","label":"SFTP Authentication Setup in SAP BTP Integration Suite: A Step-by-Step Guide.","href":"/content/sftp-authentication-setup-in-sap-btp-integration-suite-a-step-by-step-guide","icon":"blog","ecos":["btp","digital-manufacturing","ui5"],"homeEcos":["btp","digital-manufacturing"]},{"id":"content:sftp-file-level-checks-in-sap-btp-cloud-integration","kind":"content","label":"SFTP File Level Checks in SAP BTP Cloud Integration","href":"/content/sftp-file-level-checks-in-sap-btp-cloud-integration","icon":"blog","ecos":["btp","digital-manufacturing","ui5"],"homeEcos":["btp","digital-manufacturing"]},{"id":"content:sharing-a-hana-cloud-instance-across-subaccounts-with-hdi-containers","kind":"content","label":"Sharing SAP HANA Cloud instance to multiple subaccounts and creating HDI containers","href":"/content/sharing-a-hana-cloud-instance-across-subaccounts-with-hdi-containers","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:side-effects-in-fiori-triggering-actions-and-updating-data-in-your-unmanaged-rap","kind":"content","label":"Side Effects in Fiori: Triggering Actions and Updating Data in Your Unmanaged RAP Application","href":"/content/side-effects-in-fiori-triggering-actions-and-updating-data-in-your-unmanaged-rap","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:simple-table-maintenance-in-sap-fiori-using-ui5-smart-controls","kind":"content","label":"Simple Table Maintenance in SAP Fiori Using UI5 Smart Controls","href":"/content/simple-table-maintenance-in-sap-fiori-using-ui5-smart-controls","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:simplifying-abap-proxy-migration-from-sap-po-to-integration-suite-no-mdr-require","kind":"content","label":"Simplifying ABAP Proxy Migration: From SAP PO to Integration Suite (No MDR Required)","href":"/content/simplifying-abap-proxy-migration-from-sap-po-to-integration-suite-no-mdr-require","icon":"blog","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"content:simplifying-saas-self-onboarding-automation-using-terraform","kind":"content","label":"Simplifying SaaS Self-Onboarding Automation using Terraform in Kyma and Cloud Foundry","href":"/content/simplifying-saas-self-onboarding-automation-using-terraform","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:simplifying-sap-btp-authentication-in-pipelines-with-sap-passport","kind":"content","label":"Simplifying SAP BTP Authentication in Pipelines with SAP Passport and Playwright","href":"/content/simplifying-sap-btp-authentication-in-pipelines-with-sap-passport","icon":"blog","ecos":["cap","btp","abap","ui5","digital-manufacturing"],"homeEcos":["cap","btp","abap","ui5","digital-manufacturing"]},{"id":"content:smart-filter-value-help-for-fields-that-are-not-associated-entities","kind":"content","label":"Use SAP CAP SAPUI5 Smart Filter to Show Value Help that are not Associated Entitites","href":"/content/smart-filter-value-help-for-fields-that-are-not-associated-entities","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:speed-up-deployment-for-cap-using-turborepo","kind":"content","label":"Speed up deployment for CAP using Turborepo","href":"/content/speed-up-deployment-for-cap-using-turborepo","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:sqlite-as-database-for-a-productive-cap-application","kind":"content","label":"SQLite as database for a multi-target (/productive) CAP Application","href":"/content/sqlite-as-database-for-a-productive-cap-application","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:standardized-oidc-api-access-to-sap-s-4hana-via-sap-api-management-and-microsoft","kind":"content","label":"Standardized OIDC API Access to SAP S/4HANA via SAP API Management and Microsoft Entra ID","href":"/content/standardized-oidc-api-access-to-sap-s-4hana-via-sap-api-management-and-microsoft","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:standardized-oidc-api-access-to-sap-successfactors-via-sap-api-management-and-mi","kind":"content","label":"Standardized OIDC API Access to SAP SuccessFactors via SAP API Management and Microsoft Entra ID","href":"/content/standardized-oidc-api-access-to-sap-successfactors-via-sap-api-management-and-mi","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:step-by-step-guide-google-sheets-api-integration-in-sap-cpi-via-open-connectors","kind":"content","label":"Step-By-Step Guide: Google Sheets API Integration in SAP CPI via Open Connectors","href":"/content/step-by-step-guide-google-sheets-api-integration-in-sap-cpi-via-open-connectors","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:step-by-step-guide-to-display-system-details-on-sap-fiori-launchpad-shell","kind":"content","label":"Step-by-Step Guide to Display System Details on SAP Fiori Launchpad Shell","href":"/content/step-by-step-guide-to-display-system-details-on-sap-fiori-launchpad-shell","icon":"blog","ecos":["ui5","abap","btp","cap"],"homeEcos":["ui5","abap","btp","cap"]},{"id":"content:stop-building-from-scratch-unlocking-sap-cloud-integration-s-standard-content","kind":"content","label":"Stop Building From Scratch: Unlocking SAP Cloud Integration’s Standard Content","href":"/content/stop-building-from-scratch-unlocking-sap-cloud-integration-s-standard-content","icon":"blog","ecos":["btp","digital-manufacturing","ui5","abap"],"homeEcos":["btp","digital-manufacturing","abap"]},{"id":"content:storyboard-for-cloud-business-applications-using-cap-in-bas","kind":"content","label":"Storyboard for cloud business applications using CAP in SAP Business Application Studio","href":"/content/storyboard-for-cloud-business-applications-using-cap-in-bas","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:streaming-llm-output-with-cap-and-websockets","kind":"content","label":"Streaming LLM Output with CAP and WebSockets","href":"/content/streaming-llm-output-with-cap-and-websockets","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:streamline-user-targeting-with-segments-in-sap-feature-flags","kind":"content","label":"Streamline User Targeting with Segments in SAP Feature Flags","href":"/content/streamline-user-targeting-with-segments-in-sap-feature-flags","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:streamlined-kyma-deployment-for-cap-applications","kind":"content","label":"Streamlined Kyma deployment for CAP applications","href":"/content/streamlined-kyma-deployment-for-cap-applications","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:streamlining-cap-development-with-cds-graphical-modeler-in-bas","kind":"content","label":"Streamlining CAP Development with CDS Graphical Modeler in SAP Business Application Studio","href":"/content/streamlining-cap-development-with-cds-graphical-modeler-in-bas","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:surviving-and-thriving-with-cap-deployment","kind":"content","label":"Surviving and Thriving with the SAP Cloud Application Programming Model: Deployment to SAP BTP, Kyma runtime","href":"/content/surviving-and-thriving-with-cap-deployment","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:surviving-and-thriving-with-the-sap-cloud-application-programming-model-local-de","kind":"content","label":"Surviving and Thriving with the SAP Cloud Application Programming Model: Local development hurdles","href":"/content/surviving-and-thriving-with-the-sap-cloud-application-programming-model-local-de","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:swagger-ui-for-cds-sap-btp-extension-generators","kind":"content","label":"Swagger UI | SAP BTP Extension Generators | Hands-on Video Tutorials","href":"/content/swagger-ui-for-cds-sap-btp-extension-generators","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:taking-cap-to-the-next-level-with-typescript","kind":"content","label":"Taking CAP to the next level - with TypeScript","href":"/content/taking-cap-to-the-next-level-with-typescript","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:taking-control-of-clean-core-when-to-use-project-kernseife-in-addition-to-standa","kind":"content","label":"Taking Control of Clean Core: When to Use Project Kernseife in addition to Standard SAP Tools","href":"/content/taking-control-of-clean-core-when-to-use-project-kernseife-in-addition-to-standa","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:talk-to-the-database-cap-and-sqlite-with-gemini","kind":"content","label":"Lets Talk to the Database - CAP & SQLite Powered by Google Gemini-2.5-Pro","href":"/content/talk-to-the-database-cap-and-sqlite-with-gemini","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:teaching-ai-agents-best-practices-a-skills-workspace-for-cap","kind":"content","label":"Teaching AI Agents Best Practices: A Skills Workspace for CAP Development","href":"/content/teaching-ai-agents-best-practices-a-skills-workspace-for-cap","icon":"blog","ecos":["cap","ui5","btp","abap","commerce"],"homeEcos":["cap","ui5","btp","abap","commerce"]},{"id":"content:teched-2026-ad162","kind":"content","label":"Everything new: Try out the latest features in CAP","href":"/content/teched-2026-ad162","icon":"talk","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap"]},{"id":"content:teched-2026-ad164","kind":"content","label":"Generate agentic workflows using SAP-managed n8n in Joule Studio","href":"/content/teched-2026-ad164","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"content:teched-2026-ad260","kind":"content","label":"Level up app development: ABAP Cloud model innovations and Joule solution","href":"/content/teched-2026-ad260","icon":"talk","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:teched-2026-ad261","kind":"content","label":"SAP BAIP, ABAP environment: Monitoring and troubleshooting","href":"/content/teched-2026-ad261","icon":"talk","ecos":["btp","abap","cap"],"homeEcos":["btp","abap","cap"]},{"id":"content:teched-2026-ad262","kind":"content","label":"Agentic CAP: Build MCP servers and enterprise AI agents","href":"/content/teched-2026-ad262","icon":"talk","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:teched-2026-ad263","kind":"content","label":"Build your first agent with Joule Studio in a pro-code way","href":"/content/teched-2026-ad263","icon":"talk","ecos":["btp","cap","ui5"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-ad264","kind":"content","label":"Building enterprise agent extensions with the Joule Studio solution","href":"/content/teched-2026-ad264","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-bt106","kind":"content","label":"From confident to correct: AI search results you can actually trust","href":"/content/teched-2026-bt106","icon":"talk","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-bt115","kind":"content","label":"Monitor your AI agents with the SAP Cloud ALM solution","href":"/content/teched-2026-bt115","icon":"talk","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:teched-2026-ct1085","kind":"content","label":"Explore SAP Fiori elements for ABAP developers","href":"/content/teched-2026-ct1085","icon":"talk","ecos":["btp","abap","ui5","cap"],"homeEcos":["btp","abap","ui5","cap"]},{"id":"content:teched-2026-ct1089","kind":"content","label":"Building a Terraform onboarder for SAP Business AI Platform","href":"/content/teched-2026-ct1089","icon":"talk","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-ct1091","kind":"content","label":"Connecting AI agents to the ABAP RESTful application programming model","href":"/content/teched-2026-ct1091","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"content:teched-2026-ct1106","kind":"content","label":"Zero token architecture for Joule Agents","href":"/content/teched-2026-ct1106","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-ct1133","kind":"content","label":"Talking to your database: The new data exploration tools in SAP HANA Cloud","href":"/content/teched-2026-ct1133","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-ct1135","kind":"content","label":"Conversational search for the Cloud Integration capability","href":"/content/teched-2026-ct1135","icon":"talk","ecos":["btp","digital-manufacturing","ui5","cap","abap"],"homeEcos":["btp","digital-manufacturing","cap","abap"]},{"id":"content:teched-2026-ct1136","kind":"content","label":"AI needs a foundation: A map of the plug-in ecosystem for CAP","href":"/content/teched-2026-ct1136","icon":"talk","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5"]},{"id":"content:teched-2026-ct1158","kind":"content","label":"AI-first, API-first: What changes when AI becomes the user","href":"/content/teched-2026-ct1158","icon":"talk","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:teched-2026-ct1163","kind":"content","label":"Under the hood of the Delta Sharing protocol","href":"/content/teched-2026-ct1163","icon":"talk","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:teched-2026-ct1168","kind":"content","label":"AI-enabled administration: Automating log analysis with generative AI hub","href":"/content/teched-2026-ct1168","icon":"talk","ecos":["btp","abap","ui5","cap"],"homeEcos":["btp","abap","ui5","cap"]},{"id":"content:teched-2026-ct1207","kind":"content","label":"OData entity as a governed query surface for agents, not a tool","href":"/content/teched-2026-ct1207","icon":"talk","ecos":["btp","abap","cap"],"homeEcos":["btp","abap","cap"]},{"id":"content:teched-2026-ct1219","kind":"content","label":"Build an AI-assisted known error database with SAP Integration Suite","href":"/content/teched-2026-ct1219","icon":"talk","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"content:teched-2026-ct1222","kind":"content","label":"Rethinking security for modern SAP solution landscapes","href":"/content/teched-2026-ct1222","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-ct1238","kind":"content","label":"Stop guessing, start counting: How generative AI fixed an inventory mess","href":"/content/teched-2026-ct1238","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap","ui5"]},{"id":"content:teched-2026-ct1239","kind":"content","label":"AI-assisted full stack development using model context protocol servers","href":"/content/teched-2026-ct1239","icon":"talk","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"content:teched-2026-da100","kind":"content","label":"Enhancing agentic AI with trusted business data","href":"/content/teched-2026-da100","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"content:teched-2026-da104","kind":"content","label":"Reimagining master data as the foundation for enterprise AI","href":"/content/teched-2026-da104","icon":"talk","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-da105","kind":"content","label":"Enriching AI models with SAP AI Core in SAP Business Data Cloud","href":"/content/teched-2026-da105","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-da112","kind":"content","label":"SAP HANA Cloud as a self-managed database: Advisors and automation","href":"/content/teched-2026-da112","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-da113","kind":"content","label":"Build AI agents and applications natively on SAP HANA Cloud","href":"/content/teched-2026-da113","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-da114","kind":"content","label":"Modernize your database landscape with SAP HANA Cloud","href":"/content/teched-2026-da114","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-da160","kind":"content","label":"Build real-time, unified data products for agentic AI with SAP Reltio","href":"/content/teched-2026-da160","icon":"talk","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-da161","kind":"content","label":"Build and govern data products in the Joule Studio solution","href":"/content/teched-2026-da161","icon":"talk","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-da162","kind":"content","label":"Share data products with zero copies using SAP Business Data Cloud Connect","href":"/content/teched-2026-da162","icon":"talk","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-da163","kind":"content","label":"SAP HANA Cloud advisors and automation","href":"/content/teched-2026-da163","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-da164","kind":"content","label":"Building agentic applications with SAP HANA Cloud","href":"/content/teched-2026-da164","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-da200","kind":"content","label":"Agentic SAP BW modernization: Your path to SAP Business Data Cloud","href":"/content/teched-2026-da200","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"content:teched-2026-da204","kind":"content","label":"Unlock predictive and generative AI with your data in SAP HANA Cloud","href":"/content/teched-2026-da204","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-da205","kind":"content","label":"Agentic memory: Knowledge graph engine and recall in SAP HANA Cloud","href":"/content/teched-2026-da205","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-da206","kind":"content","label":"Agent-to-agent in action: SAP and Adobe CX Enterprise Coworker at Henkel","href":"/content/teched-2026-da206","icon":"talk","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-da260","kind":"content","label":"Accelerate agentic planning with trusted data products","href":"/content/teched-2026-da260","icon":"talk","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-da261","kind":"content","label":"Transform business data into AI-supported insights","href":"/content/teched-2026-da261","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-da262","kind":"content","label":"Get hands on with tabular AI and forecasting models in SAP HANA Cloud","href":"/content/teched-2026-da262","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-da263","kind":"content","label":"Knowledge graph and agent memory: Build an agent that remembers","href":"/content/teched-2026-da263","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-da264","kind":"content","label":"Flexible analytics at speed: Calculation views in SAP Business Data Cloud","href":"/content/teched-2026-da264","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-da802","kind":"content","label":"The future of the SAP Business Data Cloud solution: Data and AI road map","href":"/content/teched-2026-da802","icon":"talk","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-da806","kind":"content","label":"What’s next for agentic analytics and planning in SAP Business Data Cloud","href":"/content/teched-2026-da806","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-da807","kind":"content","label":"Road map for SAP HANA Cloud: What’s next for the AI database","href":"/content/teched-2026-da807","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-in111","kind":"content","label":"Unlock composable business using SAP Integration Suite, advanced event mesh","href":"/content/teched-2026-in111","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-in120","kind":"content","label":"More than 100 trading partners, one platform: Scalable B2B at Algoma Steel","href":"/content/teched-2026-in120","icon":"talk","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"content:teched-2026-in160","kind":"content","label":"Explore version control and automation with GitHub in Cloud Integration","href":"/content/teched-2026-in160","icon":"talk","ecos":["btp","digital-manufacturing","ui5","cap"],"homeEcos":["btp","digital-manufacturing","cap"]},{"id":"content:teched-2026-in161","kind":"content","label":"Onboard a trading partner from agreement to live monitoring","href":"/content/teched-2026-in161","icon":"talk","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"content:teched-2026-in162","kind":"content","label":"Building API-centric integration flows with SAP Integration Suite","href":"/content/teched-2026-in162","icon":"talk","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"content:teched-2026-in163","kind":"content","label":"Build your own event-driven scenario with advanced event mesh","href":"/content/teched-2026-in163","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-in200","kind":"content","label":"Govern AI-supported actions across enterprise systems","href":"/content/teched-2026-in200","icon":"talk","ecos":["btp","abap","cap"],"homeEcos":["btp","abap","cap"]},{"id":"content:teched-2026-in202","kind":"content","label":"Accelerate your migration to SAP Integration Suite","href":"/content/teched-2026-in202","icon":"talk","ecos":["btp","abap","cap"],"homeEcos":["btp","abap","cap"]},{"id":"content:teched-2026-in203","kind":"content","label":"Mercedes-Benz’s journey to SAP Integration Suite","href":"/content/teched-2026-in203","icon":"talk","ecos":["btp","abap","cap"],"homeEcos":["btp","abap","cap"]},{"id":"content:teched-2026-in208","kind":"content","label":"Governance, automation, and observability in Cloud Integration","href":"/content/teched-2026-in208","icon":"talk","ecos":["btp","digital-manufacturing","ui5"],"homeEcos":["btp","digital-manufacturing"]},{"id":"content:teched-2026-in211","kind":"content","label":"Build integrations faster with AI-assisted design and operations","href":"/content/teched-2026-in211","icon":"talk","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"content:teched-2026-in212","kind":"content","label":"Modern integration at TÜV Rheinland: APIs, events and cloud transformation","href":"/content/teched-2026-in212","icon":"talk","ecos":["btp","abap","cap"],"homeEcos":["btp","abap","cap"]},{"id":"content:teched-2026-in260","kind":"content","label":"Modernisation and migration to SAP Integration Suite made simple","href":"/content/teched-2026-in260","icon":"talk","ecos":["btp","abap","cap"],"homeEcos":["btp","abap","cap"]},{"id":"content:teched-2026-in261","kind":"content","label":"Model context protocol (MCP) unlocked: Enable governed access to AI agents","href":"/content/teched-2026-in261","icon":"talk","ecos":["btp","abap","cap","commerce","successfactors"],"homeEcos":["btp","abap","cap","commerce","successfactors"]},{"id":"content:teched-2026-in262","kind":"content","label":"Build an integration scenario from scratch with AI assistance at every step","href":"/content/teched-2026-in262","icon":"talk","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"content:teched-2026-in804","kind":"content","label":"Road map for SAP Integration Suite: What ships next across all capabilities","href":"/content/teched-2026-in804","icon":"talk","ecos":["btp","abap","cap"],"homeEcos":["btp","abap"]},{"id":"content:teched-2026-in810","kind":"content","label":"Roadmap to upgrade from SAP Process Orchestration: Agentic era preparation","href":"/content/teched-2026-in810","icon":"talk","ecos":["btp","abap","cap"],"homeEcos":["btp","abap","cap"]},{"id":"content:teched-2026-in813","kind":"content","label":"Intelligent, governed, and agentic integrations with SAP Integration Suite","href":"/content/teched-2026-in813","icon":"talk","ecos":["btp","abap","cap"],"homeEcos":["btp","abap","cap"]},{"id":"content:teched-2026-jw122","kind":"content","label":"Get to know our AI-enhanced mobile apps across the Autonomous Enterprise","href":"/content/teched-2026-jw122","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-jw129","kind":"content","label":"SAP’s compositional design system: Craft enterprise UIs with AI on the fly","href":"/content/teched-2026-jw129","icon":"talk","ecos":["ui5","cap","btp"],"homeEcos":["ui5","cap","btp"]},{"id":"content:teched-2026-jw213","kind":"content","label":"SAP Fiori elements and the age of AI: Build apps that are future ready","href":"/content/teched-2026-jw213","icon":"talk","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:teched-2026-jw214","kind":"content","label":"AI-enhanced analytics with SAP Business AI Platform","href":"/content/teched-2026-jw214","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-jw262","kind":"content","label":"OData to outcomes—Build AI-enabled SAP Fiori apps using SAP Fiori elements","href":"/content/teched-2026-jw262","icon":"talk","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:teched-2026-jw300","kind":"content","label":"Joule without walls: From personal skills to enterprise interoperability","href":"/content/teched-2026-jw300","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-jw301","kind":"content","label":"Joule and related AI offerings from SAP: One platform, many systems","href":"/content/teched-2026-jw301","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-jw809","kind":"content","label":"The road map for SAP Joule for Consultants—your go-to SAP consulting tool","href":"/content/teched-2026-jw809","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-par1102","kind":"content","label":"Spec first: The disciplined way to develop ABAP with agents","href":"/content/teched-2026-par1102","icon":"talk","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"content:teched-2026-par1105","kind":"content","label":"Build agentic SAP extensions with Google Cloud","href":"/content/teched-2026-par1105","icon":"talk","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"content:teched-2026-par1113","kind":"content","label":"Evolution of the Code10 CI Accelerator add-on for SAP Integration Suite","href":"/content/teched-2026-par1113","icon":"talk","ecos":["btp","digital-manufacturing","ui5","abap"],"homeEcos":["btp","digital-manufacturing","abap"]},{"id":"content:teched-2026-par1115","kind":"content","label":"B2B integration factory: How Versuni verified more than 200 EDI interfaces","href":"/content/teched-2026-par1115","icon":"talk","ecos":["btp","abap","cap"],"homeEcos":["btp","abap","cap"]},{"id":"content:teched-2026-par1119","kind":"content","label":"Integrating automation with agentic AI and complex file transfer needs","href":"/content/teched-2026-par1119","icon":"talk","ecos":["btp","abap"],"homeEcos":["btp","abap"]},{"id":"content:teched-2026-par1120","kind":"content","label":"Accelerating SAP solution transformations with the agent-led toolchain","href":"/content/teched-2026-par1120","icon":"talk","ecos":["cap","btp","digital-manufacturing"],"homeEcos":["cap","btp","digital-manufacturing"]},{"id":"content:teched-2026-ra106","kind":"content","label":"How SAP Document AI brings agentic intelligence to business documents","href":"/content/teched-2026-ra106","icon":"talk","ecos":["btp","cap","ui5"],"homeEcos":["btp","cap","ui5"]},{"id":"content:teched-2026-ra107","kind":"content","label":"SAP AI Core deep dive: Models, agents, and business context at scale","href":"/content/teched-2026-ra107","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-ra110","kind":"content","label":"Joule and SAP Knowledge Graph: Context-aware AI across SAP solutions","href":"/content/teched-2026-ra110","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-ra160","kind":"content","label":"Build business differentiation with SAP AI Core","href":"/content/teched-2026-ra160","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-ra162","kind":"content","label":"SAP-RPT and TabPFN: Get started with tabular foundation models","href":"/content/teched-2026-ra162","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-ra163","kind":"content","label":"Building custom Joule Agents with SAP Knowledge Graph","href":"/content/teched-2026-ra163","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-ra164","kind":"content","label":"Hands on SAP Document AI: Next-generation intelligent document processing","href":"/content/teched-2026-ra164","icon":"talk","ecos":["btp","cap","ui5"],"homeEcos":["btp","cap","ui5"]},{"id":"content:teched-2026-st100","kind":"content","label":"Architecting your data foundation for the Autonomous Enterprise","href":"/content/teched-2026-st100","icon":"talk","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-st103","kind":"content","label":"Behind the Autonomous Enterprise: SAP Knowledge Graph and SAP Domain Models","href":"/content/teched-2026-st103","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-st104","kind":"content","label":"SAP Integration Suite as the foundation for enterprise agentic AI","href":"/content/teched-2026-st104","icon":"talk","ecos":["btp","abap","cap","commerce","successfactors"],"homeEcos":["btp","abap","cap","commerce","successfactors"]},{"id":"content:teched-2026-st106","kind":"content","label":"SAP HANA Cloud: The data foundation for contextualizing and reasoning","href":"/content/teched-2026-st106","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-st107","kind":"content","label":"SAP HANA Cloud as the AI database for SAP Business Data Cloud","href":"/content/teched-2026-st107","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-st108","kind":"content","label":"Build your custom knowledge layer with SAP HANA Cloud","href":"/content/teched-2026-st108","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-st113","kind":"content","label":"AkzoNobel: Modernizing integration at enterprise scale","href":"/content/teched-2026-st113","icon":"talk","ecos":["btp","abap","cap"],"homeEcos":["btp","abap","cap"]},{"id":"content:teched-2026-st115","kind":"content","label":"Build real-time event-driven integrations for your enterprise","href":"/content/teched-2026-st115","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-st122","kind":"content","label":"Extending SAP Autonomous Suite","href":"/content/teched-2026-st122","icon":"talk","ecos":["abap","btp","cap","ui5"],"homeEcos":["abap","btp"]},{"id":"content:teched-2026-st124","kind":"content","label":"Strategy for agent-led development in ABAP","href":"/content/teched-2026-st124","icon":"talk","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:teched-2026-st200","kind":"content","label":"The next evolution of SAP Business Data Cloud with Dremio and SAP Reltio","href":"/content/teched-2026-st200","icon":"talk","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-tm100","kind":"content","label":"Speed up your cloud journey with agentic data management and configuration","href":"/content/teched-2026-tm100","icon":"talk","ecos":["btp","abap","cap","commerce","successfactors"],"homeEcos":["btp","abap","cap","commerce","successfactors"]},{"id":"content:teched-2026-tm104","kind":"content","label":"Discover fast-track implementation of SAP Cloud ERP with AI","href":"/content/teched-2026-tm104","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-tm105","kind":"content","label":"Agent-led custom code migration: From planning to mass adaptation","href":"/content/teched-2026-tm105","icon":"talk","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:teched-2026-tm108","kind":"content","label":"The journey with clean core continues for SAP Cloud ERP Private","href":"/content/teched-2026-tm108","icon":"talk","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:teched-2026-tm109","kind":"content","label":"Discover how SAP Joule for Consultants transforms cloud implementations","href":"/content/teched-2026-tm109","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-tm215","kind":"content","label":"From intent to extension: Joule and the future of solution extensibility","href":"/content/teched-2026-tm215","icon":"talk","ecos":["btp","cap","abap"],"homeEcos":["btp","abap"]},{"id":"content:teched-2026-tm260","kind":"content","label":"Migrate and modernize your custom code using RISE with SAP and agentic AI","href":"/content/teched-2026-tm260","icon":"talk","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:teched-2026-tm261","kind":"content","label":"Agent-led test management: Hands-on lab with Joule in SAP Cloud ALM","href":"/content/teched-2026-tm261","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-tm262","kind":"content","label":"Experience core foundational capabilities of SAP Cloud ERP","href":"/content/teched-2026-tm262","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-tm263","kind":"content","label":"AI-accelerated RISE with SAP migration with the system transition workbench","href":"/content/teched-2026-tm263","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-tm265","kind":"content","label":"SAP Joule for Consultants: Unified knowledge for requirements and designs","href":"/content/teched-2026-tm265","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-tm267","kind":"content","label":"Transform your configuration of SAP S/4HANA Cloud with agentic AI","href":"/content/teched-2026-tm267","icon":"talk","ecos":["btp","abap","cap","commerce","successfactors"],"homeEcos":["btp","abap","cap","commerce","successfactors"]},{"id":"content:teched-2026-tm268","kind":"content","label":"Analyze and optimize ABAP Cloud model apps built on core data services","href":"/content/teched-2026-tm268","icon":"talk","ecos":["abap","btp","cap","ui5"],"homeEcos":["abap","btp","cap"]},{"id":"content:teched-2026-tm815","kind":"content","label":"Navigating the road map for SAP Cloud ERP: Today, next, and beyond","href":"/content/teched-2026-tm815","icon":"talk","ecos":["abap","btp"],"homeEcos":["abap","btp"]},{"id":"content:teched-2026-tm817","kind":"content","label":"What's next in extensibility for SAP Autonomous Suite","href":"/content/teched-2026-tm817","icon":"talk","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:teched-2026-tm818","kind":"content","label":"SAP Sovereign Cloud: A path to the cloud for highly regulated businesses","href":"/content/teched-2026-tm818","icon":"talk","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:teched-2026-xp100","kind":"content","label":"Evolving the identity lifecycle for an AI-first future","href":"/content/teched-2026-xp100","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap","ui5"]},{"id":"content:teched-2026-xp101","kind":"content","label":"Building trusted applications on SAP Business AI Platform by design","href":"/content/teched-2026-xp101","icon":"talk","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:teched-2026-xp104","kind":"content","label":"Future-ready access governance from SAP: Strategy and innovation","href":"/content/teched-2026-xp104","icon":"talk","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-xp108","kind":"content","label":"Inside Joule Studio runtime: Agent deployment and integrations","href":"/content/teched-2026-xp108","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-xp112","kind":"content","label":"How SAP secures enterprise AI agents with identity propagation","href":"/content/teched-2026-xp112","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap","ui5"]},{"id":"content:teched-2026-xp113","kind":"content","label":"Build AI agents on SAP and non-SAP data and context in an open lakehouse","href":"/content/teched-2026-xp113","icon":"talk","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-xp160","kind":"content","label":"Enhancing cyber resilience through AI-enabled tabletop exercises","href":"/content/teched-2026-xp160","icon":"talk","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:teched-2026-xp200","kind":"content","label":"Use change and deployment management in an ABAP environment with confidence","href":"/content/teched-2026-xp200","icon":"talk","ecos":["btp","abap","cap","ui5"],"homeEcos":["btp","abap","cap","ui5"]},{"id":"content:teched-2026-xp201","kind":"content","label":"AI-assisted operations: SAP Cloud ALM and SAP Cloud Logging in action","href":"/content/teched-2026-xp201","icon":"talk","ecos":["btp","cap"],"homeEcos":["btp","cap"]},{"id":"content:teched-2026-xp260","kind":"content","label":"Deploy, review, break, fix: Govern cloud transports with agility and AI","href":"/content/teched-2026-xp260","icon":"talk","ecos":["btp","abap","cap"],"homeEcos":["btp","cap"]},{"id":"content:teched-2026-xp263","kind":"content","label":"Identity lifecycle and governance with SAP services and Microsoft Entra","href":"/content/teched-2026-xp263","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap","ui5"]},{"id":"content:teched-2026-xp265","kind":"content","label":"Define, generate, deploy: AI-driven spec-first Terraform","href":"/content/teched-2026-xp265","icon":"talk","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:teched-2026-xp266","kind":"content","label":"Ship your own sandboxed AI operations agent to Kyma in two hours","href":"/content/teched-2026-xp266","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"content:teched-2026-xp822","kind":"content","label":"Road map: SAP Business AI Platform security and SAP Cloud Identity Services","href":"/content/teched-2026-xp822","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap","ui5"]},{"id":"content:teched-2026-xp825","kind":"content","label":"What’s next for the core platform capabilities of SAP Business AI Platform","href":"/content/teched-2026-xp825","icon":"talk","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap","ui5"]},{"id":"content:testing-cap-hana-artifacts-with-jest","kind":"content","label":"Testing your CAP HANA Artifacts with jest – including multitenancy, hdbprocedure and hdbview","href":"/content/testing-cap-hana-artifacts-with-jest","icon":"blog","ecos":["cap","btp","digital-manufacturing","abap"],"homeEcos":["cap","btp","digital-manufacturing","abap"]},{"id":"content:testing-sap-build-process-automation-task-ui-in-bas","kind":"content","label":"Testing SAP Build Process Automation task UI in SAP Business Application Studio","href":"/content/testing-sap-build-process-automation-task-ui-in-bas","icon":"blog","ecos":["btp","ui5"],"homeEcos":["btp","ui5"]},{"id":"content:the-capstone-project-a-journey-from-component-to-cloud","kind":"content","label":"The CAPstone Project: A Journey from Component to Cloud","href":"/content/the-capstone-project-a-journey-from-component-to-cloud","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:the-complete-guide-to-calling-actions-in-ui5-with-custom-code","kind":"content","label":"The Complete Guide to Calling Actions in UI5 with Custom Code","href":"/content/the-complete-guide-to-calling-actions-in-ui5-with-custom-code","icon":"blog","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:the-easiest-way-to-expose-a-cap-nodejs-project-as-an-mcp-server","kind":"content","label":"The Easiest Way to Expose a CAP Node.js Project as an MCP Server","href":"/content/the-easiest-way-to-expose-a-cap-nodejs-project-as-an-mcp-server","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:the-end2end-journey-advocates-service-odata-v2-v4-and-rest","kind":"content","label":"The End2End Journey: Advocates Service – CAP Service, OData V2/4 & REST in One single Project","href":"/content/the-end2end-journey-advocates-service-odata-v2-v4-and-rest","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:the-fastest-way-to-a-deployable-cap-app-on-cloud-foundry","kind":"content","label":"The fastest way to a deployable CAP app on SAP BTP Cloud Foundry","href":"/content/the-fastest-way-to-a-deployable-cap-app-on-cloud-foundry","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:the-fastest-way-to-run-full-stack-applications-in-bas","kind":"content","label":"The fastest and easiest way to run full-stack applications in SAP Business Application Studio","href":"/content/the-fastest-way-to-run-full-stack-applications-in-bas","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:the-fourth-way-to-go-offline-in-ui5-and-why-the-service-worker-stays-dumb","kind":"content","label":"The Fourth Way to Go Offline in UI5 (And Why the Service Worker Stays Dumb)","href":"/content/the-fourth-way-to-go-offline-in-ui5-and-why-the-service-worker-stays-dumb","icon":"blog","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:the-future-of-abap-is-here-vs-code-adt-zero-config-mcp-and-ai-co-pilots","kind":"content","label":"The Future of ABAP is Here: VS Code ADT, Zero-Config MCP, and AI Co-pilots","href":"/content/the-future-of-abap-is-here-vs-code-adt-zero-config-mcp-and-ai-co-pilots","icon":"blog","ecos":["abap","cap","btp","ui5"],"homeEcos":["abap","cap","btp","ui5"]},{"id":"content:the-future-of-continuous-delivery-for-cloud-sdk-and-cap","kind":"content","label":"The Future of Continuous Delivery for SAP Cloud SDK and SAP Cloud Application Programming Model","href":"/content/the-future-of-continuous-delivery-for-cloud-sdk-and-cap","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:the-new-way-to-consume-service-bindings-on-kyma-runtime","kind":"content","label":"The new way to consume Service Bindings on Kyma Runtime","href":"/content/the-new-way-to-consume-service-bindings-on-kyma-runtime","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:the-sap-fiori-elements-feature-showcase-with-cap-cds-annotations","kind":"content","label":"The SAP Fiori elements feature showcase with CAP CDS annotations","href":"/content/the-sap-fiori-elements-feature-showcase-with-cap-cds-annotations","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:tips-and-tricks-for-annotations-in-cap-projects-using-lsp","kind":"content","label":"Tips and Tricks for Working with Annotations in CAP Projects using Language Server Protocol (LSP) capabilities","href":"/content/tips-and-tricks-for-annotations-in-cap-projects-using-lsp","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:tips-for-running-cap-nodejs-in-sap-btp","kind":"content","label":"Tips for running CAP nodejs in SAP BTP","href":"/content/tips-for-running-cap-nodejs-in-sap-btp","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:tips-vs-code-extensions","kind":"content","label":"Tips: VS Code Extensions","href":"/content/tips-vs-code-extensions","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:tree-table-support-in-cap-is-now-generally-available","kind":"content","label":"Tree-Table Support in CAP is Now Generally Available","href":"/content/tree-table-support-in-cap-is-now-generally-available","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:trigger-an-sbpa-workflow-from-cap-with-cap-js-process","kind":"content","label":"Trigger an SAP Build Process Automation Workflow from CAP Using the @cap-js/process Plugin","href":"/content/trigger-an-sbpa-workflow-from-cap-with-cap-js-process","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:triggering-background-jobs-from-rap-actions-a-practical-guide","kind":"content","label":"Triggering Background Jobs from RAP Actions – A Practical Guide","href":"/content/triggering-background-jobs-from-rap-actions-a-practical-guide","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:triggering-sap-build-process-automation-processes-from-cap-apps","kind":"content","label":"Triggering SAP Build Process Automation Processes from SAP Cloud Application Programming (CAP) Apps","href":"/content/triggering-sap-build-process-automation-processes-from-cap-apps","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:troubleshooting-deploying-a-cap-project-to-hana-cloud","kind":"content","label":"Simple steps to deploy your CAP project to HANA cloud","href":"/content/troubleshooting-deploying-a-cap-project-to-hana-cloud","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:turn-sap-apis-into-mcp-tools-for-ai-agents-using-sap-integration-suite-free-tria","kind":"content","label":"Turn SAP APIs into MCP Tools for AI Agents using SAP Integration Suite Free Trial","href":"/content/turn-sap-apis-into-mcp-tools-for-ai-agents-using-sap-integration-suite-free-tria","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:typescript-sheriff-how-can-i-use-typescript-in-the-sap-ecosystem","kind":"content","label":"TypeScript Sheriff: How can I use TypeScript in the SAP ecosystem? (Part 2 of 3)","href":"/content/typescript-sheriff-how-can-i-use-typescript-in-the-sap-ecosystem","icon":"blog","ecos":["cap","ui5"],"homeEcos":["cap","ui5"]},{"id":"content:ui-composition-with-application-frontend-service","kind":"content","label":"UI Composition with Application Frontend Service","href":"/content/ui-composition-with-application-frontend-service","icon":"blog","ecos":["ui5"],"homeEcos":["ui5"],"homeEco":"ui5"},{"id":"content:ui-for-the-btp-application-vulnerability-report","kind":"content","label":"UI for the BTP Application Vulnerability Report","href":"/content/ui-for-the-btp-application-vulnerability-report","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:ui5-ai-features-library-is-now-an-npm-package","kind":"content","label":"UI5 AI Features library is now an npm Package","href":"/content/ui5-ai-features-library-is-now-an-npm-package","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:ui5-has-entered-the-chat-building-interactive-mcp-apps-for-sap","kind":"content","label":"UI5 Has Entered the Chat: Building Interactive MCP Apps for SAP","href":"/content/ui5-has-entered-the-chat-building-interactive-mcp-apps-for-sap","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:ui5-mcp-server-got-extended-for-ui-integration-cards-generation","kind":"content","label":"UI5 MCP Server Got Extended for UI Integration Cards Generation","href":"/content/ui5-mcp-server-got-extended-for-ui-integration-cards-generation","icon":"blog","ecos":["ui5","cap","abap","btp"],"homeEcos":["ui5","abap","btp","cap"]},{"id":"content:ui5-plugins-for-coding-agents-now-supporting-github-copilot","kind":"content","label":"UI5 Plugins for Coding Agents: Now Supporting GitHub Copilot","href":"/content/ui5-plugins-for-coding-agents-now-supporting-github-copilot","icon":"blog","ecos":["ui5","cap","btp","abap","commerce"],"homeEcos":["ui5","cap","btp","abap","commerce"]},{"id":"content:ui5ers-buzz-56-full-stack-ui5-sample-app-with-cap-odata-v4-and-draft","kind":"content","label":"UI5ers Buzz #56: New full-stack UI5 sample app featuring CAP + OData V4 + draft mode","href":"/content/ui5ers-buzz-56-full-stack-ui5-sample-app-with-cap-odata-v4-and-draft","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:understanding-and-developing-fiori-plugins-with-extension-api-typescript","kind":"content","label":"Understanding and Developing Fiori Plugins with Extension API & TypeScript","href":"/content/understanding-and-developing-fiori-plugins-with-extension-api-typescript","icon":"blog","ecos":["ui5","abap","btp"],"homeEcos":["ui5","abap","btp"]},{"id":"content:understanding-csn-and-its-role-in-embedded-analytics","kind":"content","label":"SAP Incentive Management - Understanding of CSN file & CLI Command to generate","href":"/content/understanding-csn-and-its-role-in-embedded-analytics","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:understanding-entity-relationships-in-cds","kind":"content","label":"Understanding entity relationships in CDS","href":"/content/understanding-entity-relationships-in-cds","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:understanding-fuzzy-search-in-sap-fiori-applications","kind":"content","label":"Understanding Fuzzy Search in SAP Fiori Applications","href":"/content/understanding-fuzzy-search-in-sap-fiori-applications","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:understanding-projections-in-capm","kind":"content","label":"Understanding Projections in CAPM: Select Only What You Need!","href":"/content/understanding-projections-in-capm","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:understanding-security-approaches-in-cap-using-xsuaa-nodejs-and-mta","kind":"content","label":"Understanding security approaches in SAP CAP using XSUAA in node.js flavor and MTA.","href":"/content/understanding-security-approaches-in-cap-using-xsuaa-nodejs-and-mta","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:unleashing-abap-potential-an-introduction-to-extension-libraries-xco","kind":"content","label":"Unleashing ABAP Potential: An introduction to Extension Libraries (XCO)","href":"/content/unleashing-abap-potential-an-introduction-to-extension-libraries-xco","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:unlocking-mcp-servers-in-bas-right-now","kind":"content","label":"Don't Wait for SAP: Unlocking MCP Servers in BAS Right Now","href":"/content/unlocking-mcp-servers-in-bas-right-now","icon":"blog","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"content:unlocking-the-power-of-llms-in-cap-llms-txt","kind":"content","label":"⚡Unlocking the Power of LLMs in CAP: Understanding llms.txt and llms-full.txt","href":"/content/unlocking-the-power-of-llms-in-cap-llms-txt","icon":"blog","ecos":["cap","ui5","btp","abap","commerce"],"homeEcos":["cap","ui5","btp","abap","commerce"]},{"id":"content:upload-attachments-in-a-freestyle-ui5-and-cap-app","kind":"content","label":"Upload attachments in a Freestyle UI5 and CAP app","href":"/content/upload-attachments-in-a-freestyle-ui5-and-cap-app","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:upload-data-from-excel-in-cap-nodejs","kind":"content","label":"Upload data from excel in CAP (Node.js)","href":"/content/upload-data-from-excel-in-cap-nodejs","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:uploading-attachments-to-cap-js-attachments-from-an-external-app","kind":"content","label":"Uploading attachment with cap-js/attachment plugins but via External App/Postman","href":"/content/uploading-attachments-to-cap-js-attachments-from-an-external-app","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:usage-of-expand-entity-in-odata-service-consumption-model","kind":"content","label":"Usage of Expand Entity in OData Service Consumption Model","href":"/content/usage-of-expand-entity-in-odata-service-consumption-model","icon":"blog","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"content:use-aspects-associations-and-convert-odata-v4-to-v2-using-proxy","kind":"content","label":"Use Aspects, Association and Convert OData V4 to V2 using Proxy","href":"/content/use-aspects-associations-and-convert-odata-v4-to-v2-using-proxy","icon":"blog","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"content:use-cap-to-do-native-development-on-hana-cloud","kind":"content","label":"SAP BTP Showcase - Use SAP Cloud Application Programming to do Native Development on HANA Cloud","href":"/content/use-cap-to-do-native-development-on-hana-cloud","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:use-datastore-to-avoid-too-many-duplicate-mpl-attachments-in-exception-retries","kind":"content","label":"Use Datastore to avoid too many duplicate MPL attachments in exception retries","href":"/content/use-datastore-to-avoid-too-many-duplicate-mpl-attachments-in-exception-retries","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:use-free-tier-to-create-a-service-instance-for-sap-document-ai","kind":"content","label":"Use Free Tier to Create a Service Instance for SAP Document AI","href":"/content/use-free-tier-to-create-a-service-instance-for-sap-document-ai","icon":"tutorial","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:use-free-tier-to-subscribe-to-sap-document-ai-basic-ui","kind":"content","label":"Use Free Tier to Subscribe to SAP Document AI Basic UI","href":"/content/use-free-tier-to-subscribe-to-sap-document-ai-basic-ui","icon":"tutorial","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap","ui5"]},{"id":"content:use-rest-services-in-graph","kind":"content","label":"Use REST services in Graph","href":"/content/use-rest-services-in-graph","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:use-sap-document-management-service-plugin-in-cap-nodejs","kind":"content","label":"Use SAP Document Management Service Plugin In CAP NODEJS Step by Step Guidance","href":"/content/use-sap-document-management-service-plugin-in-cap-nodejs","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:use-the-destination-service-in-nodejs-locally","kind":"content","label":"Use SCP CF Destination service in NodeJs locally","href":"/content/use-the-destination-service-in-nodejs-locally","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"content:use-typescript-with-the-sap-cloud-application-programming-model","kind":"content","label":"Use TypeScript with the SAP Cloud Application Programming Model","href":"/content/use-typescript-with-the-sap-cloud-application-programming-model","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:useful-cap-cds-and-fiori-commands-to-accelerate-development-and-deployment","kind":"content","label":"Useful CAP CDS and Fiori Commands to Accelerate Development and Deployment","href":"/content/useful-cap-cds-and-fiori-commands-to-accelerate-development-and-deployment","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:using-apache-kafka-for-messaging-in-cap-part-1","kind":"content","label":"Using Apache Kafka for messaging in the SAP Cloud Application Programming Model (CAP) – Part 1/2","href":"/content/using-apache-kafka-for-messaging-in-cap-part-1","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:using-apache-kafka-for-messaging-in-cap-part-2","kind":"content","label":"Using Apache Kafka for messaging in the SAP Cloud Application Programming Model (CAP) – Part 2/2","href":"/content/using-apache-kafka-for-messaging-in-cap-part-2","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:using-btp-document-extraction-service-into-actual-app-development","kind":"content","label":"Using BTP Document Extraction Service into actual App development","href":"/content/using-btp-document-extraction-service-into-actual-app-development","icon":"blog","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:using-claude-for-sap-abap-development-on-rfc-only-saprouter-systems-even-ecc-r-3","kind":"content","label":"Using Claude for SAP ABAP development on RFC-only / SAProuter systems (even ECC R/3)","href":"/content/using-claude-for-sap-abap-development-on-rfc-only-saprouter-systems-even-ecc-r-3","icon":"blog","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"content:using-cloud-sdk-for-ai-in-a-commonjs-cap-project","kind":"content","label":"How to use Cloud SDK for AI in an existing CAP NodeJS Project in CommonJS","href":"/content/using-cloud-sdk-for-ai-in-a-commonjs-cap-project","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:using-communication-targets-for-outbound-rfc-communication-in-abap","kind":"content","label":"Using Communication Targets for Outbound RFC Communication in ABAP","href":"/content/using-communication-targets-for-outbound-rfc-communication-in-abap","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:using-github-actions-to-deploy-a-cap-app-mta","kind":"content","label":"Using Github Actions to Deploy a CAP App (MTA)","href":"/content/using-github-actions-to-deploy-a-cap-app-mta","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:using-hana-clouds-vector-embedding-function-in-cap","kind":"content","label":"Using HANA Cloud’s \"VECTOR_EMBEDDING\" Function in CAP","href":"/content/using-hana-clouds-vector-embedding-function-in-cap","icon":"blog","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"content:using-postgresql-database-in-cloud-application-programming-model","kind":"content","label":"Using Postgresql Database in Cloud Application Programming model","href":"/content/using-postgresql-database-in-cloud-application-programming-model","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:using-postman-for-api-testing-with-xsuaa","kind":"content","label":"Using Postman for API Testing with XSUAA","href":"/content/using-postman-for-api-testing-with-xsuaa","icon":"blog","ecos":["cap","btp","abap","digital-manufacturing"],"homeEcos":["cap","btp","abap","digital-manufacturing"]},{"id":"content:using-rfc-function-modules-and-bapis-in-sap-build-process-automation","kind":"content","label":"Using RFC Function Modules and BAPIs in SAP Build Process Automation","href":"/content/using-rfc-function-modules-and-bapis-in-sap-build-process-automation","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:using-sap-hana-tools-with-cap-projects-in-bas","kind":"content","label":"SAP Business Application Studio – Using SAP HANA Tools with SAP Cloud Application Programming Model projects","href":"/content/using-sap-hana-tools-with-cap-projects-in-bas","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:using-sap-managed-iflows-for-time-series-data-integration-in-sap-ibp-part-1-read","kind":"content","label":"Using SAP managed iFlows for Time series data Integration in SAP IBP – Part 1 - Reading data","href":"/content/using-sap-managed-iflows-for-time-series-data-integration-in-sap-ibp-part-1-read","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:using-sap-managed-iflows-for-time-series-data-integration-in-sap-ibp-part-2-writ","kind":"content","label":"Using SAP managed iFlows for Time series data Integration in SAP IBP – Part 2 - Writing data","href":"/content/using-sap-managed-iflows-for-time-series-data-integration-in-sap-ibp-part-2-writ","icon":"blog","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"content:using-the-sap-approuter-at-dev-time","kind":"content","label":"SAP Tech Bytes: Using the SAP Approuter at dev time - a full-stack journey with UI5 and CAP","href":"/content/using-the-sap-approuter-at-dev-time","icon":"blog","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","abap"]},{"id":"content:using-the-terraform-provider-for-btp-to-simplify-tenant-onboarding","kind":"content","label":"Using the Terraform Provider for SAP BTP to simplify Subscriber Tenant Onboarding","href":"/content/using-the-terraform-provider-for-btp-to-simplify-tenant-onboarding","icon":"blog","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"content:using-the-ui5-mockserver-for-client-specific-data-and-testing","kind":"content","label":"Using the UI5 Mockserver for Client-Specific Data and Testing","href":"/content/using-the-ui5-mockserver-for-client-specific-data-and-testing","icon":"blog","ecos":["cap","abap","ui5"],"homeEcos":["cap","abap","ui5"]},{"id":"content:visualizing-your-sap-bill-of-materials-using-cap-and-fiori-elements","kind":"content","label":"Visualizing Your SAP Bill of Materials Using CAP, Fiori elements, and the UI5 Network Graph","href":"/content/visualizing-your-sap-bill-of-materials-using-cap-and-fiori-elements","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:vs-code-tasks-to-start-a-cds-service-an-approuter-and-a-browser","kind":"content","label":"Use Tasks in Visual Studio Code to start a cds service, an approuter and launch a browser in one go","href":"/content/vs-code-tasks-to-start-a-cds-service-an-approuter-and-a-browser","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:websocket-rfc-to-cloud-using-sap-business-connector","kind":"content","label":"WebSocket RFC to Cloud Using SAP Business Connector","href":"/content/websocket-rfc-to-cloud-using-sap-business-connector","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:what-a-second-document-ai-workshop-taught-me-about-governance","kind":"content","label":"What a Second Document AI Workshop Taught Me About Governance","href":"/content/what-a-second-document-ai-workshop-taught-me-about-governance","icon":"blog","ecos":["btp","cap","ui5"],"homeEcos":["btp","cap","ui5"]},{"id":"content:what-an-ai-infra-engineer-sees-when-opening-sap-s-ai-stack-1-3-the-model-gateway","kind":"content","label":"What an AI infra engineer sees when opening SAP's AI stack (1/3): the model gateway","href":"/content/what-an-ai-infra-engineer-sees-when-opening-sap-s-ai-stack-1-3-the-model-gateway","icon":"blog","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"content:what-happens-to-your-data-when-you-enable-sap-s-ai-features","kind":"content","label":"What Happens to Your Data When You Enable SAP's AI Features?","href":"/content/what-happens-to-your-data-when-you-enable-sap-s-ai-features","icon":"blog","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"content:what-s-new-in-mobile-development-kit-client-26-9","kind":"content","label":"What’s new in Mobile development kit client 26.9","href":"/content/what-s-new-in-mobile-development-kit-client-26-9","icon":"blog","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"content:what-s-new-in-sap-cloud-application-programming-model-september-2026","kind":"content","label":"What's new in SAP Cloud Application Programming Model – September 2026","href":"/content/what-s-new-in-sap-cloud-application-programming-model-september-2026","icon":"blog","ecos":["cap","btp","abap","ui5","commerce"],"homeEcos":["cap","btp","abap","ui5","commerce"]},{"id":"content:whats-new-in-cap-january-2026","kind":"content","label":"What's new in SAP Cloud Application Programming Model – January 2026","href":"/content/whats-new-in-cap-january-2026","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5"]},{"id":"content:whats-new-in-cap-november-2025","kind":"content","label":"What's new in SAP Cloud Application Programming Model – November 2025","href":"/content/whats-new-in-cap-november-2025","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5"]},{"id":"content:whats-new-in-cap-september-2025","kind":"content","label":"What's new in SAP Cloud Application Programming Model – September 2025","href":"/content/whats-new-in-cap-september-2025","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5"]},{"id":"content:where-ord-is-used-in-sap-datasphere-sap-business-data-cloud-sap-databricks","kind":"content","label":"Where ORD Is Used in SAP Datasphere, SAP Business Data Cloud & SAP Databricks","href":"/content/where-ord-is-used-in-sap-datasphere-sap-business-data-cloud-sap-databricks","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:why-developers-should-care-about-credential-types-for-xsuaa","kind":"content","label":"Why developers should care about credential-types for xsuaa?","href":"/content/why-developers-should-care-about-credential-types-for-xsuaa","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:why-our-first-document-ai-exercise-was-a-r-sum-not-an-invoice","kind":"content","label":"Why Our First Document AI Exercise Was a Résumé, Not an Invoice","href":"/content/why-our-first-document-ai-exercise-was-a-r-sum-not-an-invoice","icon":"blog","ecos":["btp","cap","ui5"],"homeEcos":["btp","cap","ui5"]},{"id":"content:why-sap-cloud-identity-matters-for-sap-task-center-it-s-about-trust-and-global-u","kind":"content","label":"Why SAP Cloud Identity Matters for SAP Task Center: It’s About Trust and Global User ID","href":"/content/why-sap-cloud-identity-matters-for-sap-task-center-it-s-about-trust-and-global-u","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:workflow-development-using-cap-and-sap-build-process-automation","kind":"content","label":"Workflow development using SAP Cloud Application Programming Model and SAP Build Process Automation","href":"/content/workflow-development-using-cap-and-sap-build-process-automation","icon":"blog","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"content:working-with-the-attachment-plugin-cloud-application-programming","kind":"content","label":"Working with the Attachment plugin - Cloud Application Programming","href":"/content/working-with-the-attachment-plugin-cloud-application-programming","icon":"blog","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"content:xml-annotations-the-essentials-before-adapting-documentation-samples","kind":"content","label":"XML Annotations: The Essentials Before Adapting Documentation Samples to Your Project","href":"/content/xml-annotations-the-essentials-before-adapting-documentation-samples","icon":"blog","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"content:xsuaa-attribute-based-vs-authority-based-configuration","kind":"content","label":"SAP BTP XSUAA Security Configuration Comparison: Attribute-Based vs. Authority-Based Approaches","href":"/content/xsuaa-attribute-based-vs-authority-based-configuration","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"content:xsuaa-based-authentication-using-managed-approuter","kind":"content","label":"XSUAA Based Authentication - Using Managed Approuter","href":"/content/xsuaa-based-authentication-using-managed-approuter","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:xsuaa-based-authentication-using-standalone-approuter","kind":"content","label":"XSUAA Based Authentication - Using Standalone Approuter","href":"/content/xsuaa-based-authentication-using-standalone-approuter","icon":"blog","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"content:xsuaa-local-testing","kind":"content","label":"XSUAA Local Testing","href":"/content/xsuaa-local-testing","icon":"blog","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"actor:lutzi3","kind":"actor","label":"Lutzi3","href":"/actors/lutzi3","icon":"actor","initials":"L","avatar":"/avatars/lutzi3.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"actor:guilherme-segantini","kind":"actor","label":"Guilherme Segantini","href":"/actors/guilherme-segantini","icon":"actor","initials":"GS","avatar":"/avatars/guilherme-segantini.png","ecos":["cap","abap","ui5","btp","commerce"],"homeEcos":["cap","abap","ui5","btp","commerce"]},{"id":"actor:mponce","kind":"actor","label":"Mario Ponce","href":"/actors/mponce","icon":"actor","initials":"MP","avatar":"/avatars/mponce.png","ecos":["cap","abap","ui5","btp","commerce"],"homeEcos":["cap","abap","ui5","btp","commerce"]},{"id":"actor:jung-thomas","kind":"actor","label":"Thomas Jung","href":"/actors/jung-thomas","icon":"actor","initials":"TJ","avatar":"/avatars/jung-thomas.png","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"actor:rupamaity","kind":"actor","label":"rupamaity","href":"/actors/rupamaity","icon":"actor","initials":"R","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"actor:palak","kind":"actor","label":"Palak","href":"/actors/palak","icon":"actor","initials":"P","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"actor:ayhamt","kind":"actor","label":"AyhamT","href":"/actors/ayhamt","icon":"actor","initials":"A","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"actor:dj-adams","kind":"actor","label":"DJ Adams","href":"/actors/dj-adams","icon":"actor","initials":"DA","ring":"sap-official","avatar":"/avatars/dj-adams.png","ecos":["cap","abap","ui5","btp","commerce"],"homeEcos":["cap","abap","ui5","btp","commerce"]},{"id":"actor:ajitkp91","kind":"actor","label":"Ajit Kumar Panda","href":"/actors/ajitkp91","icon":"actor","initials":"AKP","avatar":"/avatars/ajitkp91.png","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"actor:pandayo","kind":"actor","label":"Lukas Schwabe","href":"/actors/pandayo","icon":"actor","initials":"LS","avatar":"/avatars/pandayo.png","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"actor:michal-majer","kind":"actor","label":"Michał Majer","href":"/actors/michal-majer","icon":"actor","initials":"MM","ring":"independent","avatar":"/avatars/michal-majer.png","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"actor:daniilbolobonov","kind":"actor","label":"Daniil Bolobonov","href":"/actors/daniilbolobonov","icon":"actor","initials":"DB","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"actor:vl-leon","kind":"actor","label":"Vladislav Leonkev","href":"/actors/vl-leon","icon":"actor","initials":"VL","avatar":"/avatars/vl-leon.png","ecos":["cap","btp","digital-manufacturing"],"homeEcos":["cap","btp","digital-manufacturing"]},{"id":"actor:sirsimon04","kind":"actor","label":"Simon Engel","href":"/actors/sirsimon04","icon":"actor","initials":"SE","avatar":"/avatars/sirsimon04.png","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"actor:stefanrudi","kind":"actor","label":"Stefan Rudi","href":"/actors/stefanrudi","icon":"actor","initials":"SR","avatar":"/avatars/stefanrudi.png","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"actor:danschlachter","kind":"actor","label":"Daniel Schlachter","href":"/actors/danschlachter","icon":"actor","initials":"DS","ring":"sap-official","avatar":"/avatars/danschlachter.png","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"actor:chrisobar","kind":"actor","label":"chrisobar","href":"/actors/chrisobar","icon":"actor","initials":"C","ring":"independent","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"actor:walteraguerom","kind":"actor","label":"Walter Andres Aguero Machado","href":"/actors/walteraguerom","icon":"actor","initials":"WAA","ring":"partner","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5"]},{"id":"actor:dragolea","kind":"actor","label":"Daniel Dragolea","href":"/actors/dragolea","icon":"actor","initials":"DD","avatar":"/avatars/dragolea.png","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"actor:fabianfellhauer","kind":"actor","label":"Fabian Fellhauer","href":"/actors/fabianfellhauer","icon":"actor","initials":"FF","avatar":"/avatars/fabianfellhauer.png","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"actor:saranyasampath","kind":"actor","label":"SaranyaSampath","href":"/actors/saranyasampath","icon":"actor","initials":"S","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"actor:siddhartharouth","kind":"actor","label":"Siddhartha Routh","href":"/actors/siddhartharouth","icon":"actor","initials":"SR","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"actor:rashmiangadi","kind":"actor","label":"rashmiangadi","href":"/actors/rashmiangadi","icon":"actor","initials":"R","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"actor:birgits","kind":"actor","label":"BirgitS","href":"/actors/birgits","icon":"actor","initials":"B","ecos":["cap","ui5","abap","btp","commerce"],"homeEcos":["cap","ui5","abap","btp","commerce"]},{"id":"actor:hari-kumar-talari","kind":"actor","label":"Talari Hari Kumar","href":"/actors/hari-kumar-talari","icon":"actor","initials":"THK","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"actor:grego952","kind":"actor","label":"Grzegorz Karaluch","href":"/actors/grego952","icon":"actor","initials":"GK","avatar":"/avatars/grego952.png","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"actor:lnoenssap","kind":"actor","label":"Ludo Noens","href":"/actors/lnoenssap","icon":"actor","initials":"LN","avatar":"/avatars/lnoenssap.png","ecos":["btp","cap","ui5"],"homeEcos":["btp","cap","ui5"]},{"id":"actor:anarguri","kind":"actor","label":"Andreas Riehl","href":"/actors/anarguri","icon":"actor","initials":"AR","avatar":"/avatars/anarguri.png","ecos":["abap","btp"],"homeEcos":["abap","btp"]},{"id":"actor:uenal-akkaya","kind":"actor","label":"Uenal Akkaya","href":"/actors/uenal-akkaya","icon":"actor","initials":"UA","avatar":"/avatars/uenal-akkaya.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"actor:mkemeter","kind":"actor","label":"Mathias Kemeter","href":"/actors/mkemeter","icon":"actor","initials":"MK","avatar":"/avatars/mkemeter.png","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"actor:nkaputnik","kind":"actor","label":"Nick Josipovic","href":"/actors/nkaputnik","icon":"actor","initials":"NJ","avatar":"/avatars/nkaputnik.png","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"actor:danjoa","kind":"actor","label":"Daniel Hutzel","href":"/actors/danjoa","icon":"actor","initials":"DH","ring":"sap-official","avatar":"/avatars/danjoa.png","ecos":["cap","btp","abap","ui5","commerce"],"homeEcos":["cap","btp","abap","ui5","commerce"]},{"id":"actor:sygyzmundovych","kind":"actor","label":"Vitaliy Rudnytskiy","href":"/actors/sygyzmundovych","icon":"actor","initials":"VR","avatar":"/avatars/sygyzmundovych.png","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"actor:smarchesini-avvale","kind":"actor","label":"Sebastiano Marchesini","href":"/actors/smarchesini-avvale","icon":"actor","initials":"SM","avatar":"/avatars/smarchesini-avvale.png","ecos":["cap","btp","abap","ui5","digital-manufacturing"],"homeEcos":["cap","btp","abap","ui5","digital-manufacturing"]},{"id":"actor:anfisc","kind":"actor","label":"Andre Fischer","href":"/actors/anfisc","icon":"actor","initials":"AF","avatar":"/avatars/anfisc.png","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"actor:olgadolinskaja","kind":"actor","label":"olgadolinskaja","href":"/actors/olgadolinskaja","icon":"actor","initials":"O","avatar":"/avatars/olgadolinskaja.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"actor:ashutosh-ksingh","kind":"actor","label":"Ashutosh Kumar Singh","href":"/actors/ashutosh-ksingh","icon":"actor","initials":"AKS","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"actor:mariusfreitag","kind":"actor","label":"Marius Freitag","href":"/actors/mariusfreitag","icon":"actor","initials":"MF","avatar":"/avatars/mariusfreitag.png","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"actor:prajnaparmita","kind":"actor","label":"prajnaparmita","href":"/actors/prajnaparmita","icon":"actor","initials":"P","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"actor:willempardaens","kind":"actor","label":"Willem Pardaens","href":"/actors/willempardaens","icon":"actor","initials":"WP","avatar":"/avatars/willempardaens.png","ecos":["cap","abap","btp"],"homeEcos":["cap","abap","btp"]},{"id":"actor:ale-biagi","kind":"actor","label":"Alessandro Biagi","href":"/actors/ale-biagi","icon":"actor","initials":"AB","avatar":"/avatars/ale-biagi.png","ecos":["cap","abap","btp","ui5"],"homeEcos":["cap","abap","btp","ui5"]},{"id":"actor:kaztakata","kind":"actor","label":"Kazuhiko Takata","href":"/actors/kaztakata","icon":"actor","initials":"KT","ring":"independent","avatar":"/avatars/kaztakata.png","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"actor:sandraros","kind":"actor","label":"sandraros","href":"/actors/sandraros","icon":"actor","initials":"S","avatar":"/avatars/sandraros.png","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"actor:cfg74","kind":"actor","label":"Christoph Gollmick","href":"/actors/cfg74","icon":"actor","initials":"CG","avatar":"/avatars/cfg74.png","ecos":["ui5","cap","abap","btp"],"homeEcos":["ui5","abap","btp","cap"]},{"id":"actor:nacho-munoz","kind":"actor","label":"Nacho Muñoz Álvarez","href":"/actors/nacho-munoz","icon":"actor","initials":"NMÁ","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"actor:leoirudayam","kind":"actor","label":"leoirudayam","href":"/actors/leoirudayam","icon":"actor","initials":"L","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap"]},{"id":"actor:randombyte","kind":"actor","label":"Merlin Beutlberger","href":"/actors/randombyte","icon":"actor","initials":"MB","avatar":"/avatars/randombyte.png","ecos":["ui5","cap","abap","btp"],"homeEcos":["ui5","abap","btp","cap"]},{"id":"actor:azhariqbal","kind":"actor","label":"azhariqbal","href":"/actors/azhariqbal","icon":"actor","initials":"A","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"actor:volkersaggau","kind":"actor","label":"Volker Saggau","href":"/actors/volkersaggau","icon":"actor","initials":"VS","avatar":"/avatars/volkersaggau.png","ecos":["btp","abap","ui5","cap"],"homeEcos":["btp","abap","ui5","cap"]},{"id":"actor:frank-xie","kind":"actor","label":"frank_xie","href":"/actors/frank-xie","icon":"actor","initials":"F","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5","abap","btp"]},{"id":"actor:arleytm","kind":"actor","label":"Arley Triana Morin","href":"/actors/arleytm","icon":"actor","initials":"ATM","avatar":"/avatars/arleytm.png","ecos":["cap","abap"],"homeEcos":["cap","abap"]},{"id":"actor:sarfaraz-musa-shaikh","kind":"actor","label":"Sarfaraz_Musa_Shaikh","href":"/actors/sarfaraz-musa-shaikh","icon":"actor","initials":"S","ring":"partner","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"actor:shiromani-soni1","kind":"actor","label":"shiromani_soni1","href":"/actors/shiromani-soni1","icon":"actor","initials":"S","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"actor:flovogt","kind":"actor","label":"Florian Vogt","href":"/actors/flovogt","icon":"actor","initials":"FV","avatar":"/avatars/flovogt.png","ecos":["cap","ui5","btp","abap","commerce"],"homeEcos":["cap","ui5","btp","abap","commerce"]},{"id":"actor:alperdedeoglu","kind":"actor","label":"Alper Dedeoglu","href":"/actors/alperdedeoglu","icon":"actor","initials":"AD","avatar":"/avatars/alperdedeoglu.png","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"actor:davidtill","kind":"actor","label":"davidtill","href":"/actors/davidtill","icon":"actor","initials":"D","ecos":["cap","ui5","abap","btp"],"homeEcos":["cap","ui5"]},{"id":"actor:piyush-003","kind":"actor","label":"Piyush_003","href":"/actors/piyush-003","icon":"actor","initials":"P","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"actor:hector-enriquez","kind":"actor","label":"Héctor Enríquez","href":"/actors/hector-enriquez","icon":"actor","initials":"HE","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"actor:carinetd","kind":"actor","label":"Carine Tchoutouo Djomo","href":"/actors/carinetd","icon":"actor","initials":"CTD","avatar":"/avatars/carinetd.png","ecos":["abap"],"homeEcos":["abap"],"homeEco":"abap"},{"id":"actor:maxstreifeneder","kind":"actor","label":"Max Streifeneder","href":"/actors/maxstreifeneder","icon":"actor","initials":"MS","avatar":"/avatars/maxstreifeneder.png","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"actor:fath-markus","kind":"actor","label":"Markus Fath","href":"/actors/fath-markus","icon":"actor","initials":"MF","avatar":"/avatars/fath-markus.png","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"actor:thomham","kind":"actor","label":"Thomas Hammer","href":"/actors/thomham","icon":"actor","initials":"TH","avatar":"/avatars/thomham.png","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"actor:manisha-debnath","kind":"actor","label":"Manisha Debnath","href":"/actors/manisha-debnath","icon":"actor","initials":"MD","ecos":["btp","abap","cap"],"homeEcos":["btp","abap","cap"]},{"id":"actor:udo-paltzer","kind":"actor","label":"Udo Paltzer","href":"/actors/udo-paltzer","icon":"actor","initials":"UP","ring":"sap-official","ecos":["btp","abap","cap"],"homeEcos":["btp","abap","cap"]},{"id":"actor:shilpa-vij","kind":"actor","label":"Shilpa Vij","href":"/actors/shilpa-vij","icon":"actor","initials":"SV","ring":"sap-official","ecos":["btp","abap","cap"],"homeEcos":["btp","abap"]},{"id":"actor:joaquinrecio","kind":"actor","label":"Joaquin Recio Huertas","href":"/actors/joaquinrecio","icon":"actor","initials":"JRH","avatar":"/avatars/joaquinrecio.png","ecos":["btp","cap"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"actor:stefan0816","kind":"actor","label":"Stefan Engelhardt","href":"/actors/stefan0816","icon":"actor","initials":"SE","avatar":"/avatars/stefan0816.png","ecos":["cap","btp","ui5","abap"],"homeEcos":["cap","btp","ui5","abap"]},{"id":"actor:frij-aws","kind":"actor","label":"Jon Friesen","href":"/actors/frij-aws","icon":"actor","initials":"JF","avatar":"/avatars/frij-aws.png","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"actor:davidkna-sap","kind":"actor","label":"David Knaack","href":"/actors/davidkna-sap","icon":"actor","initials":"DK","avatar":"/avatars/davidkna-sap.png","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"actor:sschmidt","kind":"actor","label":"Sebastian Schmidt","href":"/actors/sschmidt","icon":"actor","initials":"SS","avatar":"/avatars/sschmidt.png","ecos":["btp","cap","abap"],"homeEcos":["btp","cap","abap"]},{"id":"actor:sapgunnar","kind":"actor","label":"Gunnar Kosche","href":"/actors/sapgunnar","icon":"actor","initials":"GK","avatar":"/avatars/sapgunnar.png","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap","ui5"]},{"id":"actor:thsandfuchs","kind":"actor","label":"Thorsten Sandfuchs","href":"/actors/thsandfuchs","icon":"actor","initials":"TS","avatar":"/avatars/thsandfuchs.png","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"actor:lechnerc77","kind":"actor","label":"Christian Lechner","href":"/actors/lechnerc77","icon":"actor","initials":"CL","avatar":"/avatars/lechnerc77.png","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap"]},{"id":"actor:fwilhe","kind":"actor","label":"Florian Wilhelm","href":"/actors/fwilhe","icon":"actor","initials":"FW","avatar":"/avatars/fwilhe.png","ecos":["cap","btp"],"homeEcos":["cap","btp"]},{"id":"actor:claudiacsrosalino","kind":"actor","label":"claudiacsrosalino","href":"/actors/claudiacsrosalino","icon":"actor","initials":"C","ring":"sap-official","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"actor:juliana-morais","kind":"actor","label":"Juliana Morais","href":"/actors/juliana-morais","icon":"actor","initials":"JM","avatar":"/avatars/juliana-morais.png","ecos":["btp","cap","abap","ui5"],"homeEcos":["btp","cap","abap","ui5"]},{"id":"actor:arunkrishnamoorthy","kind":"actor","label":"Arun Krishnamoorthy","href":"/actors/arunkrishnamoorthy","icon":"actor","initials":"AK","ring":"partner","avatar":"/avatars/arunkrishnamoorthy.png","ecos":["cap","btp","abap","ui5"],"homeEcos":["cap","btp","abap","ui5"]},{"id":"actor:jitendrakansal","kind":"actor","label":"JITENDRA KANSAL","href":"/actors/jitendrakansal","icon":"actor","initials":"JK","avatar":"/avatars/jitendrakansal.png","ecos":["btp"],"homeEcos":["btp"],"homeEco":"btp"},{"id":"source:capire","kind":"source","label":"capire","href":"/sources/capire","icon":"source","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"source:architecture-center","kind":"source","label":"SAP Architecture Center","href":"/sources/architecture-center","icon":"source","ecos":["cap","btp","abap","ui5","commerce","digital-manufacturing"],"homeEcos":["cap","btp","abap","ui5","commerce","digital-manufacturing"]},{"id":"source:sap-community","kind":"source","label":"SAP Community","href":"/sources/sap-community","icon":"source","ecos":["cap","btp","abap","ui5","commerce","digital-manufacturing"],"homeEcos":["cap","btp","abap","ui5","commerce","digital-manufacturing"]},{"id":"source:sap-developers","kind":"source","label":"SAP Developer Center","href":"/sources/sap-developers","icon":"source","ecos":["cap","btp","ui5","abap","digital-manufacturing"],"homeEcos":["cap","btp","ui5","abap","digital-manufacturing"]},{"id":"source:sap-help","kind":"source","label":"SAP Help Portal","href":"/sources/sap-help","icon":"source","ecos":["cap","btp","abap"],"homeEcos":["cap","btp","abap"]},{"id":"source:zeis","kind":"source","label":"blog.zeis.de — Marian Zeis","href":"/sources/zeis","icon":"source","ecos":["btp","abap","cap","ui5"],"homeEcos":["btp","cap","abap","ui5"]},{"id":"source:software-heroes","kind":"source","label":"Software-Heroes","href":"/sources/software-heroes","icon":"source","ecos":["abap","cap","ui5","btp"],"homeEcos":["abap","cap","ui5","btp"]},{"id":"source:youtube","kind":"source","label":"YouTube — SAP Developers playlists","href":"/sources/youtube","icon":"source","ecos":["cap","btp","abap","ui5","commerce","digital-manufacturing","successfactors"],"homeEcos":["cap","btp","abap","ui5","commerce","digital-manufacturing","successfactors"]},{"id":"source:btp-ai-best-practices","kind":"source","label":"SAP BTP AI Best Practices","href":"/sources/btp-ai-best-practices","icon":"source","ecos":["cap","ui5","btp","abap"],"homeEcos":["cap","ui5","btp","abap"]},{"id":"source:qiita","kind":"source","label":"Qiita","href":"/sources/qiita","icon":"source","ecos":["cap","ui5","abap"],"homeEcos":["cap","ui5","abap"]},{"id":"source:kernich","kind":"source","label":"kernich.de","href":"/sources/kernich","icon":"source","ecos":["ui5","abap","btp"],"homeEcos":["ui5","abap","btp"]},{"id":"source:sap-teched","kind":"source","label":"SAP TechEd — session catalogue","href":"/sources/sap-teched","icon":"source","ecos":["cap","ui5","abap","btp","digital-manufacturing","commerce","successfactors"],"homeEcos":["cap","ui5","abap","btp","digital-manufacturing","commerce","successfactors"]},{"id":"source:heliconia-labs","kind":"source","label":"Heliconia Labs","href":"/sources/heliconia-labs","icon":"source","ecos":["cap","abap","ui5","btp"],"homeEcos":["cap","abap","ui5","btp"]},{"id":"instrument:sap-api-policy-v4-2026a","kind":"instrument","label":"SAP API Policy 4.2026a","href":"/instruments/sap-api-policy-v4-2026a","icon":"instrument","ecos":["abap","btp","cap","ui5","commerce","successfactors"],"homeEcos":["abap","btp","cap","ui5","commerce","successfactors"]},{"id":"instrument:sap-developer-license-3-1","kind":"instrument","label":"SAP Developer License Agreement 3.1","href":"/instruments/sap-developer-license-3-1","icon":"instrument","ecos":["cap"],"homeEcos":["cap"],"homeEco":"cap"},{"id":"instrument:sap-developer-license-3-2-cap","kind":"instrument","label":"SAP Developer License Agreement 3.2 CAP","href":"/instruments/sap-developer-license-3-2-cap","icon":"instrument","ecos":["btp","abap","cap","commerce","successfactors","ui5"],"homeEcos":["btp","abap","cap","commerce","successfactors","ui5"]},{"id":"instrument:sap-developer-license-3-2","kind":"instrument","label":"SAP Developer License Agreement 3.2","href":"/instruments/sap-developer-license-3-2","icon":"instrument"}],"links":[{"source":"capability:abap-classic-ui","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:abap-clean-code","target":"domain:learning-and-reference","kind":"in"},{"source":"capability:abap-cloud-readiness","target":"domain:operations-and-runtime","kind":"in"},{"source":"capability:abap-code-formatting","target":"domain:developer-experience","kind":"in"},{"source":"capability:abap-code-review","target":"domain:developer-experience","kind":"in"},{"source":"capability:abap-data-browsing","target":"domain:developer-experience","kind":"in"},{"source":"capability:abap-extensibility","target":"domain:operations-and-runtime","kind":"in"},{"source":"capability:abap-service-testing","target":"domain:developer-experience","kind":"in"},{"source":"capability:abap-source-control","target":"domain:developer-experience","kind":"in"},{"source":"capability:abap-static-analysis","target":"domain:developer-experience","kind":"in"},{"source":"capability:abap-transactional-model","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:abap-ui-from-abap","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:abap-unit-testing","target":"domain:developer-experience","kind":"in"},{"source":"capability:accessibility","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:account-provisioning","target":"domain:operations-and-runtime","kind":"in"},{"source":"capability:agent-code-access","target":"domain:ai-and-agents","kind":"in"},{"source":"capability:agent-evals","target":"domain:ai-and-agents","kind":"in"},{"source":"capability:agent-guidance","target":"domain:ai-and-agents","kind":"in"},{"source":"capability:agent-systems-access","target":"domain:ai-and-agents","kind":"in"},{"source":"capability:agent-tooling","target":"domain:ai-and-agents","kind":"in"},{"source":"capability:agent-workspaces","target":"domain:ai-and-agents","kind":"in"},{"source":"capability:analytic-modelling","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:analytical-models","target":"domain:protocols-and-apis","kind":"in"},{"source":"capability:analytical-queries","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:app-hosting","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:application-runtimes","target":"domain:operations-and-runtime","kind":"in"},{"source":"capability:architecture-diagrams","target":"domain:developer-experience","kind":"in"},{"source":"capability:async-processing","target":"domain:integration-and-messaging","kind":"in"},{"source":"capability:attachments","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:audit-logging","target":"domain:security-and-compliance","kind":"in"},{"source":"capability:authentication","target":"domain:security-and-compliance","kind":"in"},{"source":"capability:authorization","target":"domain:security-and-compliance","kind":"in"},{"source":"capability:b2b-message-mapping","target":"domain:integration-and-messaging","kind":"in"},{"source":"capability:caching","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:certificate-management","target":"domain:security-and-compliance","kind":"in"},{"source":"capability:change-promotion","target":"domain:operations-and-runtime","kind":"in"},{"source":"capability:change-tracking","target":"domain:security-and-compliance","kind":"in"},{"source":"capability:ci-cd","target":"domain:developer-experience","kind":"in"},{"source":"capability:code-metrics","target":"domain:developer-experience","kind":"in"},{"source":"capability:code-search","target":"domain:developer-experience","kind":"in"},{"source":"capability:concurrency-control","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:configuration","target":"domain:operations-and-runtime","kind":"in"},{"source":"capability:consumption-monitoring","target":"domain:operations-and-runtime","kind":"in"},{"source":"capability:content-filtering","target":"domain:ai-and-agents","kind":"in"},{"source":"capability:data-cataloguing","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:data-import-export","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:data-masking","target":"domain:ai-and-agents","kind":"in"},{"source":"capability:data-modelling","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:data-privacy","target":"domain:security-and-compliance","kind":"in"},{"source":"capability:database-administration","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:database-connectors","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:debugging","target":"domain:developer-experience","kind":"in"},{"source":"capability:dependency-injection","target":"domain:developer-experience","kind":"in"},{"source":"capability:deployment-operator","target":"domain:operations-and-runtime","kind":"in"},{"source":"capability:deployment","target":"domain:operations-and-runtime","kind":"in"},{"source":"capability:destinations","target":"domain:integration-and-messaging","kind":"in"},{"source":"capability:document-extraction","target":"domain:ai-and-agents","kind":"in"},{"source":"capability:document-output","target":"domain:integration-and-messaging","kind":"in"},{"source":"capability:documentation","target":"domain:learning-and-reference","kind":"in"},{"source":"capability:draft-handling","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:editor-support","target":"domain:developer-experience","kind":"in"},{"source":"capability:encryption","target":"domain:security-and-compliance","kind":"in"},{"source":"capability:error-handling","target":"domain:protocols-and-apis","kind":"in"},{"source":"capability:event-mesh","target":"domain:integration-and-messaging","kind":"in"},{"source":"capability:feature-toggles","target":"domain:operations-and-runtime","kind":"in"},{"source":"capability:fiori-annotations","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:frontend-boundary","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:frontend-performance","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:generative-ui","target":"domain:ai-and-agents","kind":"in"},{"source":"capability:generators","target":"domain:developer-experience","kind":"in"},{"source":"capability:graphql","target":"domain:protocols-and-apis","kind":"in"},{"source":"capability:gui-automation","target":"domain:developer-experience","kind":"in"},{"source":"capability:hana-native-artifacts","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:health-checks","target":"domain:operations-and-runtime","kind":"in"},{"source":"capability:health-data-interoperability","target":"domain:protocols-and-apis","kind":"in"},{"source":"capability:http-clients","target":"domain:protocols-and-apis","kind":"in"},{"source":"capability:ide-provisioning","target":"domain:developer-experience","kind":"in"},{"source":"capability:identity-provisioning","target":"domain:security-and-compliance","kind":"in"},{"source":"capability:in-app-guidance","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:input-validation","target":"domain:security-and-compliance","kind":"in"},{"source":"capability:integration-flows","target":"domain:integration-and-messaging","kind":"in"},{"source":"capability:integration-scenario-setup","target":"domain:integration-and-messaging","kind":"in"},{"source":"capability:job-scheduling","target":"domain:operations-and-runtime","kind":"in"},{"source":"capability:launchpad-content","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:launchpad-plugins","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:linting","target":"domain:developer-experience","kind":"in"},{"source":"capability:llm-integration","target":"domain:ai-and-agents","kind":"in"},{"source":"capability:local-development","target":"domain:developer-experience","kind":"in"},{"source":"capability:localization","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:location-services","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:logging","target":"domain:operations-and-runtime","kind":"in"},{"source":"capability:low-code-apps","target":"domain:developer-experience","kind":"in"},{"source":"capability:malware-scanning","target":"domain:security-and-compliance","kind":"in"},{"source":"capability:mcp-servers","target":"domain:protocols-and-apis","kind":"in"},{"source":"capability:metadata-publishing","target":"domain:protocols-and-apis","kind":"in"},{"source":"capability:mobile-apps","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:model-visualisation","target":"domain:developer-experience","kind":"in"},{"source":"capability:multi-model-data","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:multitenancy","target":"domain:operations-and-runtime","kind":"in"},{"source":"capability:notifications","target":"domain:integration-and-messaging","kind":"in"},{"source":"capability:object-storage","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:odata","target":"domain:protocols-and-apis","kind":"in"},{"source":"capability:openapi","target":"domain:protocols-and-apis","kind":"in"},{"source":"capability:operations-automation","target":"domain:operations-and-runtime","kind":"in"},{"source":"capability:pagination-and-streaming","target":"domain:protocols-and-apis","kind":"in"},{"source":"capability:parallel-processing","target":"domain:operations-and-runtime","kind":"in"},{"source":"capability:platform-migration","target":"domain:operations-and-runtime","kind":"in"},{"source":"capability:plugin-authoring","target":"domain:developer-experience","kind":"in"},{"source":"capability:pod-plugins","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:predictive-models","target":"domain:ai-and-agents","kind":"in"},{"source":"capability:process-automation","target":"domain:process-and-workflow","kind":"in"},{"source":"capability:product-maintenance-status","target":"domain:operations-and-runtime","kind":"in"},{"source":"capability:prompt-management","target":"domain:ai-and-agents","kind":"in"},{"source":"capability:query-profiling","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:rate-limiting","target":"domain:security-and-compliance","kind":"in"},{"source":"capability:reference-apps","target":"domain:learning-and-reference","kind":"in"},{"source":"capability:replication","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:responsibility-assignment","target":"domain:process-and-workflow","kind":"in"},{"source":"capability:retrieval-augmented-generation","target":"domain:ai-and-agents","kind":"in"},{"source":"capability:rfc-connectivity","target":"domain:integration-and-messaging","kind":"in"},{"source":"capability:schema-evolution","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:search","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:secrets-rotation","target":"domain:security-and-compliance","kind":"in"},{"source":"capability:seed-data","target":"domain:developer-experience","kind":"in"},{"source":"capability:serialisation","target":"domain:protocols-and-apis","kind":"in"},{"source":"capability:server-side-rendering","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:service-composition","target":"domain:integration-and-messaging","kind":"in"},{"source":"capability:service-integration","target":"domain:integration-and-messaging","kind":"in"},{"source":"capability:soft-delete","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:statistical-analysis","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:status-flows","target":"domain:process-and-workflow","kind":"in"},{"source":"capability:table-maintenance","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:task-uis","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:telemetry","target":"domain:operations-and-runtime","kind":"in"},{"source":"capability:temporal-data","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:tenant-extensibility","target":"domain:operations-and-runtime","kind":"in"},{"source":"capability:testing","target":"domain:developer-experience","kind":"in"},{"source":"capability:third-party-connectors","target":"domain:integration-and-messaging","kind":"in"},{"source":"capability:tool-governance","target":"domain:ai-and-agents","kind":"in"},{"source":"capability:trading-partner-agreements","target":"domain:integration-and-messaging","kind":"in"},{"source":"capability:transaction-code-lookup","target":"domain:developer-experience","kind":"in"},{"source":"capability:transaction-management","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:typescript-patterns","target":"domain:developer-experience","kind":"in"},{"source":"capability:typing","target":"domain:developer-experience","kind":"in"},{"source":"capability:ui5-build-tooling","target":"domain:developer-experience","kind":"in"},{"source":"capability:ui5-custom-controls","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:ui5-data-binding","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:ui5-dev-server","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:ui5-flexibility","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:ui5-routing","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:ui5-testing","target":"domain:developer-experience","kind":"in"},{"source":"capability:ui5-theming","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:ui5-touch-uis","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:ui5-typescript","target":"domain:developer-experience","kind":"in"},{"source":"capability:ui5-web-components","target":"domain:ui-and-frontend-bridge","kind":"in"},{"source":"capability:value-normalisation","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:vulnerability-scanning","target":"domain:security-and-compliance","kind":"in"},{"source":"capability:warehouse-loading","target":"domain:data-and-persistence","kind":"in"},{"source":"capability:websocket","target":"domain:protocols-and-apis","kind":"in"},{"source":"capability:workflow-integration","target":"domain:process-and-workflow","kind":"in"},{"source":"capability:xml-payloads","target":"domain:protocols-and-apis","kind":"in"},{"source":"artifact:1dsag-atc-best-practice-guide","target":"capability:abap-static-analysis","kind":"demonstrates"},{"source":"actor:1dsag","target":"artifact:1dsag-atc-best-practice-guide","kind":"maintains"},{"source":"artifact:1nbuc-mcp-integration-suite","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:1nbuc","target":"artifact:1nbuc-mcp-integration-suite","kind":"maintains"},{"source":"artifact:1nbuc-mcp-is-tpm","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:1nbuc","target":"artifact:1nbuc-mcp-is-tpm","kind":"maintains"},{"source":"artifact:a2a-plugin","target":"capability:agent-tooling","kind":"provides"},{"source":"artifact:a2a-plugin","target":"capability:tool-governance","kind":"provides"},{"source":"artifact:abap-adt-api","target":"capability:editor-support","kind":"provides"},{"source":"actor:marcellourbani","target":"artifact:abap-adt-api","kind":"maintains"},{"source":"artifact:abap-ai-llm-client","target":"capability:llm-integration","kind":"provides"},{"source":"actor:abap-ai","target":"artifact:abap-ai-llm-client","kind":"maintains"},{"source":"artifact:abap-ai-mcp","target":"capability:mcp-servers","kind":"provides"},{"source":"actor:abap-ai","target":"artifact:abap-ai-mcp","kind":"maintains"},{"source":"artifact:abap-ai-mcp2","target":"capability:mcp-servers","kind":"provides"},{"source":"actor:abap-ai","target":"artifact:abap-ai-mcp2","kind":"maintains"},{"source":"artifact:abap-cds","target":"capability:data-modelling","kind":"provides"},{"source":"artifact:abap-logger-abap-logger","target":"capability:logging","kind":"provides"},{"source":"actor:abap-logger","target":"artifact:abap-logger-abap-logger","kind":"maintains"},{"source":"artifact:abap-observability-tools-abap-log-exporter","target":"capability:logging","kind":"provides"},{"source":"actor:abap-observability-tools","target":"artifact:abap-observability-tools-abap-log-exporter","kind":"maintains"},{"source":"artifact:abap-observability-tools-abap-metrics-provider","target":"capability:telemetry","kind":"provides"},{"source":"actor:abap-observability-tools","target":"artifact:abap-observability-tools-abap-metrics-provider","kind":"maintains"},{"source":"artifact:abap-openapi-abap-openapi","target":"capability:openapi","kind":"provides"},{"source":"actor:abap-openapi","target":"artifact:abap-openapi-abap-openapi","kind":"maintains"},{"source":"artifact:abap2ui5-abap2ui5-local","target":"capability:abap-ui-from-abap","kind":"provides"},{"source":"actor:abap2ui5","target":"artifact:abap2ui5-abap2ui5-local","kind":"maintains"},{"source":"artifact:abap2ui5-abap2ui5","target":"capability:abap-ui-from-abap","kind":"provides"},{"source":"actor:abap2ui5","target":"artifact:abap2ui5-abap2ui5","kind":"maintains"},{"source":"artifact:abap2ui5-addons-abap-agent-runtime","target":"capability:mcp-servers","kind":"provides"},{"source":"artifact:abap2ui5-addons-abap-agent-runtime","target":"capability:llm-integration","kind":"provides"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-abap-agent-runtime","kind":"maintains"},{"source":"artifact:abap2ui5-addons-abap-cloud-gui","target":"capability:abap-ui-from-abap","kind":"provides"},{"source":"artifact:abap2ui5-addons-abap-cloud-gui","target":"capability:abap-cloud-readiness","kind":"provides"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-abap-cloud-gui","kind":"maintains"},{"source":"artifact:abap2ui5-addons-admin-cockpit","target":"capability:telemetry","kind":"provides"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-admin-cockpit","kind":"maintains"},{"source":"artifact:abap2ui5-addons-config-management","target":"capability:configuration","kind":"provides"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-config-management","kind":"maintains"},{"source":"artifact:abap2ui5-addons-custom-controls-customer","target":"capability:ui5-custom-controls","kind":"demonstrates"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-custom-controls-customer","kind":"maintains"},{"source":"artifact:abap2ui5-addons-custom-controls","target":"capability:ui5-custom-controls","kind":"provides"},{"source":"artifact:abap2ui5-addons-custom-controls","target":"capability:abap-ui-from-abap","kind":"provides"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-custom-controls","kind":"maintains"},{"source":"artifact:abap2ui5-addons-http-connector","target":"capability:abap-ui-from-abap","kind":"provides"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-http-connector","kind":"maintains"},{"source":"artifact:abap2ui5-addons-launchpad-kpi","target":"capability:odata","kind":"provides"},{"source":"artifact:abap2ui5-addons-launchpad-kpi","target":"capability:launchpad-content","kind":"provides"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-launchpad-kpi","kind":"maintains"},{"source":"artifact:abap2ui5-addons-layout-management","target":"capability:abap-ui-from-abap","kind":"provides"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-layout-management","kind":"maintains"},{"source":"artifact:abap2ui5-addons-lock-manager","target":"capability:concurrency-control","kind":"provides"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-lock-manager","kind":"maintains"},{"source":"artifact:abap2ui5-addons-office-addin","target":"capability:abap-ui-from-abap","kind":"provides"},{"source":"artifact:abap2ui5-addons-office-addin","target":"capability:data-import-export","kind":"provides"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-office-addin","kind":"maintains"},{"source":"artifact:abap2ui5-addons-open-source-libs","target":"domain:learning-and-reference","kind":"weak"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-open-source-libs","kind":"maintains"},{"source":"artifact:abap2ui5-addons-popups","target":"capability:abap-ui-from-abap","kind":"provides"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-popups","kind":"maintains"},{"source":"artifact:abap2ui5-addons-rap-ext","target":"capability:fiori-annotations","kind":"provides"},{"source":"artifact:abap2ui5-addons-rap-ext","target":"capability:abap-ui-from-abap","kind":"provides"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-rap-ext","kind":"maintains"},{"source":"artifact:abap2ui5-addons-rfc-connector","target":"capability:rfc-connectivity","kind":"provides"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-rfc-connector","kind":"maintains"},{"source":"artifact:abap2ui5-addons-sapgui","target":"capability:abap-data-browsing","kind":"provides"},{"source":"artifact:abap2ui5-addons-sapgui","target":"capability:transaction-code-lookup","kind":"provides"},{"source":"artifact:abap2ui5-addons-sapgui","target":"capability:code-search","kind":"provides"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-sapgui","kind":"maintains"},{"source":"artifact:abap2ui5-addons-se16n","target":"capability:abap-data-browsing","kind":"provides"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-se16n","kind":"maintains"},{"source":"artifact:abap2ui5-addons-selection-screen","target":"capability:abap-ui-from-abap","kind":"provides"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-selection-screen","kind":"maintains"},{"source":"artifact:abap2ui5-addons-sql-console","target":"capability:abap-data-browsing","kind":"provides"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-sql-console","kind":"maintains"},{"source":"artifact:abap2ui5-addons-table-content-loader","target":"capability:data-import-export","kind":"provides"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-table-content-loader","kind":"maintains"},{"source":"artifact:abap2ui5-addons-table-maintenance","target":"capability:table-maintenance","kind":"provides"},{"source":"actor:abap2ui5-addons","target":"artifact:abap2ui5-addons-table-maintenance","kind":"maintains"},{"source":"artifact:abap2ui5-app-template","target":"capability:generators","kind":"demonstrates"},{"source":"artifact:abap2ui5-app-template","target":"capability:agent-guidance","kind":"demonstrates"},{"source":"artifact:abap2ui5-app-template","target":"capability:abap-unit-testing","kind":"demonstrates"},{"source":"actor:abap2ui5","target":"artifact:abap2ui5-app-template","kind":"maintains"},{"source":"artifact:abap2ui5-embed-control","target":"capability:ui5-custom-controls","kind":"provides"},{"source":"actor:abap2ui5","target":"artifact:abap2ui5-embed-control","kind":"maintains"},{"source":"actor:oblomov-dev","target":"artifact:abap2ui5-embed-control","kind":"maintains"},{"source":"artifact:abap2ui5-frontend-webcomponent","target":"capability:abap-ui-from-abap","kind":"provides"},{"source":"artifact:abap2ui5-frontend-webcomponent","target":"capability:ui5-web-components","kind":"provides"},{"source":"actor:abap2ui5","target":"artifact:abap2ui5-frontend-webcomponent","kind":"maintains"},{"source":"artifact:abap2ui5-frontend","target":"capability:abap-ui-from-abap","kind":"provides"},{"source":"actor:abap2ui5","target":"artifact:abap2ui5-frontend","kind":"maintains"},{"source":"artifact:abap2ui5-headless-frontend","target":"capability:abap-unit-testing","kind":"provides"},{"source":"actor:abap2ui5","target":"artifact:abap2ui5-headless-frontend","kind":"maintains"},{"source":"artifact:abap2ui5-layout-editor","target":"capability:abap-ui-from-abap","kind":"provides"},{"source":"artifact:abap2ui5-layout-editor","target":"capability:generators","kind":"provides"},{"source":"actor:abap2ui5","target":"artifact:abap2ui5-layout-editor","kind":"maintains"},{"source":"artifact:abap2ui5-linter","target":"capability:abap-static-analysis","kind":"provides"},{"source":"actor:abap2ui5","target":"artifact:abap2ui5-linter","kind":"maintains"},{"source":"actor:oblomov-dev","target":"artifact:abap2ui5-linter","kind":"maintains"},{"source":"artifact:abap2ui5-mcp-server","target":"capability:agent-code-access","kind":"provides"},{"source":"artifact:abap2ui5-mcp-server","target":"capability:abap-unit-testing","kind":"provides"},{"source":"artifact:abap2ui5-mcp-server","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:abap2ui5","target":"artifact:abap2ui5-mcp-server","kind":"maintains"},{"source":"actor:oblomov-dev","target":"artifact:abap2ui5-mcp-server","kind":"maintains"},{"source":"artifact:abap2ui5-mobile-shell","target":"capability:mobile-apps","kind":"provides"},{"source":"actor:abap2ui5","target":"artifact:abap2ui5-mobile-shell","kind":"maintains"},{"source":"artifact:abap2ui5-playground","target":"capability:local-development","kind":"provides"},{"source":"artifact:abap2ui5-playground","target":"capability:editor-support","kind":"provides"},{"source":"artifact:abap2ui5-playground","target":"capability:abap-static-analysis","kind":"provides"},{"source":"artifact:abap2ui5-playground","target":"capability:abap-code-formatting","kind":"provides"},{"source":"artifact:abap2ui5-playground","target":"capability:documentation","kind":"provides"},{"source":"actor:abap2ui5","target":"artifact:abap2ui5-playground","kind":"maintains"},{"source":"artifact:abap2ui5-protocol","target":"capability:abap-ui-from-abap","kind":"provides"},{"source":"actor:abap2ui5","target":"artifact:abap2ui5-protocol","kind":"maintains"},{"source":"artifact:abap2ui5-samples-controls","target":"domain:learning-and-reference","kind":"weak"},{"source":"actor:abap2ui5","target":"artifact:abap2ui5-samples-controls","kind":"maintains"},{"source":"artifact:abap2ui5-samples-stack","target":"domain:ui-and-frontend-bridge","kind":"weak"},{"source":"actor:abap2ui5","target":"artifact:abap2ui5-samples-stack","kind":"maintains"},{"source":"artifact:abap2ui5-samples","target":"domain:learning-and-reference","kind":"weak"},{"source":"actor:abap2ui5","target":"artifact:abap2ui5-samples","kind":"maintains"},{"source":"artifact:abap2ui5-vscode-extension","target":"capability:editor-support","kind":"provides"},{"source":"artifact:abap2ui5-vscode-extension","target":"capability:agent-systems-access","kind":"provides"},{"source":"artifact:abap2ui5-vscode-extension","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:abap2ui5","target":"artifact:abap2ui5-vscode-extension","kind":"maintains"},{"source":"actor:oblomov-dev","target":"artifact:abap2ui5-vscode-extension","kind":"maintains"},{"source":"artifact:abap2ui5-web-abap2ui5","target":"capability:local-development","kind":"provides"},{"source":"actor:abap2ui5","target":"artifact:abap2ui5-web-abap2ui5","kind":"maintains"},{"source":"artifact:abap2xlsx-abap2xlsx","target":"capability:document-output","kind":"provides"},{"source":"actor:abap2xlsx","target":"artifact:abap2xlsx-abap2xlsx","kind":"maintains"},{"source":"artifact:abapcdsgrammar","target":"capability:abap-static-analysis","kind":"provides"},{"source":"actor:esjewett","target":"artifact:abapcdsgrammar","kind":"maintains"},{"source":"artifact:abapchaoliu-abap-jwt-generator","target":"capability:authentication","kind":"provides"},{"source":"actor:abapchaoliu","target":"artifact:abapchaoliu-abap-jwt-generator","kind":"maintains"},{"source":"artifact:abapgit-abapgit","target":"capability:abap-source-control","kind":"provides"},{"source":"actor:abapgit","target":"artifact:abapgit-abapgit","kind":"maintains"},{"source":"artifact:abapify-acds","target":"capability:abap-static-analysis","kind":"provides"},{"source":"actor:abapify","target":"artifact:abapify-acds","kind":"maintains"},{"source":"artifact:abapify-assert","target":"capability:abap-unit-testing","kind":"provides"},{"source":"actor:abapify","target":"artifact:abapify-assert","kind":"maintains"},{"source":"artifact:abapify-codepage","target":"capability:abap-cloud-readiness","kind":"provides"},{"source":"actor:abapify","target":"artifact:abapify-codepage","kind":"maintains"},{"source":"artifact:abapify-fetch-cloud","target":"capability:http-clients","kind":"provides"},{"source":"actor:abapify","target":"artifact:abapify-fetch-cloud","kind":"maintains"},{"source":"artifact:abapify-fetch-legacy","target":"capability:http-clients","kind":"provides"},{"source":"actor:abapify","target":"artifact:abapify-fetch-legacy","kind":"maintains"},{"source":"artifact:abapify-fetch","target":"capability:http-clients","kind":"provides"},{"source":"actor:abapify","target":"artifact:abapify-fetch","kind":"maintains"},{"source":"artifact:abapify-json","target":"capability:serialisation","kind":"provides"},{"source":"actor:abapify","target":"artifact:abapify-json","kind":"maintains"},{"source":"artifact:abapify-promise","target":"capability:parallel-processing","kind":"provides"},{"source":"actor:abapify","target":"artifact:abapify-promise","kind":"maintains"},{"source":"artifact:abapify-throw","target":"capability:error-handling","kind":"provides"},{"source":"actor:abapify","target":"artifact:abapify-throw","kind":"maintains"},{"source":"artifact:abapinho-abak","target":"capability:configuration","kind":"provides"},{"source":"actor:abapinho","target":"artifact:abapinho-abak","kind":"maintains"},{"source":"artifact:abapinho-abaptimemachine","target":"capability:abap-code-review","kind":"provides"},{"source":"actor:abapinho","target":"artifact:abapinho-abaptimemachine","kind":"maintains"},{"source":"artifact:abaplint-abaplint-sci-client","target":"capability:abap-static-analysis","kind":"provides"},{"source":"actor:abaplint","target":"artifact:abaplint-abaplint-sci-client","kind":"maintains"},{"source":"artifact:abaplint-abaplint","target":"capability:abap-static-analysis","kind":"provides"},{"source":"actor:abaplint","target":"artifact:abaplint-abaplint","kind":"maintains"},{"source":"artifact:abaplint-transpiler","target":"capability:abap-unit-testing","kind":"provides"},{"source":"actor:abaplint","target":"artifact:abaplint-transpiler","kind":"maintains"},{"source":"actor:larshp","target":"artifact:abaplint-transpiler","kind":"maintains"},{"source":"artifact:abaplint-vscode-tabl-ddic","target":"capability:editor-support","kind":"provides"},{"source":"actor:abaplint","target":"artifact:abaplint-vscode-tabl-ddic","kind":"maintains"},{"source":"actor:larshp","target":"artifact:abaplint-vscode-tabl-ddic","kind":"maintains"},{"source":"artifact:abappm-abap-strust","target":"capability:certificate-management","kind":"provides"},{"source":"actor:abappm","target":"artifact:abappm-abap-strust","kind":"maintains"},{"source":"artifact:abaptools-abapdomcheck","target":"capability:input-validation","kind":"provides"},{"source":"actor:abaptools","target":"artifact:abaptools-abapdomcheck","kind":"maintains"},{"source":"artifact:abat-tao-arc-1-bopf-enh","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:abat-tao","target":"artifact:abat-tao-arc-1-bopf-enh","kind":"maintains"},{"source":"artifact:abdulbasitg-cds-numberrange-plugin","target":"capability:data-modelling","kind":"provides"},{"source":"actor:abdulbasitg","target":"artifact:abdulbasitg-cds-numberrange-plugin","kind":"maintains"},{"source":"artifact:abeljohny-zap","target":"capability:abap-classic-ui","kind":"provides"},{"source":"artifact:abinayaaa-sap-cx-developer-companion","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:abinayaaa","target":"artifact:abinayaaa-sap-cx-developer-companion","kind":"maintains"},{"source":"artifact:adam0thman-sap-basis-ops","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:adam0thman","target":"artifact:adam0thman-sap-basis-ops","kind":"maintains"},{"source":"artifact:aditheos-applicationlogsnotificationtofiori","target":"capability:notifications","kind":"provides"},{"source":"actor:aditheos","target":"artifact:aditheos-applicationlogsnotificationtofiori","kind":"maintains"},{"source":"artifact:aditheos-attachmentcommentodataservice","target":"capability:attachments","kind":"provides"},{"source":"actor:aditheos","target":"artifact:aditheos-attachmentcommentodataservice","kind":"maintains"},{"source":"artifact:agiguere-scpmspushnotificationrest-api","target":"capability:notifications","kind":"provides"},{"source":"actor:agiguere","target":"artifact:agiguere-scpmspushnotificationrest-api","kind":"maintains"},{"source":"artifact:agraeber-cdsanalyser","target":"capability:data-modelling","kind":"provides"},{"source":"actor:agraeber","target":"artifact:agraeber-cdsanalyser","kind":"maintains"},{"source":"artifact:aiadiguru-sf-mcp","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:aiadiguru2025","target":"artifact:aiadiguru-sf-mcp","kind":"maintains"},{"source":"artifact:akatuoro-vite-plugin-cds","target":"capability:local-development","kind":"provides"},{"source":"actor:akatuoro","target":"artifact:akatuoro-vite-plugin-cds","kind":"maintains"},{"source":"artifact:alaible-dbg-value-statement","target":"capability:debugging","kind":"provides"},{"source":"actor:alaible","target":"artifact:alaible-dbg-value-statement","kind":"maintains"},{"source":"artifact:albertmink-agentic-abap-evals","target":"capability:agent-evals","kind":"provides"},{"source":"actor:albertmink","target":"artifact:albertmink-agentic-abap-evals","kind":"maintains"},{"source":"artifact:alborghetti-abapfire","target":"capability:http-clients","kind":"provides"},{"source":"actor:alborghetti","target":"artifact:alborghetti-abapfire","kind":"maintains"},{"source":"artifact:alokm3hta-star-abap-offstack-testing","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:alokm3hta-star","target":"artifact:alokm3hta-star-abap-offstack-testing","kind":"maintains"},{"source":"artifact:alwinvandeput-zscv-search-cds-views","target":"capability:code-search","kind":"provides"},{"source":"actor:alwinvandeput","target":"artifact:alwinvandeput-zscv-search-cds-views","kind":"maintains"},{"source":"artifact:andre-schaerpf-hammer-core-services","target":"domain:developer-experience","kind":"weak"},{"source":"artifact:andre-schaerpf-hammer","target":"capability:editor-support","kind":"provides"},{"source":"artifact:andre-schaerpf-hammer","target":"capability:abap-data-browsing","kind":"provides"},{"source":"artifact:andre-schaerpf-hammer","target":"capability:change-promotion","kind":"provides"},{"source":"artifact:andre-schaerpf-hammer","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:andre-schaerpf","target":"artifact:andre-schaerpf-hammer","kind":"maintains"},{"source":"artifact:andreescocard-hybris-mcp-lite","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:andreescocard","target":"artifact:andreescocard-hybris-mcp-lite","kind":"maintains"},{"source":"artifact:animb1996-cds-data-drift","target":"capability:seed-data","kind":"provides"},{"source":"actor:abasu1996","target":"artifact:animb1996-cds-data-drift","kind":"maintains"},{"source":"artifact:anishk835-cds-eclipse-plugin","target":"capability:editor-support","kind":"provides"},{"source":"actor:anishk835","target":"artifact:anishk835-cds-eclipse-plugin","kind":"maintains"},{"source":"artifact:antonsikidin-zcl-docx","target":"capability:document-output","kind":"provides"},{"source":"actor:antonsikidin","target":"artifact:antonsikidin-zcl-docx","kind":"maintains"},{"source":"artifact:appknight-dump-info","target":"capability:debugging","kind":"provides"},{"source":"actor:appknight","target":"artifact:appknight-dump-info","kind":"maintains"},{"source":"artifact:arc-mcp-adt-ls","target":"capability:editor-support","kind":"provides"},{"source":"actor:arc-mcp","target":"artifact:arc-mcp-adt-ls","kind":"maintains"},{"source":"actor:marianfoo","target":"artifact:arc-mcp-adt-ls","kind":"maintains"},{"source":"artifact:arc-mcp-arc-1-extension-sample","target":"capability:agent-code-access","kind":"demonstrates"},{"source":"actor:arc-mcp","target":"artifact:arc-mcp-arc-1-extension-sample","kind":"maintains"},{"source":"artifact:arc-mcp-arc-1-lsp","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:arc-mcp","target":"artifact:arc-mcp-arc-1-lsp","kind":"maintains"},{"source":"actor:marianfoo","target":"artifact:arc-mcp-arc-1-lsp","kind":"maintains"},{"source":"artifact:arc-mcp-arc-1-skills","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:arc-mcp","target":"artifact:arc-mcp-arc-1-skills","kind":"maintains"},{"source":"artifact:arc-mcp-arc-1","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:arc-mcp","target":"artifact:arc-mcp-arc-1","kind":"maintains"},{"source":"actor:marianfoo","target":"artifact:arc-mcp-arc-1","kind":"maintains"},{"source":"artifact:arc-mcp-arc1-abap-bridge","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:arc-mcp","target":"artifact:arc-mcp-arc1-abap-bridge","kind":"maintains"},{"source":"artifact:arc-mcp-arc1-adt-ext","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:arc-mcp","target":"artifact:arc-mcp-arc1-adt-ext","kind":"maintains"},{"source":"actor:marianfoo","target":"artifact:arc-mcp-arc1-adt-ext","kind":"maintains"},{"source":"artifact:arc-mcp-hub","target":"capability:tool-governance","kind":"provides"},{"source":"actor:arc-mcp","target":"artifact:arc-mcp-hub","kind":"maintains"},{"source":"artifact:arc-mcp-xsuaa-auth","target":"capability:authentication","kind":"provides"},{"source":"actor:arc-mcp","target":"artifact:arc-mcp-xsuaa-auth","kind":"maintains"},{"source":"actor:marianfoo","target":"artifact:arc-mcp-xsuaa-auth","kind":"maintains"},{"source":"artifact:architecture-center","target":"capability:architecture-diagrams","kind":"demonstrates"},{"source":"actor:sap","target":"artifact:architecture-center","kind":"maintains"},{"source":"actor:sap-architecture-center","target":"artifact:architecture-center","kind":"maintains"},{"source":"artifact:arnaudbuchholz-ui5-test-runner","target":"capability:ui5-testing","kind":"provides"},{"source":"actor:arnaudbuchholz","target":"artifact:arnaudbuchholz-ui5-test-runner","kind":"maintains"},{"source":"artifact:attilaberencsi-abaprapunmanaged","target":"capability:abap-transactional-model","kind":"demonstrates"},{"source":"actor:attilaberencsi","target":"artifact:attilaberencsi-abaprapunmanaged","kind":"maintains"},{"source":"artifact:attilaberencsi-abaprapunmanagedsave","target":"capability:abap-transactional-model","kind":"demonstrates"},{"source":"actor:attilaberencsi","target":"artifact:attilaberencsi-abaprapunmanagedsave","kind":"maintains"},{"source":"artifact:attilaberencsi-abapthemes","target":"capability:editor-support","kind":"provides"},{"source":"actor:attilaberencsi","target":"artifact:attilaberencsi-abapthemes","kind":"maintains"},{"source":"artifact:attilaberencsi-abapwulu","target":"capability:code-search","kind":"provides"},{"source":"actor:attilaberencsi","target":"artifact:attilaberencsi-abapwulu","kind":"maintains"},{"source":"artifact:attilaberencsi-sapskills","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:attilaberencsi","target":"artifact:attilaberencsi-sapskills","kind":"maintains"},{"source":"artifact:atudor2-abap-pwnedpasswords","target":"capability:authentication","kind":"provides"},{"source":"actor:atudor2","target":"artifact:atudor2-abap-pwnedpasswords","kind":"maintains"},{"source":"artifact:automatizatodo-capforge","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:automatizatodo","target":"artifact:automatizatodo-capforge","kind":"maintains"},{"source":"artifact:aws-abap-accelerator","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:aws-solutions-library-samples","target":"artifact:aws-abap-accelerator","kind":"maintains"},{"source":"artifact:aws-modernization-agents-for-sap","target":"capability:abap-cloud-readiness","kind":"provides"},{"source":"artifact:aws-modernization-agents-for-sap","target":"capability:platform-migration","kind":"provides"},{"source":"artifact:aws-modernization-agents-for-sap","target":"capability:agent-code-access","kind":"provides"},{"source":"artifact:aws-modernization-agents-for-sap","target":"capability:abap-unit-testing","kind":"provides"},{"source":"actor:aws-for-sap","target":"artifact:aws-modernization-agents-for-sap","kind":"maintains"},{"source":"artifact:aydin-ozcan-generator-ui5-react-nest","target":"capability:generators","kind":"provides"},{"source":"actor:aydin-ozcan","target":"artifact:aydin-ozcan-generator-ui5-react-nest","kind":"maintains"},{"source":"artifact:b-tocs-abap-btocs-core","target":"capability:http-clients","kind":"provides"},{"source":"actor:b-tocs","target":"artifact:b-tocs-abap-btocs-core","kind":"maintains"},{"source":"artifact:b-tocs-abap-btocs-deepl","target":"capability:localization","kind":"provides"},{"source":"actor:b-tocs","target":"artifact:b-tocs-abap-btocs-deepl","kind":"maintains"},{"source":"artifact:b-tocs-abap-btocs-libtrl","target":"capability:localization","kind":"provides"},{"source":"actor:b-tocs","target":"artifact:b-tocs-abap-btocs-libtrl","kind":"maintains"},{"source":"artifact:b-tocs-abap-btocs-ollama","target":"capability:llm-integration","kind":"provides"},{"source":"actor:b-tocs","target":"artifact:b-tocs-abap-btocs-ollama","kind":"maintains"},{"source":"artifact:b-tocs-pyapi4abap","target":"domain:protocols-and-apis","kind":"weak"},{"source":"actor:b-tocs","target":"artifact:b-tocs-pyapi4abap","kind":"maintains"},{"source":"artifact:b-tocs-scec","target":"domain:integration-and-messaging","kind":"weak"},{"source":"actor:b-tocs","target":"artifact:b-tocs-scec","kind":"maintains"},{"source":"artifact:babamba2-abap-mcp-adt-powerup","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:babamba2","target":"artifact:babamba2-abap-mcp-adt-powerup","kind":"maintains"},{"source":"actor:fr0ster","target":"artifact:babamba2-abap-mcp-adt-powerup","kind":"maintains"},{"source":"artifact:babamba2-superclaude-for-sap","target":"capability:agent-guidance","kind":"provides"},{"source":"artifact:babamba2-superclaude-for-sap","target":"capability:tool-governance","kind":"provides"},{"source":"actor:babamba2","target":"artifact:babamba2-superclaude-for-sap","kind":"maintains"},{"source":"artifact:benjaminweisheit-abap-2-code-charta","target":"capability:code-metrics","kind":"provides"},{"source":"actor:benjaminweisheit","target":"artifact:benjaminweisheit-abap-2-code-charta","kind":"maintains"},{"source":"artifact:beraadim-zcl-pdf","target":"capability:document-output","kind":"provides"},{"source":"actor:beraadim","target":"artifact:beraadim-zcl-pdf","kind":"maintains"},{"source":"artifact:biberm-abapparallelizationservice","target":"capability:parallel-processing","kind":"provides"},{"source":"actor:biberm","target":"artifact:biberm-abapparallelizationservice","kind":"maintains"},{"source":"artifact:bizhuka-aqo","target":"capability:configuration","kind":"provides"},{"source":"actor:bizhuka","target":"artifact:bizhuka-aqo","kind":"maintains"},{"source":"artifact:bizhuka-xtt","target":"capability:document-output","kind":"provides"},{"source":"actor:bizhuka","target":"artifact:bizhuka-xtt","kind":"maintains"},{"source":"artifact:bluefunda-abap-odata-test","target":"capability:abap-service-testing","kind":"provides"},{"source":"actor:bluefunda","target":"artifact:bluefunda-abap-odata-test","kind":"maintains"},{"source":"artifact:blumenkuebel-sap-dm-pod2-mcp-server","target":"capability:pod-plugins","kind":"provides"},{"source":"artifact:blumenkuebel-sap-dm-pod2-mcp-server","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:blumenkuebel","target":"artifact:blumenkuebel-sap-dm-pod2-mcp-server","kind":"maintains"},{"source":"artifact:bothzoli-abap-ioc-container","target":"capability:dependency-injection","kind":"provides"},{"source":"actor:bothzoli","target":"artifact:bothzoli-abap-ioc-container","kind":"maintains"},{"source":"artifact:boy0korea-abap2json","target":"capability:data-import-export","kind":"provides"},{"source":"actor:boy0korea","target":"artifact:boy0korea-abap2json","kind":"maintains"},{"source":"artifact:boy0korea-abap2xlsx-helper","target":"capability:data-import-export","kind":"provides"},{"source":"actor:boy0korea","target":"artifact:boy0korea-abap2xlsx-helper","kind":"maintains"},{"source":"artifact:boy0korea-zfpm-tools","target":"capability:abap-ui-from-abap","kind":"provides"},{"source":"actor:boy0korea","target":"artifact:boy0korea-zfpm-tools","kind":"maintains"},{"source":"artifact:boy0korea-zwd-calendar-vh","target":"capability:abap-ui-from-abap","kind":"provides"},{"source":"actor:boy0korea","target":"artifact:boy0korea-zwd-calendar-vh","kind":"maintains"},{"source":"artifact:boy0korea-zwd-code-scanner","target":"capability:code-search","kind":"provides"},{"source":"actor:boy0korea","target":"artifact:boy0korea-zwd-code-scanner","kind":"maintains"},{"source":"artifact:brandeis-consulting-abap-prc","target":"capability:async-processing","kind":"provides"},{"source":"artifact:brandeis-consulting-abap-prc","target":"capability:logging","kind":"provides"},{"source":"artifact:brandeis-consulting-abap-prc","target":"capability:error-handling","kind":"provides"},{"source":"artifact:brandeis-consulting-abap-prc","target":"capability:notifications","kind":"provides"},{"source":"actor:brandeis-consulting","target":"artifact:brandeis-consulting-abap-prc","kind":"maintains"},{"source":"artifact:bryanmcain-zcode-scanner","target":"capability:code-search","kind":"provides"},{"source":"actor:bryanmcain","target":"artifact:bryanmcain-zcode-scanner","kind":"maintains"},{"source":"artifact:btc-ag-featuretoggle","target":"capability:feature-toggles","kind":"provides"},{"source":"actor:btc-ag","target":"artifact:btc-ag-featuretoggle","kind":"maintains"},{"source":"artifact:btp-abap-environment","target":"capability:application-runtimes","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-abap-environment","kind":"maintains"},{"source":"artifact:btp-advanced-event-mesh","target":"capability:event-mesh","kind":"provides"},{"source":"artifact:btp-agentry","target":"capability:mobile-apps","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-agentry","kind":"maintains"},{"source":"artifact:btp-ai-core","target":"capability:llm-integration","kind":"provides"},{"source":"artifact:btp-ai-core","target":"capability:prompt-management","kind":"provides"},{"source":"artifact:btp-ai-core","target":"capability:data-masking","kind":"provides"},{"source":"artifact:btp-ai-core","target":"capability:content-filtering","kind":"provides"},{"source":"artifact:btp-ai-core","target":"capability:retrieval-augmented-generation","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-ai-core","kind":"maintains"},{"source":"artifact:btp-ai-launchpad","target":"domain:ai-and-agents","kind":"weak"},{"source":"actor:sap","target":"artifact:btp-ai-launchpad","kind":"maintains"},{"source":"artifact:btp-alert-notification","target":"capability:operations-automation","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-alert-notification","kind":"maintains"},{"source":"artifact:btp-analytics-cloud","target":"capability:analytic-modelling","kind":"provides"},{"source":"artifact:btp-analytics-cloud","target":"capability:warehouse-loading","kind":"provides"},{"source":"artifact:btp-api-composition","target":"domain:integration-and-messaging","kind":"weak"},{"source":"actor:sap","target":"artifact:btp-api-composition","kind":"maintains"},{"source":"artifact:btp-api-management","target":"capability:rate-limiting","kind":"provides"},{"source":"artifact:btp-api-management","target":"capability:mcp-servers","kind":"provides"},{"source":"artifact:btp-api-management","target":"capability:tool-governance","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-api-management","kind":"maintains"},{"source":"artifact:btp-application-autoscaler","target":"capability:operations-automation","kind":"provides"},{"source":"artifact:btp-application-autoscaler","target":"capability:deployment","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-application-autoscaler","kind":"maintains"},{"source":"artifact:btp-application-frontend","target":"capability:app-hosting","kind":"provides"},{"source":"artifact:btp-application-logging","target":"capability:logging","kind":"provides"},{"source":"artifact:btp-application-vulnerability-report","target":"capability:vulnerability-scanning","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-application-vulnerability-report","kind":"maintains"},{"source":"artifact:btp-ase","target":"capability:database-connectors","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-ase","kind":"maintains"},{"source":"artifact:btp-audit-log","target":"capability:audit-logging","kind":"provides"},{"source":"artifact:btp-authorization-and-trust-management","target":"capability:authentication","kind":"provides"},{"source":"artifact:btp-authorization-and-trust-management","target":"capability:authorization","kind":"provides"},{"source":"artifact:btp-automation-pilot","target":"capability:operations-automation","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-automation-pilot","kind":"maintains"},{"source":"artifact:btp-build-apps","target":"capability:low-code-apps","kind":"provides"},{"source":"artifact:btp-build-apps","target":"capability:mobile-apps","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-build-apps","kind":"maintains"},{"source":"artifact:btp-build-code","target":"capability:editor-support","kind":"provides"},{"source":"artifact:btp-build-code","target":"capability:generators","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-build-code","kind":"maintains"},{"source":"artifact:btp-build-process-automation","target":"capability:process-automation","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-build-process-automation","kind":"maintains"},{"source":"artifact:btp-build-work-zone-advanced","target":"capability:launchpad-content","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-build-work-zone-advanced","kind":"maintains"},{"source":"artifact:btp-build-work-zone-standard","target":"capability:launchpad-content","kind":"provides"},{"source":"artifact:btp-build-work-zone-standard","target":"capability:launchpad-plugins","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-build-work-zone-standard","kind":"maintains"},{"source":"artifact:btp-business-application-studio","target":"capability:editor-support","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-business-application-studio","kind":"maintains"},{"source":"artifact:btp-business-data-cloud","target":"capability:data-cataloguing","kind":"provides"},{"source":"artifact:btp-cloud-application-event-hub","target":"capability:event-mesh","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-cloud-application-event-hub","kind":"maintains"},{"source":"artifact:btp-cloud-foundry-runtime","target":"capability:application-runtimes","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-cloud-foundry-runtime","kind":"maintains"},{"source":"artifact:btp-cloud-identity-services","target":"capability:authentication","kind":"provides"},{"source":"artifact:btp-cloud-integration-automation","target":"capability:integration-scenario-setup","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-cloud-integration-automation","kind":"maintains"},{"source":"artifact:btp-cloud-integration","target":"capability:integration-flows","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-cloud-integration","kind":"maintains"},{"source":"artifact:btp-cloud-logging","target":"capability:logging","kind":"provides"},{"source":"artifact:btp-cloud-logging","target":"capability:telemetry","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-cloud-logging","kind":"maintains"},{"source":"artifact:btp-cloud-management","target":"capability:account-provisioning","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-cloud-management","kind":"maintains"},{"source":"artifact:btp-cloud-portal","target":"capability:launchpad-content","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-cloud-portal","kind":"maintains"},{"source":"artifact:btp-cloud-transport-management","target":"capability:deployment","kind":"provides"},{"source":"artifact:btp-cloud-transport-management","target":"capability:change-promotion","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-cloud-transport-management","kind":"maintains"},{"source":"artifact:btp-connectivity","target":"capability:rfc-connectivity","kind":"provides"},{"source":"artifact:btp-content-agent","target":"capability:deployment","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-content-agent","kind":"maintains"},{"source":"artifact:btp-continuous-integration-and-delivery","target":"capability:ci-cd","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-continuous-integration-and-delivery","kind":"maintains"},{"source":"artifact:btp-credential-store","target":"capability:secrets-rotation","kind":"provides"},{"source":"artifact:btp-custom-domain","target":"capability:certificate-management","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-custom-domain","kind":"maintains"},{"source":"artifact:btp-customer-identity-and-access-management","target":"capability:authentication","kind":"provides"},{"source":"artifact:btp-customer-identity-and-access-management","target":"capability:data-privacy","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-customer-identity-and-access-management","kind":"maintains"},{"source":"artifact:btp-data-attribute-recommendation","target":"capability:predictive-models","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-data-attribute-recommendation","kind":"maintains"},{"source":"artifact:btp-data-privacy-integration","target":"capability:data-privacy","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-data-privacy-integration","kind":"maintains"},{"source":"artifact:btp-data-quality-management-location-data","target":"capability:location-services","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-data-quality-management-location-data","kind":"maintains"},{"source":"artifact:btp-data-retention-manager","target":"capability:data-privacy","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-data-retention-manager","kind":"maintains"},{"source":"artifact:btp-datasphere","target":"capability:analytic-modelling","kind":"provides"},{"source":"artifact:btp-datasphere","target":"capability:warehouse-loading","kind":"provides"},{"source":"artifact:btp-datasphere","target":"capability:data-cataloguing","kind":"provides"},{"source":"artifact:btp-destination","target":"capability:destinations","kind":"provides"},{"source":"artifact:btp-document-ai","target":"capability:document-extraction","kind":"provides"},{"source":"artifact:btp-document-management-application","target":"capability:attachments","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-document-management-application","kind":"maintains"},{"source":"artifact:btp-document-management-integration","target":"capability:attachments","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-document-management-integration","kind":"maintains"},{"source":"artifact:btp-dynatrace-agent-activation","target":"capability:telemetry","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-dynatrace-agent-activation","kind":"maintains"},{"source":"artifact:btp-event-mesh","target":"capability:event-mesh","kind":"provides"},{"source":"artifact:btp-event-mesh","target":"capability:async-processing","kind":"provides"},{"source":"artifact:btp-feature-flags","target":"capability:feature-toggles","kind":"provides"},{"source":"artifact:btp-forms-service-by-adobe","target":"capability:document-output","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-forms-service-by-adobe","kind":"maintains"},{"source":"artifact:btp-hana-cloud","target":"capability:database-connectors","kind":"provides"},{"source":"artifact:btp-hana-cloud","target":"capability:retrieval-augmented-generation","kind":"provides"},{"source":"artifact:btp-hana-cloud","target":"capability:database-administration","kind":"provides"},{"source":"artifact:btp-hana-service","target":"capability:database-connectors","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-hana-service","kind":"maintains"},{"source":"artifact:btp-hana-spatial-services","target":"capability:location-services","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-hana-spatial-services","kind":"maintains"},{"source":"artifact:btp-health-data-services-for-fhir","target":"capability:health-data-interoperability","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-health-data-services-for-fhir","kind":"maintains"},{"source":"artifact:btp-html5-application-repository","target":"capability:app-hosting","kind":"provides"},{"source":"artifact:btp-identity-provisioning","target":"capability:identity-provisioning","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-identity-provisioning","kind":"maintains"},{"source":"artifact:btp-integration-advisor","target":"capability:b2b-message-mapping","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-integration-advisor","kind":"maintains"},{"source":"artifact:btp-integration-suite-event-mesh","target":"capability:event-mesh","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-integration-suite-event-mesh","kind":"maintains"},{"source":"artifact:btp-integration-suite","target":"domain:integration-and-messaging","kind":"weak"},{"source":"artifact:btp-intelligent-situation-automation","target":"capability:process-automation","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-intelligent-situation-automation","kind":"maintains"},{"source":"artifact:btp-job-scheduling","target":"capability:job-scheduling","kind":"provides"},{"source":"artifact:btp-keystore","target":"capability:encryption","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-keystore","kind":"maintains"},{"source":"artifact:btp-kyma-runtime","target":"capability:application-runtimes","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-kyma-runtime","kind":"maintains"},{"source":"artifact:btp-malware-scanning","target":"capability:malware-scanning","kind":"provides"},{"source":"artifact:btp-master-data-integration","target":"capability:replication","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-master-data-integration","kind":"maintains"},{"source":"artifact:btp-mobile-services","target":"capability:mobile-apps","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-mobile-services","kind":"maintains"},{"source":"artifact:btp-monitoring","target":"capability:telemetry","kind":"provides"},{"source":"artifact:btp-monitoring","target":"capability:operations-automation","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-monitoring","kind":"maintains"},{"source":"artifact:btp-oauth","target":"capability:authentication","kind":"provides"},{"source":"artifact:btp-oauth","target":"capability:authorization","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-oauth","kind":"maintains"},{"source":"artifact:btp-object-store","target":"capability:object-storage","kind":"provides"},{"source":"artifact:btp-open-connectors","target":"capability:third-party-connectors","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-open-connectors","kind":"maintains"},{"source":"artifact:btp-personal-data-manager","target":"capability:data-privacy","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-personal-data-manager","kind":"maintains"},{"source":"artifact:btp-personalized-recommendation","target":"capability:predictive-models","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-personalized-recommendation","kind":"maintains"},{"source":"artifact:btp-postgresql-hyperscaler","target":"capability:database-connectors","kind":"provides"},{"source":"artifact:btp-print","target":"capability:document-output","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-print","kind":"maintains"},{"source":"artifact:btp-private-link-service","target":"capability:destinations","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-private-link-service","kind":"maintains"},{"source":"artifact:btp-redis","target":"capability:caching","kind":"provides"},{"source":"artifact:btp-responsibility-management","target":"capability:responsibility-assignment","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-responsibility-management","kind":"maintains"},{"source":"artifact:btp-saas-provisioning","target":"capability:multitenancy","kind":"provides"},{"source":"artifact:btp-service-manager","target":"capability:account-provisioning","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-service-manager","kind":"maintains"},{"source":"artifact:btp-solution-lifecycle-management","target":"capability:deployment","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-solution-lifecycle-management","kind":"maintains"},{"source":"artifact:btp-task-center","target":"capability:task-uis","kind":"provides"},{"source":"artifact:btp-trading-partner-management","target":"capability:trading-partner-agreements","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-trading-partner-management","kind":"maintains"},{"source":"artifact:btp-translation-hub","target":"capability:localization","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-translation-hub","kind":"maintains"},{"source":"artifact:btp-ui-flexibility","target":"capability:ui5-flexibility","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-ui-flexibility","kind":"maintains"},{"source":"artifact:btp-usage-data-management","target":"capability:consumption-monitoring","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-usage-data-management","kind":"maintains"},{"source":"artifact:btp-web-ide-full-stack","target":"capability:editor-support","kind":"provides"},{"source":"actor:sap","target":"artifact:btp-web-ide-full-stack","kind":"maintains"},{"source":"artifact:bunysae-abap-db-preparator","target":"capability:abap-unit-testing","kind":"provides"},{"source":"actor:bunysae","target":"artifact:bunysae-abap-db-preparator","kind":"maintains"},{"source":"artifact:cap-attachments-plus","target":"capability:attachments","kind":"provides"},{"source":"artifact:cap-handler-generator","target":"capability:generators","kind":"provides"},{"source":"artifact:cap-java-cds-adapter-agent","target":"capability:agent-tooling","kind":"provides"},{"source":"artifact:cap-java-cds-adapter-mcp","target":"capability:mcp-servers","kind":"provides"},{"source":"artifact:cap-java-cds-adapter-odata-v2","target":"capability:odata","kind":"provides"},{"source":"artifact:cap-java-cds-adapter-odata-v4","target":"capability:odata","kind":"provides"},{"source":"artifact:cap-java-cds-ai","target":"capability:llm-integration","kind":"provides"},{"source":"actor:cap-java","target":"artifact:cap-java-cds-ai","kind":"maintains"},{"source":"artifact:cap-java-cds-feature-advanced-event-mesh","target":"capability:event-mesh","kind":"provides"},{"source":"actor:cap-java","target":"artifact:cap-java-cds-feature-advanced-event-mesh","kind":"maintains"},{"source":"artifact:cap-java-cds-feature-attachments","target":"capability:attachments","kind":"provides"},{"source":"actor:cap-java","target":"artifact:cap-java-cds-feature-attachments","kind":"maintains"},{"source":"artifact:cap-java-cds-feature-auditlog-ng","target":"capability:audit-logging","kind":"provides"},{"source":"actor:cap-java","target":"artifact:cap-java-cds-feature-auditlog-ng","kind":"maintains"},{"source":"artifact:cap-java-cds-feature-auditlog-v2","target":"capability:audit-logging","kind":"provides"},{"source":"artifact:cap-java-cds-feature-change-tracking","target":"capability:change-tracking","kind":"provides"},{"source":"artifact:cap-java-cds-feature-cloudfoundry","target":"capability:configuration","kind":"provides"},{"source":"artifact:cap-java-cds-feature-console","target":"capability:debugging","kind":"provides"},{"source":"actor:cap-java","target":"artifact:cap-java-cds-feature-console","kind":"maintains"},{"source":"artifact:cap-java-cds-feature-dev-dashboard","target":"capability:local-development","kind":"provides"},{"source":"artifact:cap-java-cds-feature-dev-dashboard","target":"capability:debugging","kind":"provides"},{"source":"artifact:cap-java-cds-feature-enterprise-messaging","target":"capability:event-mesh","kind":"provides"},{"source":"artifact:cap-java-cds-feature-event-hub","target":"capability:event-mesh","kind":"provides"},{"source":"actor:cap-java","target":"artifact:cap-java-cds-feature-event-hub","kind":"maintains"},{"source":"artifact:cap-java-cds-feature-flow","target":"capability:status-flows","kind":"provides"},{"source":"artifact:cap-java-cds-feature-hana","target":"capability:database-connectors","kind":"provides"},{"source":"artifact:cap-java-cds-feature-identity","target":"capability:authentication","kind":"provides"},{"source":"artifact:cap-java-cds-feature-jdbc","target":"capability:database-connectors","kind":"provides"},{"source":"artifact:cap-java-cds-feature-k8s","target":"capability:configuration","kind":"provides"},{"source":"artifact:cap-java-cds-feature-kafka","target":"capability:event-mesh","kind":"provides"},{"source":"artifact:cap-java-cds-feature-mt","target":"capability:multitenancy","kind":"provides"},{"source":"artifact:cap-java-cds-feature-n8n","target":"capability:workflow-integration","kind":"provides"},{"source":"actor:cap-java","target":"artifact:cap-java-cds-feature-n8n","kind":"maintains"},{"source":"artifact:cap-java-cds-feature-notifications","target":"capability:notifications","kind":"provides"},{"source":"actor:cap-java","target":"artifact:cap-java-cds-feature-notifications","kind":"maintains"},{"source":"artifact:cap-java-cds-feature-ord","target":"capability:metadata-publishing","kind":"provides"},{"source":"actor:cap-java","target":"artifact:cap-java-cds-feature-ord","kind":"maintains"},{"source":"artifact:cap-java-cds-feature-postgresql","target":"capability:database-connectors","kind":"provides"},{"source":"artifact:cap-java-cds-feature-redis","target":"capability:event-mesh","kind":"provides"},{"source":"artifact:cap-java-cds-feature-remote-odata","target":"capability:destinations","kind":"provides"},{"source":"artifact:cap-java-cds-feature-remote-odata","target":"capability:service-integration","kind":"provides"},{"source":"artifact:cap-java-cds-feature-xsuaa","target":"capability:authentication","kind":"provides"},{"source":"artifact:cap-java-cds-integration-cloud-sdk","target":"capability:destinations","kind":"provides"},{"source":"artifact:cap-java-cds-maven-plugin","target":"capability:generators","kind":"provides"},{"source":"artifact:cap-java-cds-maven-plugin","target":"capability:typing","kind":"provides"},{"source":"artifact:cap-java-cds-maven-plugin","target":"capability:local-development","kind":"provides"},{"source":"artifact:cap-java-cds-services-archetype","target":"capability:generators","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:authorization","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:input-validation","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:error-handling","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:localization","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:draft-handling","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:fiori-annotations","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:search","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:pagination-and-streaming","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:configuration","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:async-processing","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:audit-logging","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:event-mesh","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:concurrency-control","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:service-composition","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:transaction-management","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:feature-toggles","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:testing","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:plugin-authoring","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:logging","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:telemetry","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:data-modelling","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:database-connectors","kind":"provides"},{"source":"artifact:cap-java-cds-services-bom","target":"capability:multitenancy","kind":"provides"},{"source":"artifact:cap-java-sdm","target":"capability:attachments","kind":"provides"},{"source":"actor:cap-java","target":"artifact:cap-java-sdm","kind":"maintains"},{"source":"artifact:cap-js-advanced-event-mesh","target":"capability:event-mesh","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-advanced-event-mesh","kind":"maintains"},{"source":"artifact:cap-js-agents","target":"capability:agent-tooling","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-agents","kind":"maintains"},{"source":"artifact:cap-js-ai","target":"capability:llm-integration","kind":"provides"},{"source":"artifact:cap-js-ai","target":"capability:retrieval-augmented-generation","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-ai","kind":"maintains"},{"source":"artifact:cap-js-asyncapi","target":"capability:metadata-publishing","kind":"provides"},{"source":"artifact:cap-js-asyncapi","target":"capability:event-mesh","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-asyncapi","kind":"maintains"},{"source":"artifact:cap-js-attachments","target":"capability:attachments","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-attachments","kind":"maintains"},{"source":"artifact:cap-js-audit-logging","target":"capability:logging","kind":"provides"},{"source":"artifact:cap-js-audit-logging","target":"capability:audit-logging","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-audit-logging","kind":"maintains"},{"source":"artifact:cap-js-cap-operator-plugin","target":"capability:deployment","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-cap-operator-plugin","kind":"maintains"},{"source":"artifact:cap-js-cds-dbs","target":"domain:data-and-persistence","kind":"weak"},{"source":"actor:cap-js","target":"artifact:cap-js-cds-dbs","kind":"maintains"},{"source":"artifact:cap-js-cds-federation-synonyms","target":"capability:replication","kind":"provides"},{"source":"artifact:cap-js-cds-federation-synonyms","target":"capability:hana-native-artifacts","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-cds-federation-synonyms","kind":"maintains"},{"source":"artifact:cap-js-cds-intellij","target":"capability:editor-support","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-cds-intellij","kind":"maintains"},{"source":"artifact:cap-js-cds-test","target":"capability:testing","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-cds-test","kind":"maintains"},{"source":"artifact:cap-js-cds-typer","target":"capability:typing","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-cds-typer","kind":"maintains"},{"source":"artifact:cap-js-cds-types","target":"capability:typing","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-cds-types","kind":"maintains"},{"source":"artifact:cap-js-cf-setup","target":"capability:ci-cd","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-cf-setup","kind":"maintains"},{"source":"artifact:cap-js-change-tracking","target":"capability:change-tracking","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-change-tracking","kind":"maintains"},{"source":"artifact:cap-js-community-business-metrics","target":"capability:telemetry","kind":"provides"},{"source":"actor:cap-js-community","target":"artifact:cap-js-community-business-metrics","kind":"maintains"},{"source":"artifact:cap-js-community-cds-cucumber","target":"capability:testing","kind":"provides"},{"source":"actor:cap-js-community","target":"artifact:cap-js-community-cds-cucumber","kind":"maintains"},{"source":"artifact:cap-js-community-common","target":"capability:caching","kind":"provides"},{"source":"artifact:cap-js-community-common","target":"capability:replication","kind":"provides"},{"source":"artifact:cap-js-community-common","target":"capability:schema-evolution","kind":"provides"},{"source":"artifact:cap-js-community-common","target":"capability:rate-limiting","kind":"provides"},{"source":"artifact:cap-js-community-common","target":"capability:local-development","kind":"provides"},{"source":"artifact:cap-js-community-common","target":"capability:metadata-publishing","kind":"provides"},{"source":"actor:cap-js-community","target":"artifact:cap-js-community-common","kind":"maintains"},{"source":"actor:oklemenz2","target":"artifact:cap-js-community-common","kind":"maintains"},{"source":"artifact:cap-js-community-event-queue","target":"capability:async-processing","kind":"provides"},{"source":"artifact:cap-js-community-event-queue","target":"capability:job-scheduling","kind":"provides"},{"source":"actor:cap-js-community","target":"artifact:cap-js-community-event-queue","kind":"maintains"},{"source":"actor:oklemenz2","target":"artifact:cap-js-community-event-queue","kind":"maintains"},{"source":"artifact:cap-js-community-feature-toggle-library","target":"capability:feature-toggles","kind":"provides"},{"source":"actor:cap-js-community","target":"artifact:cap-js-community-feature-toggle-library","kind":"maintains"},{"source":"artifact:cap-js-community-mtx-tool","target":"capability:multitenancy","kind":"provides"},{"source":"actor:cap-js-community","target":"artifact:cap-js-community-mtx-tool","kind":"maintains"},{"source":"artifact:cap-js-community-odata-v2-adapter","target":"capability:odata","kind":"provides"},{"source":"actor:cap-js-community","target":"artifact:cap-js-community-odata-v2-adapter","kind":"maintains"},{"source":"actor:oklemenz2","target":"artifact:cap-js-community-odata-v2-adapter","kind":"maintains"},{"source":"artifact:cap-js-community-repository-template","target":"capability:generators","kind":"demonstrates"},{"source":"actor:cap-js-community","target":"artifact:cap-js-community-repository-template","kind":"maintains"},{"source":"artifact:cap-js-community-sap-afc-sdk","target":"capability:async-processing","kind":"provides"},{"source":"actor:cap-js-community","target":"artifact:cap-js-community-sap-afc-sdk","kind":"maintains"},{"source":"actor:oklemenz2","target":"artifact:cap-js-community-sap-afc-sdk","kind":"maintains"},{"source":"artifact:cap-js-community-websocket","target":"capability:websocket","kind":"provides"},{"source":"actor:cap-js-community","target":"artifact:cap-js-community-websocket","kind":"maintains"},{"source":"artifact:cap-js-console","target":"capability:debugging","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-console","kind":"maintains"},{"source":"artifact:cap-js-data-inspector","target":"capability:debugging","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-data-inspector","kind":"maintains"},{"source":"artifact:cap-js-data-privacy","target":"capability:data-privacy","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-data-privacy","kind":"maintains"},{"source":"artifact:cap-js-db-service","target":"capability:database-connectors","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-db-service","kind":"maintains"},{"source":"artifact:cap-js-event-broker","target":"capability:event-mesh","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-event-broker","kind":"maintains"},{"source":"artifact:cap-js-graphql","target":"capability:graphql","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-graphql","kind":"maintains"},{"source":"artifact:cap-js-hana","target":"capability:database-connectors","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-hana","kind":"maintains"},{"source":"artifact:cap-js-mcp-server","target":"capability:agent-code-access","kind":"provides"},{"source":"artifact:cap-js-mcp-server","target":"capability:documentation","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-mcp-server","kind":"maintains"},{"source":"artifact:cap-js-mcp","target":"capability:mcp-servers","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-mcp","kind":"maintains"},{"source":"artifact:cap-js-n8n","target":"capability:workflow-integration","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-n8n","kind":"maintains"},{"source":"artifact:cap-js-notifications","target":"capability:notifications","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-notifications","kind":"maintains"},{"source":"artifact:cap-js-openapi","target":"capability:openapi","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-openapi","kind":"maintains"},{"source":"artifact:cap-js-ord","target":"capability:metadata-publishing","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-ord","kind":"maintains"},{"source":"artifact:cap-js-postgres","target":"capability:database-connectors","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-postgres","kind":"maintains"},{"source":"artifact:cap-js-print","target":"capability:document-output","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-print","kind":"maintains"},{"source":"artifact:cap-js-process","target":"capability:workflow-integration","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-process","kind":"maintains"},{"source":"artifact:cap-js-sdm","target":"capability:attachments","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-sdm","kind":"maintains"},{"source":"artifact:cap-js-sqlite","target":"capability:database-connectors","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-sqlite","kind":"maintains"},{"source":"artifact:cap-js-telemetry","target":"capability:telemetry","kind":"provides"},{"source":"actor:cap-js","target":"artifact:cap-js-telemetry","kind":"maintains"},{"source":"artifact:cap-llm-plugin","target":"capability:llm-integration","kind":"provides"},{"source":"artifact:cap-llm-plugin","target":"capability:data-masking","kind":"provides"},{"source":"artifact:cap-llm-plugin","target":"capability:retrieval-augmented-generation","kind":"provides"},{"source":"artifact:cap-postgres-btp-connectivity","target":"capability:database-connectors","kind":"provides"},{"source":"artifact:cap-rp-notifications","target":"capability:notifications","kind":"provides"},{"source":"actor:rohtash","target":"artifact:cap-rp-notifications","kind":"maintains"},{"source":"artifact:capire-bookshop-java","target":"capability:reference-apps","kind":"demonstrates"},{"source":"actor:capire","target":"artifact:capire-bookshop-java","kind":"maintains"},{"source":"artifact:capire-bookshop","target":"capability:reference-apps","kind":"demonstrates"},{"source":"artifact:capire-bookshop","target":"capability:data-modelling","kind":"demonstrates"},{"source":"actor:capire","target":"artifact:capire-bookshop","kind":"maintains"},{"source":"artifact:capire-bookstore-java","target":"capability:reference-apps","kind":"demonstrates"},{"source":"actor:capire","target":"artifact:capire-bookstore-java","kind":"maintains"},{"source":"artifact:capire-bookstore","target":"capability:reference-apps","kind":"demonstrates"},{"source":"artifact:capire-bookstore","target":"capability:database-connectors","kind":"demonstrates"},{"source":"artifact:capire-bookstore","target":"capability:service-composition","kind":"demonstrates"},{"source":"actor:capire","target":"artifact:capire-bookstore","kind":"maintains"},{"source":"artifact:capire-common","target":"capability:plugin-authoring","kind":"demonstrates"},{"source":"actor:capire","target":"artifact:capire-common","kind":"maintains"},{"source":"artifact:capire-data-viewer","target":"capability:plugin-authoring","kind":"demonstrates"},{"source":"actor:capire","target":"artifact:capire-data-viewer","kind":"maintains"},{"source":"artifact:capire-docs","target":"capability:documentation","kind":"demonstrates"},{"source":"actor:capire","target":"artifact:capire-docs","kind":"maintains"},{"source":"artifact:capire-incidents-app","target":"capability:reference-apps","kind":"demonstrates"},{"source":"artifact:capire-incidents-app","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"actor:capire","target":"artifact:capire-incidents-app","kind":"maintains"},{"source":"artifact:capire-orders-java","target":"capability:plugin-authoring","kind":"demonstrates"},{"source":"actor:capire","target":"artifact:capire-orders-java","kind":"maintains"},{"source":"artifact:capire-orders","target":"capability:plugin-authoring","kind":"demonstrates"},{"source":"actor:capire","target":"artifact:capire-orders","kind":"maintains"},{"source":"artifact:capire-reviews-java","target":"capability:plugin-authoring","kind":"demonstrates"},{"source":"actor:capire","target":"artifact:capire-reviews-java","kind":"maintains"},{"source":"artifact:capire-reviews","target":"capability:plugin-authoring","kind":"demonstrates"},{"source":"actor:capire","target":"artifact:capire-reviews","kind":"maintains"},{"source":"artifact:capire-s4","target":"capability:service-integration","kind":"provides"},{"source":"artifact:capire-s4","target":"capability:destinations","kind":"provides"},{"source":"actor:capire","target":"artifact:capire-s4","kind":"maintains"},{"source":"artifact:capire-shared-db-java","target":"capability:deployment","kind":"demonstrates"},{"source":"artifact:capire-shared-db-java","target":"capability:plugin-authoring","kind":"demonstrates"},{"source":"actor:capire","target":"artifact:capire-shared-db-java","kind":"maintains"},{"source":"artifact:capire-shared-db","target":"capability:deployment","kind":"demonstrates"},{"source":"artifact:capire-shared-db","target":"capability:plugin-authoring","kind":"demonstrates"},{"source":"actor:capire","target":"artifact:capire-shared-db","kind":"maintains"},{"source":"artifact:capire-skills","target":"capability:agent-guidance","kind":"provides"},{"source":"artifact:capire-skills","target":"capability:agent-evals","kind":"provides"},{"source":"actor:capire","target":"artifact:capire-skills","kind":"maintains"},{"source":"artifact:capire-xflights-java","target":"capability:data-modelling","kind":"demonstrates"},{"source":"actor:capire","target":"artifact:capire-xflights-java","kind":"maintains"},{"source":"artifact:capire-xflights","target":"capability:data-modelling","kind":"demonstrates"},{"source":"artifact:capire-xflights","target":"capability:service-integration","kind":"demonstrates"},{"source":"actor:capire","target":"artifact:capire-xflights","kind":"maintains"},{"source":"artifact:capire-xtravels-java","target":"capability:reference-apps","kind":"demonstrates"},{"source":"actor:capire","target":"artifact:capire-xtravels-java","kind":"maintains"},{"source":"artifact:capire-xtravels","target":"capability:reference-apps","kind":"demonstrates"},{"source":"artifact:capire-xtravels","target":"capability:service-integration","kind":"demonstrates"},{"source":"artifact:capire-xtravels","target":"capability:service-composition","kind":"demonstrates"},{"source":"artifact:capire-xtravels","target":"capability:agent-tooling","kind":"demonstrates"},{"source":"artifact:capire-xtravels","target":"capability:mcp-servers","kind":"demonstrates"},{"source":"actor:capire","target":"artifact:capire-xtravels","kind":"maintains"},{"source":"artifact:carlosorozco88-ui5-tools","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:carlosorozco88","target":"artifact:carlosorozco88-ui5-tools","kind":"maintains"},{"source":"artifact:catafeidi-abap-transport-review","target":"capability:abap-code-review","kind":"provides"},{"source":"artifact:catafeidi-abap-transport-review","target":"capability:abap-source-control","kind":"provides"},{"source":"actor:catafeidi","target":"artifact:catafeidi-abap-transport-review","kind":"maintains"},{"source":"artifact:cbs-consulting-cds-eslint","target":"capability:linting","kind":"provides"},{"source":"artifact:cbs-consulting-tools","target":"capability:linting","kind":"provides"},{"source":"artifact:cch-engineering-sap-cloud-integration-pipeline-concept-skill","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:cch-engineering","target":"artifact:cch-engineering-sap-cloud-integration-pipeline-concept-skill","kind":"maintains"},{"source":"artifact:cds-caching","target":"capability:caching","kind":"provides"},{"source":"artifact:cds-caching","target":"capability:telemetry","kind":"provides"},{"source":"actor:mike-zaschka","target":"artifact:cds-caching","kind":"maintains"},{"source":"artifact:cds-error-outbox","target":"capability:error-handling","kind":"provides"},{"source":"artifact:cds-kafka","target":"capability:event-mesh","kind":"provides"},{"source":"actor:mike-zaschka","target":"artifact:cds-kafka","kind":"maintains"},{"source":"artifact:cds-mongodb","target":"capability:database-connectors","kind":"provides"},{"source":"artifact:cds-pgroll-postgres","target":"capability:database-connectors","kind":"provides"},{"source":"actor:medelkouch98","target":"artifact:cds-pgroll-postgres","kind":"maintains"},{"source":"artifact:cdse","target":"capability:destinations","kind":"provides"},{"source":"actor:jcailan","target":"artifact:cdse","kind":"maintains"},{"source":"artifact:cdsmbt01","target":"capability:change-tracking","kind":"provides"},{"source":"artifact:cesar-sap-abap-fm-json","target":"capability:rfc-connectivity","kind":"provides"},{"source":"actor:cesar-sap","target":"artifact:cesar-sap-abap-fm-json","kind":"maintains"},{"source":"artifact:cesar-sap-abap-kafka-rest-proxy","target":"capability:event-mesh","kind":"provides"},{"source":"actor:cesar-sap","target":"artifact:cesar-sap-abap-kafka-rest-proxy","kind":"maintains"},{"source":"artifact:chandrashekhar-mahajan-abap-mcp-server","target":"capability:agent-code-access","kind":"provides"},{"source":"artifact:chgeo-cds-swagger-ui-express","target":"capability:openapi","kind":"provides"},{"source":"actor:chgeo","target":"artifact:chgeo-cds-swagger-ui-express","kind":"maintains"},{"source":"artifact:christianguenter2-abap-deepl-client","target":"capability:localization","kind":"provides"},{"source":"actor:christianguenter2","target":"artifact:christianguenter2-abap-deepl-client","kind":"maintains"},{"source":"artifact:chuckberrry-cds-event-monitoring","target":"capability:event-mesh","kind":"provides"},{"source":"artifact:chuckberrry-cds-event-monitoring","target":"capability:async-processing","kind":"provides"},{"source":"actor:chuckberrry","target":"artifact:chuckberrry-cds-event-monitoring","kind":"maintains"},{"source":"artifact:clementringot-lisa","target":"capability:localization","kind":"provides"},{"source":"actor:clementringot","target":"artifact:clementringot-lisa","kind":"maintains"},{"source":"artifact:clementringot-rosa","target":"capability:abap-cloud-readiness","kind":"provides"},{"source":"actor:clementringot","target":"artifact:clementringot-rosa","kind":"maintains"},{"source":"artifact:cogniac-sap-pod-extension","target":"capability:pod-plugins","kind":"provides"},{"source":"actor:cogniac","target":"artifact:cogniac-sap-pod-extension","kind":"maintains"},{"source":"artifact:concircle-i18n-ai-translator","target":"capability:localization","kind":"provides"},{"source":"actor:concircle","target":"artifact:concircle-i18n-ai-translator","kind":"maintains"},{"source":"actor:hkaintz","target":"artifact:concircle-i18n-ai-translator","kind":"maintains"},{"source":"artifact:consetto-calmcp","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:consetto","target":"artifact:consetto-calmcp","kind":"maintains"},{"source":"actor:michaelconsetto","target":"artifact:consetto-calmcp","kind":"maintains"},{"source":"artifact:consetto-cloudalmlink","target":"capability:change-promotion","kind":"provides"},{"source":"artifact:consetto-cloudalmlink","target":"capability:editor-support","kind":"provides"},{"source":"actor:consetto","target":"artifact:consetto-cloudalmlink","kind":"maintains"},{"source":"artifact:coreline-zddic-finder","target":"capability:code-search","kind":"provides"},{"source":"actor:coreline","target":"artifact:coreline-zddic-finder","kind":"maintains"},{"source":"artifact:coreline-zuml-diagram","target":"capability:model-visualisation","kind":"provides"},{"source":"actor:coreline","target":"artifact:coreline-zuml-diagram","kind":"maintains"},{"source":"artifact:costinggeek-sap-mcp","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:costinggeek","target":"artifact:costinggeek-sap-mcp","kind":"maintains"},{"source":"artifact:coveles-claude-abap-dev","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:coveles","target":"artifact:coveles-claude-abap-dev","kind":"maintains"},{"source":"artifact:dankromp-skilloverflow","target":"capability:agent-guidance","kind":"provides"},{"source":"artifact:dankromp-skilloverflow","target":"capability:agent-evals","kind":"provides"},{"source":"actor:dankromp","target":"artifact:dankromp-skilloverflow","kind":"maintains"},{"source":"artifact:dassianinc-dassian-adt","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:dassianinc","target":"artifact:dassianinc-dassian-adt","kind":"maintains"},{"source":"artifact:datazoode-erpl-adt","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:datazoode","target":"artifact:datazoode-erpl-adt","kind":"maintains"},{"source":"artifact:datazoode-erpl-node-rfc","target":"capability:rfc-connectivity","kind":"provides"},{"source":"actor:datazoode","target":"artifact:datazoode-erpl-node-rfc","kind":"maintains"},{"source":"artifact:datazoode-erpl","target":"capability:warehouse-loading","kind":"provides"},{"source":"artifact:datazoode-erpl","target":"capability:rfc-connectivity","kind":"provides"},{"source":"actor:datazoode","target":"artifact:datazoode-erpl","kind":"maintains"},{"source":"artifact:derekvincent-mcp-sap-focusedrun","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:derekvincent","target":"artifact:derekvincent-mcp-sap-focusedrun","kind":"maintains"},{"source":"artifact:dergutewolf-abap-translation-hub","target":"capability:localization","kind":"provides"},{"source":"actor:dergutewolf","target":"artifact:dergutewolf-abap-translation-hub","kind":"maintains"},{"source":"artifact:devepos-abap-call-hierarchy-ui","target":"capability:editor-support","kind":"provides"},{"source":"actor:devepos","target":"artifact:devepos-abap-call-hierarchy-ui","kind":"maintains"},{"source":"actor:stockbal","target":"artifact:devepos-abap-call-hierarchy-ui","kind":"maintains"},{"source":"artifact:devepos-abap-call-hierarchy","target":"capability:editor-support","kind":"provides"},{"source":"actor:devepos","target":"artifact:devepos-abap-call-hierarchy","kind":"maintains"},{"source":"artifact:devepos-abap-code-search-tools","target":"capability:code-search","kind":"provides"},{"source":"actor:devepos","target":"artifact:devepos-abap-code-search-tools","kind":"maintains"},{"source":"artifact:devepos-abap-code-search-ui","target":"capability:code-search","kind":"provides"},{"source":"actor:devepos","target":"artifact:devepos-abap-code-search-ui","kind":"maintains"},{"source":"actor:stockbal","target":"artifact:devepos-abap-code-search-ui","kind":"maintains"},{"source":"artifact:devepos-abap-db-browser","target":"capability:abap-data-browsing","kind":"provides"},{"source":"actor:devepos","target":"artifact:devepos-abap-db-browser","kind":"maintains"},{"source":"artifact:devepos-abap-search-tools-ui","target":"capability:code-search","kind":"provides"},{"source":"artifact:devepos-abap-search-tools-ui","target":"capability:model-visualisation","kind":"provides"},{"source":"actor:devepos","target":"artifact:devepos-abap-search-tools-ui","kind":"maintains"},{"source":"actor:stockbal","target":"artifact:devepos-abap-search-tools-ui","kind":"maintains"},{"source":"artifact:devepos-abap-search-tools","target":"capability:code-search","kind":"provides"},{"source":"actor:devepos","target":"artifact:devepos-abap-search-tools","kind":"maintains"},{"source":"actor:stockbal","target":"artifact:devepos-abap-search-tools","kind":"maintains"},{"source":"artifact:devepos-abap-tags-backend","target":"capability:editor-support","kind":"provides"},{"source":"actor:devepos","target":"artifact:devepos-abap-tags-backend","kind":"maintains"},{"source":"artifact:devepos-abap-tags-ui","target":"capability:editor-support","kind":"provides"},{"source":"actor:devepos","target":"artifact:devepos-abap-tags-ui","kind":"maintains"},{"source":"actor:stockbal","target":"artifact:devepos-abap-tags-ui","kind":"maintains"},{"source":"artifact:devepos-abap-ui-toolbox","target":"capability:abap-classic-ui","kind":"provides"},{"source":"actor:devepos","target":"artifact:devepos-abap-ui-toolbox","kind":"maintains"},{"source":"artifact:devepos-eclipsadt-o-mat","target":"capability:ide-provisioning","kind":"provides"},{"source":"actor:devepos","target":"artifact:devepos-eclipsadt-o-mat","kind":"maintains"},{"source":"artifact:dnic-dev-bw-modeling-mcp","target":"capability:agent-code-access","kind":"provides"},{"source":"artifact:dnic-dev-bw-modeling-mcp","target":"capability:tool-governance","kind":"provides"},{"source":"artifact:dnic-dev-bw-modeling-mcp","target":"capability:analytic-modelling","kind":"provides"},{"source":"artifact:dnic-dev-bw-modeling-mcp","target":"capability:warehouse-loading","kind":"provides"},{"source":"actor:dnic-dev","target":"artifact:dnic-dev-bw-modeling-mcp","kind":"maintains"},{"source":"artifact:dominikpanzer-cacamber-bdd-for-abap","target":"capability:abap-unit-testing","kind":"provides"},{"source":"actor:dominikpanzer","target":"artifact:dominikpanzer-cacamber-bdd-for-abap","kind":"maintains"},{"source":"artifact:dominikpanzer-result-for-abap","target":"capability:error-handling","kind":"provides"},{"source":"actor:dominikpanzer","target":"artifact:dominikpanzer-result-for-abap","kind":"maintains"},{"source":"artifact:dongitran-sapbruno","target":"capability:testing","kind":"provides"},{"source":"actor:dong-tran","target":"artifact:dongitran-sapbruno","kind":"maintains"},{"source":"artifact:drydumbhead-easyhtmlemail","target":"capability:notifications","kind":"provides"},{"source":"actor:drydumbhead","target":"artifact:drydumbhead-easyhtmlemail","kind":"maintains"},{"source":"artifact:dxfrontier-cds-ts-dispatcher","target":"capability:typescript-patterns","kind":"provides"},{"source":"actor:dxfrontier","target":"artifact:dxfrontier-cds-ts-dispatcher","kind":"maintains"},{"source":"artifact:dxfrontier-cds-ts-repository","target":"capability:typescript-patterns","kind":"provides"},{"source":"actor:dxfrontier","target":"artifact:dxfrontier-cds-ts-repository","kind":"maintains"},{"source":"artifact:emenowicz-sap-commerce-skill","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:emenowicz","target":"artifact:emenowicz-sap-commerce-skill","kind":"maintains"},{"source":"artifact:endresshauser-infoserve-abap-utesthelp","target":"capability:abap-unit-testing","kind":"provides"},{"source":"actor:endresshauser-infoserve","target":"artifact:endresshauser-infoserve-abap-utesthelp","kind":"maintains"},{"source":"artifact:erhan-epod-adt-mcp-server","target":"capability:agent-code-access","kind":"provides"},{"source":"artifact:erhan-epod-adt-mcp-server","target":"capability:change-promotion","kind":"provides"},{"source":"artifact:etosin-arc-draw","target":"capability:architecture-diagrams","kind":"provides"},{"source":"artifact:etosin-arc-draw","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:etosin","target":"artifact:etosin-arc-draw","kind":"maintains"},{"source":"artifact:expertum-cap-email-plugin","target":"capability:notifications","kind":"provides"},{"source":"actor:expertum-net","target":"artifact:expertum-cap-email-plugin","kind":"maintains"},{"source":"actor:stijnme","target":"artifact:expertum-cap-email-plugin","kind":"maintains"},{"source":"artifact:eyupbaycol-cap-toolkit","target":"capability:input-validation","kind":"provides"},{"source":"artifact:eyupbaycol-cap-toolkit","target":"capability:authorization","kind":"provides"},{"source":"actor:eyupbaycol","target":"artifact:eyupbaycol-cap-toolkit","kind":"maintains"},{"source":"artifact:f-wer-zarc1-extension-forms","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:f-wer","target":"artifact:f-wer-zarc1-extension-forms","kind":"maintains"},{"source":"artifact:fabianlupa-abap-log","target":"capability:logging","kind":"provides"},{"source":"actor:fabianlupa","target":"artifact:fabianlupa-abap-log","kind":"maintains"},{"source":"artifact:fatihpense-zcl-mdp-json","target":"capability:serialisation","kind":"provides"},{"source":"actor:fatihpense","target":"artifact:fatihpense-zcl-mdp-json","kind":"maintains"},{"source":"artifact:fermeregali-cap-mtx-scaffold","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:fermeregali","target":"artifact:fermeregali-cap-mtx-scaffold","kind":"maintains"},{"source":"artifact:fgalastri-mcp-abap","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:fgalastri","target":"artifact:fgalastri-mcp-abap","kind":"maintains"},{"source":"artifact:fidley-json2abaptype","target":"capability:serialisation","kind":"provides"},{"source":"actor:fidley","target":"artifact:fidley-json2abaptype","kind":"maintains"},{"source":"artifact:fr0ster-mcp-abap-adt","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:fr0ster","target":"artifact:fr0ster-mcp-abap-adt","kind":"maintains"},{"source":"artifact:franzreitmayer-abap-logging","target":"capability:logging","kind":"provides"},{"source":"actor:franzreitmayer","target":"artifact:franzreitmayer-abap-logging","kind":"maintains"},{"source":"artifact:freight-art-abapsmith","target":"capability:agent-code-access","kind":"provides"},{"source":"artifact:freight-art-abapsmith","target":"capability:debugging","kind":"provides"},{"source":"artifact:freight-art-abapsmith","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:freight-art","target":"artifact:freight-art-abapsmith","kind":"maintains"},{"source":"artifact:furkanaksy838-cap-mcp-guard","target":"capability:telemetry","kind":"provides"},{"source":"actor:furkanaksy838","target":"artifact:furkanaksy838-cap-mcp-guard","kind":"maintains"},{"source":"artifact:furkancosgun-abap-cache-box","target":"capability:caching","kind":"provides"},{"source":"actor:furkancosgun","target":"artifact:furkancosgun-abap-cache-box","kind":"maintains"},{"source":"artifact:furkancosgun-abap-database-manager","target":"capability:abap-data-browsing","kind":"provides"},{"source":"actor:furkancosgun","target":"artifact:furkancosgun-abap-database-manager","kind":"maintains"},{"source":"artifact:furkancosgun-coroutines4abap","target":"capability:parallel-processing","kind":"provides"},{"source":"actor:furkancosgun","target":"artifact:furkancosgun-coroutines4abap","kind":"maintains"},{"source":"artifact:furkancosgun-either-for-abap","target":"capability:error-handling","kind":"provides"},{"source":"actor:furkancosgun","target":"artifact:furkancosgun-either-for-abap","kind":"maintains"},{"source":"artifact:furkancosgun-transport-management-tool","target":"capability:change-promotion","kind":"provides"},{"source":"actor:furkancosgun","target":"artifact:furkancosgun-transport-management-tool","kind":"maintains"},{"source":"artifact:furkancosgun-zwarp","target":"capability:change-promotion","kind":"provides"},{"source":"actor:furkancosgun","target":"artifact:furkancosgun-zwarp","kind":"maintains"},{"source":"artifact:gavdi-cap-mcp","target":"capability:mcp-servers","kind":"provides"},{"source":"actor:gavdilabs","target":"artifact:gavdi-cap-mcp","kind":"maintains"},{"source":"artifact:geert-janklaps-abap-openapi-ui","target":"capability:openapi","kind":"provides"},{"source":"actor:geert-janklaps","target":"artifact:geert-janklaps-abap-openapi-ui","kind":"maintains"},{"source":"artifact:geert-janklaps-cds-launchpad-plugin","target":"capability:testing","kind":"provides"},{"source":"actor:geert-janklaps","target":"artifact:geert-janklaps-cds-launchpad-plugin","kind":"maintains"},{"source":"artifact:geertjanklaps-cds-toon-ai-protocol-adapter","target":"capability:llm-integration","kind":"provides"},{"source":"actor:geert-janklaps","target":"artifact:geertjanklaps-cds-toon-ai-protocol-adapter","kind":"maintains"},{"source":"artifact:germanysources-regression-test","target":"capability:abap-unit-testing","kind":"provides"},{"source":"actor:germanysources","target":"artifact:germanysources-regression-test","kind":"maintains"},{"source":"artifact:gprs555-abap-soql-query","target":"capability:http-clients","kind":"provides"},{"source":"actor:gprs555","target":"artifact:gprs555-abap-soql-query","kind":"maintains"},{"source":"artifact:grahamrobbo-building-gateway-services","target":"capability:odata","kind":"demonstrates"},{"source":"actor:grahamrobbo","target":"artifact:grahamrobbo-building-gateway-services","kind":"maintains"},{"source":"artifact:gregorwolf-abapoauthazure","target":"capability:authentication","kind":"provides"},{"source":"actor:gregorwolf","target":"artifact:gregorwolf-abapoauthazure","kind":"maintains"},{"source":"artifact:gregorwolf-aws-sns4abap","target":"capability:event-mesh","kind":"provides"},{"source":"actor:gregorwolf","target":"artifact:gregorwolf-aws-sns4abap","kind":"maintains"},{"source":"artifact:gregorwolf-bookshop-ams","target":"capability:authorization","kind":"demonstrates"},{"source":"actor:gregorwolf","target":"artifact:gregorwolf-bookshop-ams","kind":"maintains"},{"source":"artifact:gregorwolf-bookshop-demo","target":"capability:database-connectors","kind":"demonstrates"},{"source":"artifact:gregorwolf-bookshop-demo","target":"capability:draft-handling","kind":"demonstrates"},{"source":"artifact:gregorwolf-bookshop-demo","target":"capability:odata","kind":"demonstrates"},{"source":"artifact:gregorwolf-bookshop-demo","target":"capability:reference-apps","kind":"demonstrates"},{"source":"actor:gregorwolf","target":"artifact:gregorwolf-bookshop-demo","kind":"maintains"},{"source":"artifact:gregorwolf-cap-azure-ad-b2c","target":"capability:authentication","kind":"demonstrates"},{"source":"actor:gregorwolf","target":"artifact:gregorwolf-cap-azure-ad-b2c","kind":"maintains"},{"source":"artifact:gregorwolf-cap-replication-demo","target":"capability:replication","kind":"demonstrates"},{"source":"actor:gregorwolf","target":"artifact:gregorwolf-cap-replication-demo","kind":"maintains"},{"source":"artifact:gregorwolf-cap-rfc","target":"capability:rfc-connectivity","kind":"demonstrates"},{"source":"actor:gregorwolf","target":"artifact:gregorwolf-cap-rfc","kind":"maintains"},{"source":"artifact:gregorwolf-cap-sflight-hierarchy","target":"capability:analytical-queries","kind":"demonstrates"},{"source":"actor:gregorwolf","target":"artifact:gregorwolf-cap-sflight-hierarchy","kind":"maintains"},{"source":"artifact:gregorwolf-cap-typescript","target":"capability:typing","kind":"demonstrates"},{"source":"actor:gregorwolf","target":"artifact:gregorwolf-cap-typescript","kind":"maintains"},{"source":"artifact:gregorwolf-cap-websockets","target":"capability:websocket","kind":"demonstrates"},{"source":"actor:gregorwolf","target":"artifact:gregorwolf-cap-websockets","kind":"maintains"},{"source":"artifact:gregorwolf-cloud-alm-itsm-mcp","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:gregorwolf","target":"artifact:gregorwolf-cloud-alm-itsm-mcp","kind":"maintains"},{"source":"artifact:gregorwolf-mtxs-reviews","target":"capability:multitenancy","kind":"demonstrates"},{"source":"artifact:gregorwolf-mtxs-reviews","target":"capability:tenant-extensibility","kind":"demonstrates"},{"source":"actor:gregorwolf","target":"artifact:gregorwolf-mtxs-reviews","kind":"maintains"},{"source":"artifact:gregorwolf-pg-beershop","target":"capability:database-connectors","kind":"demonstrates"},{"source":"actor:gregorwolf","target":"artifact:gregorwolf-pg-beershop","kind":"maintains"},{"source":"artifact:gregorwolf-sap-npm-api-collection","target":"capability:typing","kind":"demonstrates"},{"source":"actor:gregorwolf","target":"artifact:gregorwolf-sap-npm-api-collection","kind":"maintains"},{"source":"artifact:greltel-abap-cloud-logger","target":"capability:logging","kind":"provides"},{"source":"actor:greltel","target":"artifact:greltel-abap-cloud-logger","kind":"maintains"},{"source":"artifact:greltel-abap-dynamic-assignment","target":"capability:configuration","kind":"provides"},{"source":"actor:greltel","target":"artifact:greltel-abap-dynamic-assignment","kind":"maintains"},{"source":"artifact:greltel-abap-form-translator","target":"capability:localization","kind":"provides"},{"source":"actor:greltel","target":"artifact:greltel-abap-form-translator","kind":"maintains"},{"source":"artifact:greltel-abap-point-gate","target":"capability:abap-extensibility","kind":"provides"},{"source":"actor:greltel","target":"artifact:greltel-abap-point-gate","kind":"maintains"},{"source":"artifact:grknylmz-sap-ai-dev-toolkit","target":"capability:agent-code-access","kind":"provides"},{"source":"artifact:grknylmz-sap-ai-dev-toolkit","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:grknylmz","target":"artifact:grknylmz-sap-ai-dev-toolkit","kind":"maintains"},{"source":"artifact:hasanciftci26-ui5-antares","target":"capability:ui5-data-binding","kind":"provides"},{"source":"actor:hasanciftci26","target":"artifact:hasanciftci26-ui5-antares","kind":"maintains"},{"source":"artifact:hatrigt-hana-mcp-server","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:hatrigt","target":"artifact:hatrigt-hana-mcp-server","kind":"maintains"},{"source":"artifact:hatrigt-sap-cap-debugger","target":"capability:debugging","kind":"provides"},{"source":"actor:hatrigt","target":"artifact:hatrigt-sap-cap-debugger","kind":"maintains"},{"source":"artifact:hdb","target":"capability:database-connectors","kind":"provides"},{"source":"actor:alexpenev-s","target":"artifact:hdb","kind":"maintains"},{"source":"actor:holgerkoser","target":"artifact:hdb","kind":"maintains"},{"source":"actor:jeffalbion","target":"artifact:hdb","kind":"maintains"},{"source":"actor:sap","target":"artifact:hdb","kind":"maintains"},{"source":"artifact:heliconialabs-abap-opentelemetry","target":"capability:telemetry","kind":"provides"},{"source":"actor:heliconialabs","target":"artifact:heliconialabs-abap-opentelemetry","kind":"maintains"},{"source":"artifact:heliconialabs-abap-protobuf","target":"capability:serialisation","kind":"provides"},{"source":"actor:heliconialabs","target":"artifact:heliconialabs-abap-protobuf","kind":"maintains"},{"source":"artifact:hhelibeb-abap-data-validator","target":"capability:input-validation","kind":"provides"},{"source":"actor:hhelibeb","target":"artifact:hhelibeb-abap-data-validator","kind":"maintains"},{"source":"artifact:hhelibeb-abap-fm-logger","target":"capability:logging","kind":"provides"},{"source":"actor:hhelibeb","target":"artifact:hhelibeb-abap-fm-logger","kind":"maintains"},{"source":"artifact:hhelibeb-blowfish-abap","target":"capability:encryption","kind":"provides"},{"source":"actor:hhelibeb","target":"artifact:hhelibeb-blowfish-abap","kind":"maintains"},{"source":"artifact:hochfrequenz-aibap-mcp","target":"capability:agent-code-access","kind":"provides"},{"source":"artifact:hochfrequenz-sapgui-mcp","target":"capability:gui-automation","kind":"provides"},{"source":"artifact:htammen-ui5-cc-timerbutton","target":"capability:ui5-custom-controls","kind":"provides"},{"source":"actor:htammen","target":"artifact:htammen-ui5-cc-timerbutton","kind":"maintains"},{"source":"artifact:i562693-vkn-scaffold-fiori-ai-bridge","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:i562693-vkn","target":"artifact:i562693-vkn-scaffold-fiori-ai-bridge","kind":"maintains"},{"source":"artifact:ibm-abap-sdk-nwas-x","target":"capability:llm-integration","kind":"provides"},{"source":"actor:ibm","target":"artifact:ibm-abap-sdk-nwas-x","kind":"maintains"},{"source":"artifact:iljapostnovs-ui5plugin-linter","target":"capability:linting","kind":"provides"},{"source":"actor:iljapostnovs","target":"artifact:iljapostnovs-ui5plugin-linter","kind":"maintains"},{"source":"artifact:iljapostnovs-ui5plugin-parser","target":"domain:developer-experience","kind":"weak"},{"source":"actor:iljapostnovs","target":"artifact:iljapostnovs-ui5plugin-parser","kind":"maintains"},{"source":"artifact:iljapostnovs-ui5plugin","target":"capability:linting","kind":"provides"},{"source":"actor:iljapostnovs","target":"artifact:iljapostnovs-ui5plugin","kind":"maintains"},{"source":"artifact:invixo-abapmq","target":"capability:event-mesh","kind":"provides"},{"source":"actor:invixo","target":"artifact:invixo-abapmq","kind":"maintains"},{"source":"artifact:irodrigob-alv-utilities","target":"capability:abap-classic-ui","kind":"provides"},{"source":"actor:irodrigob","target":"artifact:irodrigob-alv-utilities","kind":"maintains"},{"source":"artifact:irumudipriyan-sap-tcode-runner","target":"capability:transaction-code-lookup","kind":"provides"},{"source":"artifact:ivanfemia-abap2gapps","target":"capability:http-clients","kind":"provides"},{"source":"actor:ivanfemia","target":"artifact:ivanfemia-abap2gapps","kind":"maintains"},{"source":"artifact:ivanfemia-abap2oauth2","target":"capability:authentication","kind":"provides"},{"source":"actor:ivanfemia","target":"artifact:ivanfemia-abap2oauth2","kind":"maintains"},{"source":"artifact:jchirk-ui5-i18n-excel-converter","target":"capability:localization","kind":"provides"},{"source":"actor:jchirk","target":"artifact:jchirk-ui5-i18n-excel-converter","kind":"maintains"},{"source":"artifact:jerome-benoit-sap-ai-provider","target":"capability:llm-integration","kind":"provides"},{"source":"actor:jerome-benoit","target":"artifact:jerome-benoit-sap-ai-provider","kind":"maintains"},{"source":"artifact:jfilak-sapcli-claude-plugin","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:jfilak","target":"artifact:jfilak-sapcli-claude-plugin","kind":"maintains"},{"source":"artifact:jrgkraus-abap-alv-struc-viewer","target":"capability:abap-classic-ui","kind":"provides"},{"source":"actor:jrgkraus","target":"artifact:jrgkraus-abap-alv-struc-viewer","kind":"maintains"},{"source":"artifact:jrgkraus-abap-gencust","target":"capability:configuration","kind":"provides"},{"source":"actor:jrgkraus","target":"artifact:jrgkraus-abap-gencust","kind":"maintains"},{"source":"artifact:jrgkraus-abap-ui-tools","target":"capability:abap-classic-ui","kind":"provides"},{"source":"actor:jrgkraus","target":"artifact:jrgkraus-abap-ui-tools","kind":"maintains"},{"source":"artifact:jrgkraus-tool-bi","target":"capability:gui-automation","kind":"provides"},{"source":"actor:jrgkraus","target":"artifact:jrgkraus-tool-bi","kind":"maintains"},{"source":"artifact:jrgkraus-zotr-utility","target":"capability:localization","kind":"provides"},{"source":"actor:jrgkraus","target":"artifact:jrgkraus-zotr-utility","kind":"maintains"},{"source":"artifact:jrodriguez-rc-abap-tasks-tracker","target":"capability:abap-transactional-model","kind":"demonstrates"},{"source":"actor:jrodriguez-rc","target":"artifact:jrodriguez-rc-abap-tasks-tracker","kind":"maintains"},{"source":"artifact:jumenengels-sac-mcp","target":"capability:agent-systems-access","kind":"provides"},{"source":"artifact:jumenengels-sac-mcp","target":"capability:analytic-modelling","kind":"provides"},{"source":"artifact:jumenengels-sac-mcp","target":"capability:warehouse-loading","kind":"provides"},{"source":"actor:jumenengels","target":"artifact:jumenengels-sac-mcp","kind":"maintains"},{"source":"artifact:kallolchakraborty-cap-guardian","target":"capability:agent-guidance","kind":"provides"},{"source":"artifact:kamilkov-supply-chain-rescue","target":"domain:process-and-workflow","kind":"weak"},{"source":"actor:kamilkov","target":"artifact:kamilkov-supply-chain-rescue","kind":"maintains"},{"source":"artifact:kamlendra-search-vocab","target":"capability:search","kind":"provides"},{"source":"artifact:kamlendra-urp-vocab","target":"capability:fiori-annotations","kind":"provides"},{"source":"artifact:kaszub09-abapdatatotableimport","target":"capability:data-import-export","kind":"provides"},{"source":"actor:kaszub09","target":"artifact:kaszub09-abapdatatotableimport","kind":"maintains"},{"source":"artifact:kaszub09-abapeasyalv","target":"capability:abap-classic-ui","kind":"provides"},{"source":"actor:kaszub09","target":"artifact:kaszub09-abapeasyalv","kind":"maintains"},{"source":"artifact:kaszub09-abaptoc","target":"capability:change-promotion","kind":"provides"},{"source":"actor:kaszub09","target":"artifact:kaszub09-abaptoc","kind":"maintains"},{"source":"artifact:kaszub09-zabap-sap-enhancements","target":"capability:abap-extensibility","kind":"provides"},{"source":"actor:kaszub09","target":"artifact:kaszub09-zabap-sap-enhancements","kind":"maintains"},{"source":"artifact:kaszub09-zabap-table-edit","target":"capability:table-maintenance","kind":"provides"},{"source":"actor:kaszub09","target":"artifact:kaszub09-zabap-table-edit","kind":"maintains"},{"source":"artifact:kaszub09-zabap-translations","target":"capability:localization","kind":"provides"},{"source":"actor:kaszub09","target":"artifact:kaszub09-zabap-translations","kind":"maintains"},{"source":"artifact:keelside-mcp-sap-cpi","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:keelside","target":"artifact:keelside-mcp-sap-cpi","kind":"maintains"},{"source":"artifact:khalidmh-capx","target":"capability:generators","kind":"provides"},{"source":"actor:khalidmh","target":"artifact:khalidmh-capx","kind":"maintains"},{"source":"artifact:krish469-sap-cap-mongodb","target":"capability:database-connectors","kind":"demonstrates"},{"source":"actor:krish469","target":"artifact:krish469-sap-cap-mongodb","kind":"maintains"},{"source":"artifact:kseretis-abap-metrics","target":"capability:code-metrics","kind":"provides"},{"source":"actor:kseretis","target":"artifact:kseretis-abap-metrics","kind":"maintains"},{"source":"artifact:ktaubmann-bella","target":"capability:agent-code-access","kind":"provides"},{"source":"artifact:ktaubmann-bella","target":"capability:editor-support","kind":"provides"},{"source":"artifact:ktaubmann-bella","target":"capability:abap-static-analysis","kind":"provides"},{"source":"actor:ktaubmann","target":"artifact:ktaubmann-bella","kind":"maintains"},{"source":"artifact:kts982-mcp-sap-gui","target":"capability:gui-automation","kind":"provides"},{"source":"actor:kts982","target":"artifact:kts982-mcp-sap-gui","kind":"maintains"},{"source":"artifact:kts982-sap-odata-explorer","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:kts982","target":"artifact:kts982-sap-odata-explorer","kind":"maintains"},{"source":"artifact:larshp-abap-object-visualizer","target":"capability:debugging","kind":"provides"},{"source":"actor:larshp","target":"artifact:larshp-abap-object-visualizer","kind":"maintains"},{"source":"artifact:larshp-abap-swagger","target":"capability:openapi","kind":"provides"},{"source":"actor:larshp","target":"artifact:larshp-abap-swagger","kind":"maintains"},{"source":"artifact:larshp-abapcov","target":"capability:abap-unit-testing","kind":"provides"},{"source":"actor:larshp","target":"artifact:larshp-abapcov","kind":"maintains"},{"source":"artifact:larshp-abapgitserver","target":"capability:abap-source-control","kind":"provides"},{"source":"actor:larshp","target":"artifact:larshp-abapgitserver","kind":"maintains"},{"source":"artifact:larshp-abapntlm","target":"capability:authentication","kind":"provides"},{"source":"actor:larshp","target":"artifact:larshp-abapntlm","kind":"maintains"},{"source":"artifact:larshp-abapopenchecks","target":"capability:abap-static-analysis","kind":"provides"},{"source":"actor:larshp","target":"artifact:larshp-abapopenchecks","kind":"maintains"},{"source":"artifact:larshp-abapopenreview","target":"capability:abap-code-review","kind":"provides"},{"source":"actor:larshp","target":"artifact:larshp-abapopenreview","kind":"maintains"},{"source":"artifact:larshp-abappgp","target":"capability:encryption","kind":"provides"},{"source":"actor:larshp","target":"artifact:larshp-abappgp","kind":"maintains"},{"source":"artifact:larshp-formfactor","target":"capability:abap-clean-code","kind":"provides"},{"source":"actor:larshp","target":"artifact:larshp-formfactor","kind":"maintains"},{"source":"artifact:larshp-updownci","target":"capability:abap-static-analysis","kind":"provides"},{"source":"actor:larshp","target":"artifact:larshp-updownci","kind":"maintains"},{"source":"artifact:larshp-vscode-abap","target":"capability:editor-support","kind":"provides"},{"source":"actor:larshp","target":"artifact:larshp-vscode-abap","kind":"maintains"},{"source":"artifact:lemaiwo-ai-core-mcp-server","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-ai-core-mcp-server","kind":"maintains"},{"source":"artifact:lemaiwo-btp-agent","target":"domain:ai-and-agents","kind":"weak"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-btp-agent","kind":"maintains"},{"source":"artifact:lemaiwo-btp-application-vulnerability-report-ui","target":"capability:database-connectors","kind":"demonstrates"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-btp-application-vulnerability-report-ui","kind":"maintains"},{"source":"artifact:lemaiwo-btp-cf-mcp-server","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-btp-cf-mcp-server","kind":"maintains"},{"source":"artifact:lemaiwo-btp-drawio-skill","target":"capability:agent-guidance","kind":"provides"},{"source":"artifact:lemaiwo-btp-drawio-skill","target":"capability:architecture-diagrams","kind":"provides"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-btp-drawio-skill","kind":"maintains"},{"source":"artifact:lemaiwo-btp-mcp-server","target":"capability:agent-systems-access","kind":"provides"},{"source":"artifact:lemaiwo-btp-mcp-server","target":"capability:account-provisioning","kind":"provides"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-btp-mcp-server","kind":"maintains"},{"source":"artifact:lemaiwo-btp-sap-odata-to-mcp-server","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-btp-sap-odata-to-mcp-server","kind":"maintains"},{"source":"artifact:lemaiwo-cap-agent-ui5-webui-sample","target":"capability:agent-tooling","kind":"demonstrates"},{"source":"artifact:lemaiwo-cap-agent-ui5-webui-sample","target":"capability:llm-integration","kind":"demonstrates"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-cap-agent-ui5-webui-sample","kind":"maintains"},{"source":"artifact:lemaiwo-cap-agent-ui5-webui","target":"capability:agent-tooling","kind":"provides"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-cap-agent-ui5-webui","kind":"maintains"},{"source":"artifact:lemaiwo-cds-plugin-handlers","target":"capability:typescript-patterns","kind":"provides"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-cds-plugin-handlers","kind":"maintains"},{"source":"artifact:lemaiwo-ci-mcp-server","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-ci-mcp-server","kind":"maintains"},{"source":"artifact:lemaiwo-odata-mcp-proxy","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-odata-mcp-proxy","kind":"maintains"},{"source":"artifact:lemaiwo-ui5-ai-features-demo","target":"capability:llm-integration","kind":"demonstrates"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-ui5-ai-features-demo","kind":"maintains"},{"source":"artifact:lemaiwo-ui5-cap-ai-features","target":"capability:llm-integration","kind":"provides"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-ui5-cap-ai-features","kind":"maintains"},{"source":"artifact:lemaiwo-ui5-cap-serverside-rendering-demo","target":"domain:ui-and-frontend-bridge","kind":"weak"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-ui5-cap-serverside-rendering-demo","kind":"maintains"},{"source":"artifact:lemaiwo-ui5-cap-serverside-rendering-plugin","target":"capability:server-side-rendering","kind":"provides"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-ui5-cap-serverside-rendering-plugin","kind":"maintains"},{"source":"artifact:lemaiwo-ui5-control-generator","target":"capability:generators","kind":"provides"},{"source":"artifact:lemaiwo-ui5-control-generator","target":"capability:ui5-custom-controls","kind":"provides"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-ui5-control-generator","kind":"maintains"},{"source":"artifact:lemaiwo-ui5-middleware-route-proxy","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-ui5-middleware-route-proxy","kind":"maintains"},{"source":"artifact:lemaiwo-ui5-space-webcomponent-library","target":"capability:ui5-web-components","kind":"demonstrates"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-ui5-space-webcomponent-library","kind":"maintains"},{"source":"artifact:lemaiwo-ui5-space-webcomponent-package","target":"capability:ui5-web-components","kind":"demonstrates"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-ui5-space-webcomponent-package","kind":"maintains"},{"source":"artifact:lemaiwo-ui5-task-cachebuster-indexing","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-ui5-task-cachebuster-indexing","kind":"maintains"},{"source":"artifact:lemaiwo-ui5-task-transpile-gen","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:lemaiwo","target":"artifact:lemaiwo-ui5-task-transpile-gen","kind":"maintains"},{"source":"artifact:likweitan-abap-skills","target":"capability:agent-guidance","kind":"provides"},{"source":"artifact:likweitan-abap-skills","target":"capability:architecture-diagrams","kind":"provides"},{"source":"actor:likweitan","target":"artifact:likweitan-abap-skills","kind":"maintains"},{"source":"artifact:lofond-drawio-skill-sap","target":"capability:architecture-diagrams","kind":"provides"},{"source":"artifact:lofond-drawio-skill-sap","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:lofond","target":"artifact:lofond-drawio-skill-sap","kind":"maintains"},{"source":"artifact:logalitech-sap-mdk-apps","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:logalitech","target":"artifact:logalitech-sap-mdk-apps","kind":"maintains"},{"source":"artifact:lopezmas-sap-pi-mcp-server","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:lopezmas","target":"artifact:lopezmas-sap-pi-mcp-server","kind":"maintains"},{"source":"artifact:lorenzobigs-cap-utils","target":"capability:reference-apps","kind":"provides"},{"source":"actor:lorenzobigs","target":"artifact:lorenzobigs-cap-utils","kind":"maintains"},{"source":"artifact:magpasulke-abap-string-interpreter","target":"capability:serialisation","kind":"provides"},{"source":"actor:magpasulke","target":"artifact:magpasulke-abap-string-interpreter","kind":"maintains"},{"source":"artifact:maherd18-sap-mcp-server","target":"capability:agent-code-access","kind":"provides"},{"source":"artifact:maherd18-sap-mcp-server","target":"capability:tool-governance","kind":"provides"},{"source":"actor:maherd18","target":"artifact:maherd18-sap-mcp-server","kind":"maintains"},{"source":"artifact:marc-bernard-tools-abap-tools-for-abapgit","target":"capability:abap-source-control","kind":"provides"},{"source":"actor:marc-bernard-tools","target":"artifact:marc-bernard-tools-abap-tools-for-abapgit","kind":"maintains"},{"source":"artifact:marc-bernard-tools-abaplint-ext-for-abapgit","target":"capability:abap-static-analysis","kind":"provides"},{"source":"actor:marc-bernard-tools","target":"artifact:marc-bernard-tools-abaplint-ext-for-abapgit","kind":"maintains"},{"source":"artifact:marc-bernard-tools-mbt-logical-object-lister","target":"capability:analytic-modelling","kind":"provides"},{"source":"actor:marc-bernard-tools","target":"artifact:marc-bernard-tools-mbt-logical-object-lister","kind":"maintains"},{"source":"artifact:marcellourbani-abap-cloud-platform","target":"capability:authentication","kind":"provides"},{"source":"actor:marcellourbani","target":"artifact:marcellourbani-abap-cloud-platform","kind":"maintains"},{"source":"artifact:marcellourbani-abap-debugger-object-graph-extension","target":"capability:debugging","kind":"provides"},{"source":"actor:marcellourbani","target":"artifact:marcellourbani-abap-debugger-object-graph-extension","kind":"maintains"},{"source":"artifact:marcellourbani-abap-trial-docker","target":"capability:local-development","kind":"provides"},{"source":"actor:marcellourbani","target":"artifact:marcellourbani-abap-trial-docker","kind":"maintains"},{"source":"artifact:marcellourbani-abapfs-extensions","target":"capability:editor-support","kind":"provides"},{"source":"actor:marcellourbani","target":"artifact:marcellourbani-abapfs-extensions","kind":"maintains"},{"source":"artifact:marcellourbani-abapgraph","target":"capability:model-visualisation","kind":"provides"},{"source":"actor:marcellourbani","target":"artifact:marcellourbani-abapgraph","kind":"maintains"},{"source":"artifact:marcellourbani-abappretty","target":"capability:abap-code-formatting","kind":"provides"},{"source":"actor:marcellourbani","target":"artifact:marcellourbani-abappretty","kind":"maintains"},{"source":"artifact:marcellourbani-decodesapsso2","target":"capability:authentication","kind":"provides"},{"source":"actor:marcellourbani","target":"artifact:marcellourbani-decodesapsso2","kind":"maintains"},{"source":"artifact:marcellourbani-graphviz-browser","target":"capability:debugging","kind":"provides"},{"source":"actor:marcellourbani","target":"artifact:marcellourbani-graphviz-browser","kind":"maintains"},{"source":"artifact:marcellourbani-personal-application-studio","target":"capability:ide-provisioning","kind":"provides"},{"source":"actor:marcellourbani","target":"artifact:marcellourbani-personal-application-studio","kind":"maintains"},{"source":"artifact:marcellourbani-sapdumpmcp","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:marcellourbani","target":"artifact:marcellourbani-sapdumpmcp","kind":"maintains"},{"source":"artifact:marcellourbani-urbani-saplink","target":"capability:abap-data-browsing","kind":"provides"},{"source":"actor:marcellourbani","target":"artifact:marcellourbani-urbani-saplink","kind":"maintains"},{"source":"artifact:marcellourbani-vscode-abap-remote-fs","target":"capability:agent-code-access","kind":"provides"},{"source":"artifact:marcellourbani-vscode-abap-remote-fs","target":"capability:agent-guidance","kind":"provides"},{"source":"artifact:marcellourbani-vscode-abap-remote-fs","target":"capability:editor-support","kind":"provides"},{"source":"artifact:marcellourbani-vscode-abap-remote-fs","target":"capability:debugging","kind":"provides"},{"source":"artifact:marcellourbani-vscode-abap-remote-fs","target":"capability:abap-data-browsing","kind":"provides"},{"source":"artifact:marcellourbani-vscode-abap-remote-fs","target":"capability:change-promotion","kind":"provides"},{"source":"artifact:marcellourbani-vscode-abap-remote-fs","target":"capability:abap-source-control","kind":"provides"},{"source":"artifact:marcellourbani-vscode-abap-remote-fs","target":"capability:abap-static-analysis","kind":"provides"},{"source":"artifact:marcellourbani-vscode-abap-remote-fs","target":"capability:abap-unit-testing","kind":"provides"},{"source":"artifact:marcellourbani-vscode-abap-remote-fs","target":"capability:code-search","kind":"provides"},{"source":"artifact:marcellourbani-vscode-abap-remote-fs","target":"capability:abap-code-formatting","kind":"provides"},{"source":"actor:marcellourbani","target":"artifact:marcellourbani-vscode-abap-remote-fs","kind":"maintains"},{"source":"artifact:marcellourbani-vscode-activecontrol","target":"capability:change-promotion","kind":"provides"},{"source":"actor:marcellourbani","target":"artifact:marcellourbani-vscode-activecontrol","kind":"maintains"},{"source":"artifact:marianfoo-abap-docs","target":"capability:documentation","kind":"demonstrates"},{"source":"actor:marianfoo","target":"artifact:marianfoo-abap-docs","kind":"maintains"},{"source":"artifact:marianfoo-btp-cf-mcp","target":"capability:mcp-servers","kind":"provides"},{"source":"actor:marianfoo","target":"artifact:marianfoo-btp-cf-mcp","kind":"maintains"},{"source":"artifact:marianfoo-btp-drawio-skill","target":"capability:agent-guidance","kind":"provides"},{"source":"artifact:marianfoo-btp-drawio-skill","target":"capability:architecture-diagrams","kind":"provides"},{"source":"actor:marianfoo","target":"artifact:marianfoo-btp-drawio-skill","kind":"maintains"},{"source":"artifact:marianfoo-cap-materialbom-graph","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"artifact:marianfoo-cap-materialbom-graph","target":"capability:reference-apps","kind":"demonstrates"},{"source":"actor:marianfoo","target":"artifact:marianfoo-cap-materialbom-graph","kind":"maintains"},{"source":"artifact:marianfoo-custom-llm-client","target":"capability:agent-tooling","kind":"demonstrates"},{"source":"artifact:marianfoo-custom-llm-client","target":"capability:llm-integration","kind":"demonstrates"},{"source":"artifact:marianfoo-custom-llm-client","target":"capability:websocket","kind":"demonstrates"},{"source":"actor:marianfoo","target":"artifact:marianfoo-custom-llm-client","kind":"maintains"},{"source":"artifact:marianfoo-fiori-table-maintenance","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"artifact:marianfoo-fiori-table-maintenance","target":"capability:odata","kind":"demonstrates"},{"source":"artifact:marianfoo-fiori-table-maintenance","target":"capability:ui5-data-binding","kind":"demonstrates"},{"source":"actor:marianfoo","target":"artifact:marianfoo-fiori-table-maintenance","kind":"maintains"},{"source":"artifact:marianfoo-llm-benchmark-abap-code-generation","target":"capability:agent-evals","kind":"provides"},{"source":"actor:marianfoo","target":"artifact:marianfoo-llm-benchmark-abap-code-generation","kind":"maintains"},{"source":"artifact:marianfoo-local-llm-client-for-sap-consultants-librechat","target":"capability:agent-code-access","kind":"demonstrates"},{"source":"actor:marianfoo","target":"artifact:marianfoo-local-llm-client-for-sap-consultants-librechat","kind":"maintains"},{"source":"artifact:marianfoo-mcp-sap-docs","target":"capability:documentation","kind":"provides"},{"source":"actor:marianfoo","target":"artifact:marianfoo-mcp-sap-docs","kind":"maintains"},{"source":"artifact:marianfoo-open-rfc","target":"capability:rfc-connectivity","kind":"provides"},{"source":"actor:marianfoo","target":"artifact:marianfoo-open-rfc","kind":"maintains"},{"source":"artifact:marianfoo-sap-api-hub-mcp","target":"capability:documentation","kind":"provides"},{"source":"actor:marianfoo","target":"artifact:marianfoo-sap-api-hub-mcp","kind":"maintains"},{"source":"artifact:marianfoo-sap-api-policy-skill","target":"capability:tool-governance","kind":"provides"},{"source":"actor:marianfoo","target":"artifact:marianfoo-sap-api-policy-skill","kind":"maintains"},{"source":"artifact:marianfoo-sap-mcp-auth","target":"capability:authentication","kind":"provides"},{"source":"actor:marianfoo","target":"artifact:marianfoo-sap-mcp-auth","kind":"maintains"},{"source":"artifact:marianfoo-sap-note-search-mcp","target":"capability:documentation","kind":"provides"},{"source":"actor:marianfoo","target":"artifact:marianfoo-sap-note-search-mcp","kind":"maintains"},{"source":"artifact:marianfoo-sap-roadmap-mcp","target":"capability:documentation","kind":"provides"},{"source":"actor:marianfoo","target":"artifact:marianfoo-sap-roadmap-mcp","kind":"maintains"},{"source":"artifact:marianfoo-ui5-call-action","target":"capability:odata","kind":"demonstrates"},{"source":"artifact:marianfoo-ui5-call-action","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"actor:marianfoo","target":"artifact:marianfoo-ui5-call-action","kind":"maintains"},{"source":"artifact:marianfoo-ui5-cc-dayjs","target":"capability:ui5-custom-controls","kind":"provides"},{"source":"actor:marianfoo","target":"artifact:marianfoo-ui5-cc-dayjs","kind":"maintains"},{"source":"artifact:marianfoo-ui5-cc-pdfviewer","target":"capability:ui5-custom-controls","kind":"provides"},{"source":"actor:marianfoo","target":"artifact:marianfoo-ui5-cc-pdfviewer","kind":"maintains"},{"source":"artifact:marianfoo-ui5-errorhandler-sample","target":"capability:ui5-build-tooling","kind":"demonstrates"},{"source":"actor:marianfoo","target":"artifact:marianfoo-ui5-errorhandler-sample","kind":"maintains"},{"source":"artifact:marianfoo-ui5-fe-mockserver-tutorial","target":"capability:ui5-testing","kind":"demonstrates"},{"source":"artifact:marianfoo-ui5-fe-mockserver-tutorial","target":"capability:ui5-build-tooling","kind":"demonstrates"},{"source":"actor:marianfoo","target":"artifact:marianfoo-ui5-fe-mockserver-tutorial","kind":"maintains"},{"source":"artifact:marianfoo-ui5-lib-diff","target":"capability:documentation","kind":"provides"},{"source":"actor:marianfoo","target":"artifact:marianfoo-ui5-lib-diff","kind":"maintains"},{"source":"artifact:marianfoo-ui5-middleware-odata-recorder","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"artifact:marianfoo-ui5-middleware-odata-recorder","target":"capability:ui5-testing","kind":"provides"},{"source":"actor:marianfoo","target":"artifact:marianfoo-ui5-middleware-odata-recorder","kind":"maintains"},{"source":"artifact:marianfoo-ui5-plugin-loader","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:marianfoo","target":"artifact:marianfoo-ui5-plugin-loader","kind":"maintains"},{"source":"artifact:marianfoo-ui5con-2026-mcpapps","target":"capability:generative-ui","kind":"demonstrates"},{"source":"actor:marianfoo","target":"artifact:marianfoo-ui5con-2026-mcpapps","kind":"maintains"},{"source":"artifact:marianfoo-ui5con24-dev-env","target":"capability:local-development","kind":"demonstrates"},{"source":"artifact:marianfoo-ui5con24-dev-env","target":"capability:ui5-build-tooling","kind":"demonstrates"},{"source":"actor:marianfoo","target":"artifact:marianfoo-ui5con24-dev-env","kind":"maintains"},{"source":"artifact:marianfoo-werkbank","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:marianfoo","target":"artifact:marianfoo-werkbank","kind":"maintains"},{"source":"artifact:marianfoo-ztoad","target":"capability:abap-data-browsing","kind":"provides"},{"source":"actor:marianfoo","target":"artifact:marianfoo-ztoad","kind":"maintains"},{"source":"artifact:mario-andreschak-mcp-abap-adt-api","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:mario-andreschak","target":"artifact:mario-andreschak-mcp-abap-adt-api","kind":"maintains"},{"source":"artifact:mario-andreschak-mcp-abap-adt","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:mario-andreschak","target":"artifact:mario-andreschak-mcp-abap-adt","kind":"maintains"},{"source":"artifact:mario-andreschak-mcp-sap-gui","target":"capability:gui-automation","kind":"provides"},{"source":"actor:mario-andreschak","target":"artifact:mario-andreschak-mcp-sap-gui","kind":"maintains"},{"source":"artifact:mariodefelipe-datasphere-plugin","target":"capability:agent-guidance","kind":"provides"},{"source":"artifact:mariodefelipe-datasphere-plugin","target":"capability:analytic-modelling","kind":"provides"},{"source":"artifact:mariodefelipe-datasphere-plugin","target":"capability:data-cataloguing","kind":"provides"},{"source":"actor:mariodefelipe","target":"artifact:mariodefelipe-datasphere-plugin","kind":"maintains"},{"source":"artifact:mariodefelipe-sap-bdc-mcp-server","target":"capability:agent-systems-access","kind":"provides"},{"source":"artifact:mariodefelipe-sap-bdc-mcp-server","target":"capability:data-cataloguing","kind":"provides"},{"source":"actor:mariodefelipe","target":"artifact:mariodefelipe-sap-bdc-mcp-server","kind":"maintains"},{"source":"artifact:mariodefelipe-sap-datasphere-mcp","target":"capability:agent-systems-access","kind":"provides"},{"source":"artifact:mariodefelipe-sap-datasphere-mcp","target":"capability:analytic-modelling","kind":"provides"},{"source":"artifact:mariodefelipe-sap-datasphere-mcp","target":"capability:warehouse-loading","kind":"provides"},{"source":"artifact:mariodefelipe-sap-datasphere-mcp","target":"capability:data-cataloguing","kind":"provides"},{"source":"actor:mariodefelipe","target":"artifact:mariodefelipe-sap-datasphere-mcp","kind":"maintains"},{"source":"artifact:mariokernich-abap-doc","target":"capability:documentation","kind":"provides"},{"source":"actor:mariokernich","target":"artifact:mariokernich-abap-doc","kind":"maintains"},{"source":"artifact:mariokernich-abapconf2026-custom-entities","target":"capability:data-modelling","kind":"demonstrates"},{"source":"artifact:mariokernich-abapconf2026-custom-entities","target":"capability:abap-transactional-model","kind":"demonstrates"},{"source":"actor:mariokernich","target":"artifact:mariokernich-abapconf2026-custom-entities","kind":"maintains"},{"source":"artifact:mariokernich-fiori-fullscreen-plugin","target":"capability:launchpad-plugins","kind":"demonstrates"},{"source":"actor:mariokernich","target":"artifact:mariokernich-fiori-fullscreen-plugin","kind":"maintains"},{"source":"artifact:mariokernich-odapu-abap","target":"capability:abap-service-testing","kind":"provides"},{"source":"actor:mariokernich","target":"artifact:mariokernich-odapu-abap","kind":"maintains"},{"source":"artifact:mariokernich-ui5-cap-todo","target":"capability:reference-apps","kind":"demonstrates"},{"source":"actor:mariokernich","target":"artifact:mariokernich-ui5-cap-todo","kind":"maintains"},{"source":"artifact:mariokernich-ui5-monorepo-showcase","target":"capability:ui5-build-tooling","kind":"demonstrates"},{"source":"artifact:mariokernich-ui5-monorepo-showcase","target":"capability:ui5-typescript","kind":"demonstrates"},{"source":"actor:mariokernich","target":"artifact:mariokernich-ui5-monorepo-showcase","kind":"maintains"},{"source":"artifact:mariokernich-ui5-tcode-finder","target":"capability:transaction-code-lookup","kind":"provides"},{"source":"actor:mariokernich","target":"artifact:mariokernich-ui5-tcode-finder","kind":"maintains"},{"source":"artifact:mariokernich-ui5-touch-controls","target":"capability:ui5-touch-uis","kind":"provides"},{"source":"actor:mariokernich","target":"artifact:mariokernich-ui5-touch-controls","kind":"maintains"},{"source":"artifact:markwury168-sap-mcp","target":"capability:mcp-servers","kind":"provides"},{"source":"actor:markwury168","target":"artifact:markwury168-sap-mcp","kind":"maintains"},{"source":"artifact:martinpankraz-az-private-linky-cap","target":"capability:destinations","kind":"demonstrates"},{"source":"actor:martinpankraz","target":"artifact:martinpankraz-az-private-linky-cap","kind":"maintains"},{"source":"artifact:matt1as-claude-abap-skills","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:matt1as","target":"artifact:matt1as-claude-abap-skills","kind":"maintains"},{"source":"artifact:mauriciolauffer-cap-js-mockdata","target":"capability:seed-data","kind":"provides"},{"source":"actor:mauriciolauffer","target":"artifact:mauriciolauffer-cap-js-mockdata","kind":"maintains"},{"source":"artifact:mauriciolauffer-eslint-plugin-better-cap-config","target":"capability:linting","kind":"provides"},{"source":"actor:mauriciolauffer","target":"artifact:mauriciolauffer-eslint-plugin-better-cap-config","kind":"maintains"},{"source":"artifact:mauriciolauffer-jest-environment-ui5","target":"capability:ui5-testing","kind":"provides"},{"source":"actor:mauriciolauffer","target":"artifact:mauriciolauffer-jest-environment-ui5","kind":"maintains"},{"source":"artifact:mauriciolauffer-openui5-error-collector","target":"capability:logging","kind":"provides"},{"source":"actor:mauriciolauffer","target":"artifact:mauriciolauffer-openui5-error-collector","kind":"maintains"},{"source":"artifact:mauriciolauffer-openui5-model-json-crud","target":"capability:ui5-data-binding","kind":"provides"},{"source":"actor:mauriciolauffer","target":"artifact:mauriciolauffer-openui5-model-json-crud","kind":"maintains"},{"source":"artifact:mauriciolauffer-openui5-model-odata-v2-odatapromise","target":"capability:ui5-data-binding","kind":"provides"},{"source":"actor:mauriciolauffer","target":"artifact:mauriciolauffer-openui5-model-odata-v2-odatapromise","kind":"maintains"},{"source":"artifact:mauriciolauffer-openui5-password","target":"capability:ui5-custom-controls","kind":"provides"},{"source":"actor:mauriciolauffer","target":"artifact:mauriciolauffer-openui5-password","kind":"maintains"},{"source":"artifact:mauriciolauffer-openui5-smart-mockserver","target":"capability:ui5-testing","kind":"provides"},{"source":"actor:mauriciolauffer","target":"artifact:mauriciolauffer-openui5-smart-mockserver","kind":"maintains"},{"source":"artifact:mauriciolauffer-openui5-tour","target":"capability:ui5-custom-controls","kind":"provides"},{"source":"actor:mauriciolauffer","target":"artifact:mauriciolauffer-openui5-tour","kind":"maintains"},{"source":"artifact:mauriciolauffer-openui5-validator","target":"capability:ui5-data-binding","kind":"provides"},{"source":"actor:mauriciolauffer","target":"artifact:mauriciolauffer-openui5-validator","kind":"maintains"},{"source":"artifact:mauriciolauffer-sap-cap-validator-plugin","target":"capability:input-validation","kind":"provides"},{"source":"actor:mauriciolauffer","target":"artifact:mauriciolauffer-sap-cap-validator-plugin","kind":"maintains"},{"source":"artifact:mauriciolauffer-ui5-deployer","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:mauriciolauffer","target":"artifact:mauriciolauffer-ui5-deployer","kind":"maintains"},{"source":"artifact:mauriciolauffer-ui5-task-dts-generator","target":"capability:ui5-typescript","kind":"provides"},{"source":"artifact:mauriciolauffer-ui5-task-dts-generator","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:mauriciolauffer","target":"artifact:mauriciolauffer-ui5-task-dts-generator","kind":"maintains"},{"source":"artifact:mauriciolauffer-ui5-task-minifier","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:mauriciolauffer","target":"artifact:mauriciolauffer-ui5-task-minifier","kind":"maintains"},{"source":"artifact:mauriciolauffer-vitest-environment-ui5","target":"capability:ui5-testing","kind":"provides"},{"source":"actor:mauriciolauffer","target":"artifact:mauriciolauffer-vitest-environment-ui5","kind":"maintains"},{"source":"artifact:mauriciolauffer-wdio-qunit-service","target":"capability:ui5-testing","kind":"provides"},{"source":"actor:mauriciolauffer","target":"artifact:mauriciolauffer-wdio-qunit-service","kind":"maintains"},{"source":"artifact:maxi1555-ui5-middleware-oidc","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:maxi1555","target":"artifact:maxi1555-ui5-middleware-oidc","kind":"maintains"},{"source":"artifact:mdjoerg-adele","target":"capability:rfc-connectivity","kind":"provides"},{"source":"actor:mdjoerg","target":"artifact:mdjoerg-adele","kind":"maintains"},{"source":"artifact:mdjoerg-mqba","target":"capability:event-mesh","kind":"provides"},{"source":"actor:mdjoerg","target":"artifact:mdjoerg-mqba","kind":"maintains"},{"source":"artifact:mertsap-capval","target":"capability:input-validation","kind":"provides"},{"source":"actor:mertsap","target":"artifact:mertsap-capval","kind":"maintains"},{"source":"artifact:mfigueir-sap-power","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:mfigueir","target":"artifact:mfigueir-sap-power","kind":"maintains"},{"source":"artifact:mi8y-cap-agents-aicore-vectorstore","target":"capability:retrieval-augmented-generation","kind":"provides"},{"source":"actor:anselm94","target":"artifact:mi8y-cap-agents-aicore-vectorstore","kind":"maintains"},{"source":"actor:mi8y","target":"artifact:mi8y-cap-agents-aicore-vectorstore","kind":"maintains"},{"source":"artifact:mi8y-cap-agents-cds-vectorstore","target":"capability:retrieval-augmented-generation","kind":"provides"},{"source":"actor:anselm94","target":"artifact:mi8y-cap-agents-cds-vectorstore","kind":"maintains"},{"source":"actor:mi8y","target":"artifact:mi8y-cap-agents-cds-vectorstore","kind":"maintains"},{"source":"artifact:mi8y-cap-agents-memory","target":"capability:agent-tooling","kind":"provides"},{"source":"actor:anselm94","target":"artifact:mi8y-cap-agents-memory","kind":"maintains"},{"source":"actor:mi8y","target":"artifact:mi8y-cap-agents-memory","kind":"maintains"},{"source":"artifact:mi8y-cap-agents-sdm-backend","target":"capability:agent-tooling","kind":"provides"},{"source":"actor:anselm94","target":"artifact:mi8y-cap-agents-sdm-backend","kind":"maintains"},{"source":"actor:mi8y","target":"artifact:mi8y-cap-agents-sdm-backend","kind":"maintains"},{"source":"artifact:mi8y-cap-agents-sdm-reports-assistant","target":"domain:ai-and-agents","kind":"weak"},{"source":"actor:anselm94","target":"artifact:mi8y-cap-agents-sdm-reports-assistant","kind":"maintains"},{"source":"actor:mi8y","target":"artifact:mi8y-cap-agents-sdm-reports-assistant","kind":"maintains"},{"source":"artifact:mi8y-cds-langgraph-persistence","target":"capability:agent-tooling","kind":"provides"},{"source":"actor:anselm94","target":"artifact:mi8y-cds-langgraph-persistence","kind":"maintains"},{"source":"actor:mi8y","target":"artifact:mi8y-cds-langgraph-persistence","kind":"maintains"},{"source":"artifact:microsoft-abap-sdk-for-azure","target":"capability:http-clients","kind":"provides"},{"source":"actor:microsoft","target":"artifact:microsoft-abap-sdk-for-azure","kind":"maintains"},{"source":"artifact:microsoft-aisdkforsapabap","target":"capability:llm-integration","kind":"provides"},{"source":"actor:microsoft","target":"artifact:microsoft-aisdkforsapabap","kind":"maintains"},{"source":"artifact:midasol-sap-mcp-server","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:midasol","target":"artifact:midasol-sap-mcp-server","kind":"maintains"},{"source":"artifact:miggi92-odata-fw","target":"capability:odata","kind":"provides"},{"source":"actor:miggi92","target":"artifact:miggi92-odata-fw","kind":"maintains"},{"source":"artifact:mikezaschka-cap-ui5-gpt-chat","target":"capability:llm-integration","kind":"demonstrates"},{"source":"artifact:mikezaschka-cap-ui5-gpt-chat","target":"capability:reference-apps","kind":"demonstrates"},{"source":"artifact:mikezaschka-cap-ui5-gpt-chat","target":"capability:typescript-patterns","kind":"demonstrates"},{"source":"actor:mike-zaschka","target":"artifact:mikezaschka-cap-ui5-gpt-chat","kind":"maintains"},{"source":"artifact:mikezaschka-cds-data-federation","target":"capability:replication","kind":"provides"},{"source":"artifact:mikezaschka-cds-data-federation","target":"capability:caching","kind":"provides"},{"source":"artifact:mikezaschka-cds-data-federation","target":"capability:service-integration","kind":"provides"},{"source":"actor:mike-zaschka","target":"artifact:mikezaschka-cds-data-federation","kind":"maintains"},{"source":"artifact:mikezaschka-cds-data-pipeline","target":"capability:replication","kind":"provides"},{"source":"actor:mike-zaschka","target":"artifact:mikezaschka-cds-data-pipeline","kind":"maintains"},{"source":"artifact:mikezaschka-cds-dbm","target":"capability:schema-evolution","kind":"provides"},{"source":"actor:mike-zaschka","target":"artifact:mikezaschka-cds-dbm","kind":"maintains"},{"source":"artifact:miyasuta-app-to-app-nav-bas","target":"capability:launchpad-content","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-app-to-app-nav-bas","kind":"maintains"},{"source":"artifact:miyasuta-assert-target","target":"capability:input-validation","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-assert-target","kind":"maintains"},{"source":"artifact:miyasuta-attachment-reuse-controls-sample","target":"capability:attachments","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-attachment-reuse-controls-sample","kind":"maintains"},{"source":"artifact:miyasuta-auth-samples","target":"capability:authentication","kind":"demonstrates"},{"source":"artifact:miyasuta-auth-samples","target":"capability:authorization","kind":"demonstrates"},{"source":"artifact:miyasuta-auth-samples","target":"capability:service-integration","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-auth-samples","kind":"maintains"},{"source":"artifact:miyasuta-auth-transport","target":"capability:account-provisioning","kind":"provides"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-auth-transport","kind":"maintains"},{"source":"artifact:miyasuta-auth-transport2","target":"capability:account-provisioning","kind":"demonstrates"},{"source":"artifact:miyasuta-auth-transport2","target":"capability:authorization","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-auth-transport2","kind":"maintains"},{"source":"artifact:miyasuta-blog-bookshop","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"artifact:miyasuta-blog-bookshop","target":"capability:deployment","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-blog-bookshop","kind":"maintains"},{"source":"artifact:miyasuta-blog-cap-chart","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"artifact:miyasuta-blog-cap-chart","target":"capability:analytical-queries","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-blog-cap-chart","kind":"maintains"},{"source":"artifact:miyasuta-btp-ui5-show-userinfo","target":"capability:authentication","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-btp-ui5-show-userinfo","kind":"maintains"},{"source":"artifact:miyasuta-btp-user-role-request","target":"capability:process-automation","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-btp-user-role-request","kind":"maintains"},{"source":"artifact:miyasuta-cap-alp","target":"capability:analytical-queries","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-alp","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-alp","kind":"maintains"},{"source":"artifact:miyasuta-cap-ams-a2a","target":"capability:authentication","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-ams-a2a","target":"capability:authorization","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-ams-a2a","target":"capability:destinations","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-ams-a2a","kind":"maintains"},{"source":"artifact:miyasuta-cap-bp-rag","target":"capability:retrieval-augmented-generation","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-bp-rag","target":"capability:event-mesh","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-bp-rag","kind":"maintains"},{"source":"artifact:miyasuta-cap-cds-typer","target":"capability:typing","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-cds-typer","kind":"maintains"},{"source":"artifact:miyasuta-cap-cross-container","target":"capability:database-connectors","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-cross-container","target":"capability:service-composition","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-cross-container","target":"capability:hana-native-artifacts","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-cross-container","kind":"maintains"},{"source":"artifact:miyasuta-cap-defaultvalue-function","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-defaultvalue-function","target":"capability:draft-handling","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-defaultvalue-function","kind":"maintains"},{"source":"artifact:miyasuta-cap-embedding-function","target":"capability:retrieval-augmented-generation","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-embedding-function","kind":"maintains"},{"source":"artifact:miyasuta-cap-external-northwind","target":"capability:service-integration","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-external-northwind","target":"capability:destinations","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-external-northwind","kind":"maintains"},{"source":"artifact:miyasuta-cap-fe-massedit","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-fe-massedit","target":"capability:draft-handling","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-fe-massedit","kind":"maintains"},{"source":"artifact:miyasuta-cap-feature-control","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-feature-control","kind":"maintains"},{"source":"artifact:miyasuta-cap-github-action","target":"capability:ci-cd","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-github-action","target":"capability:deployment","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-github-action","kind":"maintains"},{"source":"artifact:miyasuta-cap-java-auth-check","target":"capability:authorization","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-java-auth-check","kind":"maintains"},{"source":"artifact:miyasuta-cap-java-child","target":"capability:ci-cd","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-java-child","kind":"maintains"},{"source":"artifact:miyasuta-cap-java-draft-composition-delete","target":"capability:draft-handling","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-java-draft-composition-delete","kind":"maintains"},{"source":"artifact:miyasuta-cap-java-parent-pom-sample","target":"capability:ci-cd","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-java-parent-pom-sample","kind":"maintains"},{"source":"artifact:miyasuta-cap-java-resilience","target":"capability:service-integration","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-java-resilience","target":"capability:local-development","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-java-resilience","kind":"maintains"},{"source":"artifact:miyasuta-cap-java-snippets","target":"capability:error-handling","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-java-snippets","target":"capability:testing","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-java-snippets","target":"capability:local-development","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-java-snippets","target":"capability:logging","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-java-snippets","kind":"maintains"},{"source":"artifact:miyasuta-cap-js-notifications","target":"capability:notifications","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-js-notifications","kind":"maintains"},{"source":"artifact:miyasuta-cap-media","target":"capability:attachments","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-media","kind":"maintains"},{"source":"artifact:miyasuta-cap-oauth-destination","target":"capability:destinations","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-oauth-destination","kind":"maintains"},{"source":"artifact:miyasuta-cap-openai","target":"capability:llm-integration","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-openai","target":"capability:service-integration","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-openai","target":"capability:destinations","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-openai","kind":"maintains"},{"source":"artifact:miyasuta-cap-openapi","target":"capability:openapi","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-openapi","target":"capability:destinations","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-openapi","kind":"maintains"},{"source":"artifact:miyasuta-cap-principal-propagation","target":"capability:destinations","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-principal-propagation","target":"capability:service-integration","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-principal-propagation","kind":"maintains"},{"source":"artifact:miyasuta-cap-redis","target":"capability:deployment","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-redis","target":"capability:app-hosting","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-redis","kind":"maintains"},{"source":"artifact:miyasuta-cap-reuse-html5","target":"capability:launchpad-content","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-reuse-html5","target":"capability:app-hosting","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-reuse-html5","kind":"maintains"},{"source":"artifact:miyasuta-cap-rfc","target":"capability:rfc-connectivity","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-rfc","target":"capability:destinations","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-rfc","kind":"maintains"},{"source":"artifact:miyasuta-cap-ui","target":"capability:deployment","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-ui","target":"capability:app-hosting","kind":"demonstrates"},{"source":"artifact:miyasuta-cap-ui","target":"capability:destinations","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-ui","kind":"maintains"},{"source":"artifact:miyasuta-cap-vector-hc","target":"capability:retrieval-augmented-generation","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cap-vector-hc","kind":"maintains"},{"source":"artifact:miyasuta-cds-feature-softdelete","target":"capability:soft-delete","kind":"provides"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cds-feature-softdelete","kind":"maintains"},{"source":"artifact:miyasuta-cds-softdelete-plugin","target":"capability:soft-delete","kind":"provides"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-cds-softdelete-plugin","kind":"maintains"},{"source":"artifact:miyasuta-claude-drawio-btp-diagram","target":"capability:agent-guidance","kind":"provides"},{"source":"artifact:miyasuta-claude-drawio-btp-diagram","target":"capability:architecture-diagrams","kind":"provides"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-claude-drawio-btp-diagram","kind":"maintains"},{"source":"artifact:miyasuta-fiori-dynamic-feature-control","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-fiori-dynamic-feature-control","kind":"maintains"},{"source":"artifact:miyasuta-fiori-inline-edit","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"artifact:miyasuta-fiori-inline-edit","target":"capability:draft-handling","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-fiori-inline-edit","kind":"maintains"},{"source":"artifact:miyasuta-fiori-invoke-function","target":"capability:odata","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-fiori-invoke-function","kind":"maintains"},{"source":"artifact:miyasuta-fiori-navigation-patterns","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-fiori-navigation-patterns","kind":"maintains"},{"source":"artifact:miyasuta-generator-ui5-library-af-deploy","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-generator-ui5-library-af-deploy","kind":"maintains"},{"source":"artifact:miyasuta-ui5-upload-controls","target":"capability:attachments","kind":"provides"},{"source":"actor:mio-yasutake","target":"artifact:miyasuta-ui5-upload-controls","kind":"maintains"},{"source":"artifact:mkysoft-xlsxreader","target":"capability:data-import-export","kind":"provides"},{"source":"actor:mkysoft","target":"artifact:mkysoft-xlsxreader","kind":"maintains"},{"source":"artifact:mkysoft-zstrust","target":"capability:certificate-management","kind":"provides"},{"source":"actor:mkysoft","target":"artifact:mkysoft-zstrust","kind":"maintains"},{"source":"artifact:monstermichl-handlebarsabap","target":"capability:document-output","kind":"provides"},{"source":"actor:monstermichl","target":"artifact:monstermichl-handlebarsabap","kind":"maintains"},{"source":"artifact:mpah-enum-value-help","target":"capability:fiori-annotations","kind":"provides"},{"source":"actor:mpah","target":"artifact:mpah-enum-value-help","kind":"maintains"},{"source":"artifact:mrbandler-cds-routing-handlers","target":"capability:typescript-patterns","kind":"provides"},{"source":"actor:mrbandler","target":"artifact:mrbandler-cds-routing-handlers","kind":"maintains"},{"source":"artifact:mrbandler-cds2types","target":"capability:typescript-patterns","kind":"provides"},{"source":"actor:mrbandler","target":"artifact:mrbandler-cds2types","kind":"maintains"},{"source":"artifact:mubuntu-cap-handler-framework","target":"capability:draft-handling","kind":"provides"},{"source":"artifact:mubuntu-cap-handler-framework","target":"capability:typescript-patterns","kind":"provides"},{"source":"actor:mubuntu","target":"artifact:mubuntu-cap-handler-framework","kind":"maintains"},{"source":"artifact:muhammad-abdullah333-sap-mcp-bridge","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:muhammad-abdullah333","target":"artifact:muhammad-abdullah333-sap-mcp-bridge","kind":"maintains"},{"source":"artifact:murattahtaciii-abap-architect","target":"capability:serialisation","kind":"provides"},{"source":"actor:murattahtaciii","target":"artifact:murattahtaciii-abap-architect","kind":"maintains"},{"source":"artifact:nagarjundas1994-aiagents-cds-agents","target":"capability:agent-tooling","kind":"provides"},{"source":"artifact:nagarjundas1994-aiagents-cds-agents","target":"capability:tool-governance","kind":"provides"},{"source":"actor:nagarjundas1994-aiagents","target":"artifact:nagarjundas1994-aiagents-cds-agents","kind":"maintains"},{"source":"artifact:nagarjundas1994-aiagents-cds-validate","target":"capability:input-validation","kind":"provides"},{"source":"actor:nagarjundas1994-aiagents","target":"artifact:nagarjundas1994-aiagents-cds-validate","kind":"maintains"},{"source":"artifact:navinkrishnan-cds-incidents-sample","target":"capability:reference-apps","kind":"provides"},{"source":"actor:navinkrishnan","target":"artifact:navinkrishnan-cds-incidents-sample","kind":"maintains"},{"source":"artifact:neoimpulse-cap-js-bootstrap","target":"capability:local-development","kind":"provides"},{"source":"actor:neoimpulse","target":"artifact:neoimpulse-cap-js-bootstrap","kind":"maintains"},{"source":"artifact:neoimpulse-cap-js-mcp","target":"capability:mcp-servers","kind":"provides"},{"source":"actor:neoimpulse","target":"artifact:neoimpulse-cap-js-mcp","kind":"maintains"},{"source":"artifact:neoimpulse-cap-js-notifications","target":"capability:notifications","kind":"provides"},{"source":"actor:neoimpulse","target":"artifact:neoimpulse-cap-js-notifications","kind":"maintains"},{"source":"artifact:neoimpulse-cap-js-restore-model-defined-types","target":"capability:database-connectors","kind":"provides"},{"source":"actor:neoimpulse","target":"artifact:neoimpulse-cap-js-restore-model-defined-types","kind":"maintains"},{"source":"artifact:neoimpulse-cap-js-trim","target":"capability:value-normalisation","kind":"provides"},{"source":"actor:neoimpulse","target":"artifact:neoimpulse-cap-js-trim","kind":"maintains"},{"source":"artifact:neoimpulse-cap-js-uppercase","target":"capability:value-normalisation","kind":"provides"},{"source":"actor:neoimpulse","target":"artifact:neoimpulse-cap-js-uppercase","kind":"maintains"},{"source":"artifact:neoimpulse-cap-js-xml-protocol","target":"capability:xml-payloads","kind":"provides"},{"source":"actor:neoimpulse","target":"artifact:neoimpulse-cap-js-xml-protocol","kind":"maintains"},{"source":"artifact:nickels-sap-ai-docs-mcp","target":"capability:documentation","kind":"provides"},{"source":"artifact:nickels-sap-btp-docs-mcp","target":"capability:documentation","kind":"provides"},{"source":"artifact:nicohern-abapilot-mcp","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:nicohern","target":"artifact:nicohern-abapilot-mcp","kind":"maintains"},{"source":"artifact:oberstvongatow-abapgenerator","target":"capability:generators","kind":"provides"},{"source":"actor:oberstvongatow","target":"artifact:oberstvongatow-abapgenerator","kind":"maintains"},{"source":"artifact:odatano-core-mcp","target":"capability:mcp-servers","kind":"provides"},{"source":"artifact:odatano-core","target":"capability:odata","kind":"provides"},{"source":"actor:odatano","target":"artifact:odatano-core","kind":"maintains"},{"source":"artifact:odatano-nightgate-mcp","target":"capability:mcp-servers","kind":"provides"},{"source":"actor:odatano","target":"artifact:odatano-nightgate-mcp","kind":"maintains"},{"source":"artifact:odatano-nightgate","target":"capability:odata","kind":"provides"},{"source":"actor:odatano","target":"artifact:odatano-nightgate","kind":"maintains"},{"source":"artifact:odatano-watch","target":"capability:async-processing","kind":"provides"},{"source":"actor:odatano","target":"artifact:odatano-watch","kind":"maintains"},{"source":"artifact:oisee-odata-mcp-go","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:oisee","target":"artifact:oisee-odata-mcp-go","kind":"maintains"},{"source":"artifact:oisee-odata-mcp","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:oisee","target":"artifact:oisee-odata-mcp","kind":"maintains"},{"source":"artifact:oisee-open-steamgate","target":"capability:odata","kind":"provides"},{"source":"artifact:oisee-open-steamgate","target":"capability:local-development","kind":"provides"},{"source":"artifact:oisee-open-steamgate","target":"capability:abap-unit-testing","kind":"provides"},{"source":"actor:oisee","target":"artifact:oisee-open-steamgate","kind":"maintains"},{"source":"artifact:oisee-vibing-steampunk","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:oisee","target":"artifact:oisee-vibing-steampunk","kind":"maintains"},{"source":"artifact:oisee-zllm","target":"capability:llm-integration","kind":"provides"},{"source":"actor:oisee","target":"artifact:oisee-zllm","kind":"maintains"},{"source":"artifact:oisee-zvdb","target":"capability:retrieval-augmented-generation","kind":"provides"},{"source":"actor:oisee","target":"artifact:oisee-zvdb","kind":"maintains"},{"source":"artifact:olegbash599-anytabupdatetask","target":"capability:abap-transactional-model","kind":"provides"},{"source":"actor:olegbash599","target":"artifact:olegbash599-anytabupdatetask","kind":"maintains"},{"source":"artifact:olegbash599-zc8a-001","target":"capability:search","kind":"demonstrates"},{"source":"actor:olegbash599","target":"artifact:olegbash599-zc8a-001","kind":"maintains"},{"source":"artifact:olegbash599-zcts-browser","target":"capability:change-promotion","kind":"provides"},{"source":"actor:olegbash599","target":"artifact:olegbash599-zcts-browser","kind":"maintains"},{"source":"artifact:onurakca-sapui5-adaptation-project-downloader","target":"capability:ui5-flexibility","kind":"provides"},{"source":"actor:onurakca","target":"artifact:onurakca-sapui5-adaptation-project-downloader","kind":"maintains"},{"source":"artifact:open-abap-cross-http-client","target":"capability:http-clients","kind":"provides"},{"source":"actor:open-abap","target":"artifact:open-abap-cross-http-client","kind":"maintains"},{"source":"artifact:open-abap-express-icf-shim","target":"capability:abap-unit-testing","kind":"provides"},{"source":"actor:open-abap","target":"artifact:open-abap-express-icf-shim","kind":"maintains"},{"source":"artifact:open-abap-open-abap-bal","target":"capability:logging","kind":"provides"},{"source":"actor:open-abap","target":"artifact:open-abap-open-abap-bal","kind":"maintains"},{"source":"artifact:open-abap-open-abap-core","target":"capability:abap-unit-testing","kind":"provides"},{"source":"actor:open-abap","target":"artifact:open-abap-open-abap-core","kind":"maintains"},{"source":"artifact:open-abap-open-abap-gui","target":"domain:ui-and-frontend-bridge","kind":"weak"},{"source":"actor:open-abap","target":"artifact:open-abap-open-abap-gui","kind":"maintains"},{"source":"artifact:open-abap-open-abap-lock","target":"domain:data-and-persistence","kind":"weak"},{"source":"actor:open-abap","target":"artifact:open-abap-open-abap-lock","kind":"maintains"},{"source":"artifact:open-abap-open-abap-odata","target":"capability:odata","kind":"provides"},{"source":"actor:open-abap","target":"artifact:open-abap-open-abap-odata","kind":"maintains"},{"source":"artifact:open-abap-open-abap-pdf","target":"capability:document-output","kind":"provides"},{"source":"actor:open-abap","target":"artifact:open-abap-open-abap-pdf","kind":"maintains"},{"source":"artifact:open-abap-open-table-maintenance","target":"capability:table-maintenance","kind":"provides"},{"source":"actor:open-abap","target":"artifact:open-abap-open-table-maintenance","kind":"maintains"},{"source":"artifact:openui5-core","target":"capability:ui5-routing","kind":"provides"},{"source":"artifact:openui5-core","target":"capability:ui5-data-binding","kind":"provides"},{"source":"artifact:openui5-core","target":"capability:ui5-theming","kind":"provides"},{"source":"artifact:openui5-core","target":"capability:ui5-flexibility","kind":"provides"},{"source":"artifact:openui5-core","target":"capability:ui5-testing","kind":"provides"},{"source":"artifact:openui5-core","target":"capability:ui5-typescript","kind":"provides"},{"source":"artifact:openui5-core","target":"capability:ui5-web-components","kind":"provides"},{"source":"artifact:openui5-core","target":"capability:accessibility","kind":"provides"},{"source":"artifact:openui5-core","target":"capability:logging","kind":"provides"},{"source":"actor:sap","target":"artifact:openui5-core","kind":"maintains"},{"source":"artifact:pacroy-abap-fluentd","target":"capability:logging","kind":"provides"},{"source":"actor:pacroy","target":"artifact:pacroy-abap-fluentd","kind":"maintains"},{"source":"artifact:pacroy-abap-prometheus","target":"capability:telemetry","kind":"provides"},{"source":"actor:pacroy","target":"artifact:pacroy-abap-prometheus","kind":"maintains"},{"source":"artifact:patimweb-pi-cap-bestpractices","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:smotherer007","target":"artifact:patimweb-pi-cap-bestpractices","kind":"maintains"},{"source":"artifact:pawelwiejkut-bw-remove-characters","target":"capability:warehouse-loading","kind":"provides"},{"source":"actor:pawelwiejkut","target":"artifact:pawelwiejkut-bw-remove-characters","kind":"maintains"},{"source":"artifact:pawelwiejkut-bw-trfn-pocketknife","target":"capability:warehouse-loading","kind":"provides"},{"source":"actor:pawelwiejkut","target":"artifact:pawelwiejkut-bw-trfn-pocketknife","kind":"maintains"},{"source":"artifact:peterlangner-zrss","target":"capability:notifications","kind":"provides"},{"source":"actor:peterlangner","target":"artifact:peterlangner-zrss","kind":"maintains"},{"source":"artifact:pokrakam-abapdevsysinit","target":"capability:local-development","kind":"provides"},{"source":"actor:pokrakam","target":"artifact:pokrakam-abapdevsysinit","kind":"maintains"},{"source":"artifact:preetamkajalrout-ui5-middleware-destination","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:preetamkajalrout","target":"artifact:preetamkajalrout-ui5-middleware-destination","kind":"maintains"},{"source":"artifact:pulseshift-ui5-lib-visualization","target":"capability:ui5-custom-controls","kind":"provides"},{"source":"actor:pulseshift","target":"artifact:pulseshift-ui5-lib-visualization","kind":"maintains"},{"source":"artifact:pwasem-cds-plugin-typescript","target":"capability:typescript-patterns","kind":"provides"},{"source":"actor:pwasem","target":"artifact:pwasem-cds-plugin-typescript","kind":"maintains"},{"source":"artifact:quadrio-cds-db2","target":"capability:database-connectors","kind":"provides"},{"source":"artifact:quadrio-cds-dbm","target":"capability:schema-evolution","kind":"provides"},{"source":"actor:quadrio","target":"artifact:quadrio-cds-dbm","kind":"maintains"},{"source":"artifact:qualiture-audit-summary","target":"capability:vulnerability-scanning","kind":"provides"},{"source":"artifact:qualiture-audit-summary","target":"capability:ci-cd","kind":"provides"},{"source":"actor:qualiture","target":"artifact:qualiture-audit-summary","kind":"maintains"},{"source":"artifact:qualiture-basenvsync","target":"capability:ide-provisioning","kind":"provides"},{"source":"actor:qualiture","target":"artifact:qualiture-basenvsync","kind":"maintains"},{"source":"artifact:qualiture-enforce-export-coverage","target":"capability:testing","kind":"provides"},{"source":"actor:qualiture","target":"artifact:qualiture-enforce-export-coverage","kind":"maintains"},{"source":"artifact:qualiture-git-env-branches","target":"capability:change-promotion","kind":"provides"},{"source":"actor:qualiture","target":"artifact:qualiture-git-env-branches","kind":"maintains"},{"source":"artifact:qualiture-hana-linter","target":"capability:linting","kind":"provides"},{"source":"actor:qualiture","target":"artifact:qualiture-hana-linter","kind":"maintains"},{"source":"artifact:qualiture-ui5-task-check-eocp","target":"capability:product-maintenance-status","kind":"provides"},{"source":"artifact:qualiture-ui5-task-check-eocp","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:qualiture","target":"artifact:qualiture-ui5-task-check-eocp","kind":"maintains"},{"source":"artifact:rabestro-sap-cds-erd","target":"capability:model-visualisation","kind":"provides"},{"source":"actor:rabestro","target":"artifact:rabestro-sap-cds-erd","kind":"maintains"},{"source":"artifact:rahulsethi-sap-bdc-mcp","target":"capability:agent-systems-access","kind":"provides"},{"source":"artifact:rahulsethi-sap-bdc-mcp","target":"capability:data-cataloguing","kind":"provides"},{"source":"actor:rahulsethi","target":"artifact:rahulsethi-sap-bdc-mcp","kind":"maintains"},{"source":"artifact:rahulsethi-sap-datasphere-mcp","target":"capability:agent-systems-access","kind":"provides"},{"source":"artifact:rahulsethi-sap-datasphere-mcp","target":"capability:data-cataloguing","kind":"provides"},{"source":"actor:rahulsethi","target":"artifact:rahulsethi-sap-datasphere-mcp","kind":"maintains"},{"source":"artifact:raketenstart-abap-abap-feature-toggle","target":"capability:feature-toggles","kind":"provides"},{"source":"actor:raketenstart-abap","target":"artifact:raketenstart-abap-abap-feature-toggle","kind":"maintains"},{"source":"artifact:raketenstart-abap-abap-tvarvc","target":"capability:configuration","kind":"provides"},{"source":"actor:raketenstart-abap","target":"artifact:raketenstart-abap-abap-tvarvc","kind":"maintains"},{"source":"artifact:rayatus-abapgit-commitlint","target":"capability:abap-source-control","kind":"provides"},{"source":"actor:rayatus","target":"artifact:rayatus-abapgit-commitlint","kind":"maintains"},{"source":"artifact:rdisomma-ui5x","target":"capability:ui5-custom-controls","kind":"provides"},{"source":"artifact:rdisomma-ui5x","target":"capability:accessibility","kind":"provides"},{"source":"actor:rdisomma","target":"artifact:rdisomma-ui5x","kind":"maintains"},{"source":"artifact:regestaitalia-trm-server","target":"capability:abap-source-control","kind":"provides"},{"source":"actor:regestaitalia","target":"artifact:regestaitalia-trm-server","kind":"maintains"},{"source":"artifact:reyemsaibot-qtt","target":"capability:change-promotion","kind":"provides"},{"source":"actor:reyemsaibot","target":"artifact:reyemsaibot-qtt","kind":"maintains"},{"source":"artifact:reyemsaibot-scf","target":"capability:code-search","kind":"provides"},{"source":"actor:reyemsaibot","target":"artifact:reyemsaibot-scf","kind":"maintains"},{"source":"artifact:rizing-cds-customer-stepbystep-tool","target":"capability:deployment","kind":"provides"},{"source":"artifact:rizing-cds-extension","target":"capability:draft-handling","kind":"provides"},{"source":"artifact:rku-it-gmbh-cds2alv","target":"capability:abap-classic-ui","kind":"provides"},{"source":"actor:rku-it-gmbh","target":"artifact:rku-it-gmbh-cds2alv","kind":"maintains"},{"source":"artifact:robertriedel-pod2-config-skill","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:robertriedel","target":"artifact:robertriedel-pod2-config-skill","kind":"maintains"},{"source":"artifact:romankorim-sap-mcp-server","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:romankorim","target":"artifact:romankorim-sap-mcp-server","kind":"maintains"},{"source":"artifact:root3287-cap-segw","target":"capability:odata","kind":"provides"},{"source":"actor:root3287","target":"artifact:root3287-cap-segw","kind":"maintains"},{"source":"artifact:salvatorelaspata-cap-plugin-adobe-forms","target":"capability:document-output","kind":"provides"},{"source":"actor:salvatorelaspata","target":"artifact:salvatorelaspata-cap-plugin-adobe-forms","kind":"maintains"},{"source":"artifact:sang2x-captools","target":"capability:local-development","kind":"provides"},{"source":"artifact:sanjay-sde-cap-js-log-control","target":"capability:telemetry","kind":"provides"},{"source":"actor:sanjaybabusp","target":"artifact:sanjay-sde-cap-js-log-control","kind":"maintains"},{"source":"artifact:sanoberrehman-cap-mcp-bridge","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:sanoberrehman","target":"artifact:sanoberrehman-cap-mcp-bridge","kind":"maintains"},{"source":"artifact:sap-abap-ai-sdk","target":"capability:llm-integration","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-abap-ai-sdk","kind":"maintains"},{"source":"artifact:sap-abap-atc-cr-cv-s4hc","target":"capability:abap-cloud-readiness","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-abap-atc-cr-cv-s4hc","kind":"maintains"},{"source":"artifact:sap-abap-file-formats","target":"capability:abap-source-control","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-abap-file-formats","kind":"maintains"},{"source":"artifact:sap-abap-to-json","target":"capability:serialisation","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-abap-to-json","kind":"maintains"},{"source":"artifact:sap-adt-eclipse","target":"capability:abap-data-browsing","kind":"provides"},{"source":"artifact:sap-adt-eclipse","target":"capability:editor-support","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-adt-eclipse","kind":"maintains"},{"source":"artifact:sap-adt-mcp-server","target":"capability:agent-code-access","kind":"provides"},{"source":"artifact:sap-adt-vscode","target":"capability:editor-support","kind":"provides"},{"source":"artifact:sap-adt-vscode","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-adt-vscode","kind":"maintains"},{"source":"artifact:sap-adt","target":"domain:developer-experience","kind":"weak"},{"source":"actor:sap","target":"artifact:sap-adt","kind":"maintains"},{"source":"artifact:sap-ai-sdk-ai-api","target":"capability:llm-integration","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-ai-sdk-ai-api","kind":"maintains"},{"source":"artifact:sap-ai-sdk-core","target":"capability:llm-integration","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-ai-sdk-core","kind":"maintains"},{"source":"artifact:sap-ai-sdk-foundation-models","target":"capability:llm-integration","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-ai-sdk-foundation-models","kind":"maintains"},{"source":"artifact:sap-ai-sdk-orchestration","target":"capability:llm-integration","kind":"provides"},{"source":"artifact:sap-ai-sdk-orchestration","target":"capability:prompt-management","kind":"provides"},{"source":"artifact:sap-ai-sdk-orchestration","target":"capability:data-masking","kind":"provides"},{"source":"artifact:sap-ai-sdk-orchestration","target":"capability:content-filtering","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-ai-sdk-orchestration","kind":"maintains"},{"source":"artifact:sap-ai-sdk-prompt-registry","target":"capability:llm-integration","kind":"provides"},{"source":"artifact:sap-ai-sdk-prompt-registry","target":"capability:prompt-management","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-ai-sdk-prompt-registry","kind":"maintains"},{"source":"artifact:sap-aicore-skills","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-aicore-skills","kind":"maintains"},{"source":"artifact:sap-ams-dev","target":"capability:local-development","kind":"provides"},{"source":"artifact:sap-ams-dev","target":"capability:authorization","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-ams-dev","kind":"maintains"},{"source":"artifact:sap-ams","target":"capability:authorization","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-ams","kind":"maintains"},{"source":"artifact:sap-appfront-cli","target":"capability:frontend-boundary","kind":"provides"},{"source":"artifact:sap-approuter","target":"capability:app-hosting","kind":"provides"},{"source":"artifact:sap-approuter","target":"capability:authentication","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-approuter","kind":"maintains"},{"source":"artifact:sap-archive-digital-manufacturing-test-automation-samples","target":"capability:testing","kind":"demonstrates"},{"source":"actor:sap-archive","target":"artifact:sap-archive-digital-manufacturing-test-automation-samples","kind":"maintains"},{"source":"artifact:sap-artifact-management","target":"capability:deployment-operator","kind":"provides"},{"source":"artifact:sap-automation-pilot-agent-skills","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-automation-pilot-agent-skills","kind":"maintains"},{"source":"artifact:sap-btp-administration-mcp","target":"capability:agent-systems-access","kind":"provides"},{"source":"artifact:sap-btp-administration-mcp","target":"capability:account-provisioning","kind":"provides"},{"source":"artifact:sap-btp-setup-automator","target":"capability:account-provisioning","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-btp-setup-automator","kind":"maintains"},{"source":"actor:sap-archive","target":"artifact:sap-btp-setup-automator","kind":"maintains"},{"source":"artifact:sap-btp-solution-diagrams","target":"capability:architecture-diagrams","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-btp-solution-diagrams","kind":"maintains"},{"source":"artifact:sap-build-code-joule","target":"capability:generators","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-build-code-joule","kind":"maintains"},{"source":"artifact:sap-cds-analytics","target":"capability:analytical-models","kind":"provides"},{"source":"artifact:sap-cds-common-content","target":"capability:data-modelling","kind":"provides"},{"source":"artifact:sap-cds-common-content","target":"capability:seed-data","kind":"provides"},{"source":"artifact:sap-cds-common-content","target":"capability:service-composition","kind":"provides"},{"source":"artifact:sap-cds-compiler","target":"capability:data-modelling","kind":"provides"},{"source":"artifact:sap-cds-dk","target":"capability:generators","kind":"provides"},{"source":"artifact:sap-cds-dk","target":"capability:local-development","kind":"provides"},{"source":"artifact:sap-cds-dk","target":"capability:deployment","kind":"provides"},{"source":"artifact:sap-cds-dk","target":"capability:hana-native-artifacts","kind":"provides"},{"source":"artifact:sap-cds-dk","target":"capability:ci-cd","kind":"provides"},{"source":"artifact:sap-cds-dk","target":"capability:plugin-authoring","kind":"provides"},{"source":"artifact:sap-cds-dk","target":"capability:debugging","kind":"provides"},{"source":"artifact:sap-cds-dk","target":"capability:model-visualisation","kind":"provides"},{"source":"artifact:sap-cds-dk","target":"capability:service-integration","kind":"provides"},{"source":"artifact:sap-cds-fiori","target":"capability:draft-handling","kind":"provides"},{"source":"artifact:sap-cds-fiori","target":"capability:fiori-annotations","kind":"provides"},{"source":"artifact:sap-cds-hana","target":"capability:database-connectors","kind":"provides"},{"source":"artifact:sap-cds-lsp","target":"capability:editor-support","kind":"provides"},{"source":"artifact:sap-cds-mtxs","target":"capability:schema-evolution","kind":"provides"},{"source":"artifact:sap-cds-mtxs","target":"capability:multitenancy","kind":"provides"},{"source":"artifact:sap-cds-mtxs","target":"capability:tenant-extensibility","kind":"provides"},{"source":"artifact:sap-cds-mtxs","target":"capability:feature-toggles","kind":"provides"},{"source":"artifact:sap-cds-oyster","target":"capability:multitenancy","kind":"provides"},{"source":"artifact:sap-cds-rfc","target":"capability:rfc-connectivity","kind":"provides"},{"source":"artifact:sap-cds-textmate-grammar","target":"capability:editor-support","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-cds-textmate-grammar","kind":"maintains"},{"source":"artifact:sap-cds","target":"capability:authorization","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:authentication","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:input-validation","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:error-handling","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:localization","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:draft-handling","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:search","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:analytical-queries","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:pagination-and-streaming","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:configuration","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:schema-evolution","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:seed-data","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:metadata-publishing","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:fiori-annotations","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:frontend-boundary","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:job-scheduling","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:caching","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:destinations","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:retrieval-augmented-generation","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:attachments","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:async-processing","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:temporal-data","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:service-integration","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:service-composition","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:hana-native-artifacts","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:transaction-management","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:event-mesh","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:replication","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:data-privacy","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:data-modelling","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:database-connectors","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:health-checks","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:local-development","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:multitenancy","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:odata","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:status-flows","kind":"provides"},{"source":"artifact:sap-cds","target":"capability:concurrency-control","kind":"provides"},{"source":"artifact:sap-cloud-connector","target":"capability:rfc-connectivity","kind":"provides"},{"source":"artifact:sap-cloud-connector","target":"capability:authentication","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-cloud-connector","kind":"maintains"},{"source":"artifact:sap-cloud-sdk-connectivity","target":"capability:destinations","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-cloud-sdk-connectivity","kind":"maintains"},{"source":"artifact:sap-cloud-sdk-http-client","target":"capability:destinations","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-cloud-sdk-http-client","kind":"maintains"},{"source":"artifact:sap-cloud-sdk-odata-common","target":"capability:destinations","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-cloud-sdk-odata-common","kind":"maintains"},{"source":"artifact:sap-cloud-sdk-openapi","target":"capability:destinations","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-cloud-sdk-openapi","kind":"maintains"},{"source":"artifact:sap-cloud-sdk-resilience","target":"capability:destinations","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-cloud-sdk-resilience","kind":"maintains"},{"source":"artifact:sap-cloud-sdk-util","target":"capability:destinations","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-cloud-sdk-util","kind":"maintains"},{"source":"artifact:sap-code-pal-for-abap-cloud","target":"capability:abap-clean-code","kind":"provides"},{"source":"artifact:sap-code-pal-for-abap-cloud","target":"capability:abap-cloud-readiness","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-code-pal-for-abap-cloud","kind":"maintains"},{"source":"artifact:sap-code-pal-for-abap","target":"capability:abap-clean-code","kind":"provides"},{"source":"artifact:sap-code-pal-for-abap","target":"capability:abap-static-analysis","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-code-pal-for-abap","kind":"maintains"},{"source":"artifact:sap-developers-mcp","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:sap-tutorials","target":"artifact:sap-developers-mcp","kind":"maintains"},{"source":"artifact:sap-e2e-trace","target":"capability:telemetry","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-e2e-trace","kind":"maintains"},{"source":"artifact:sap-eslint-plugin-cds","target":"capability:linting","kind":"provides"},{"source":"artifact:sap-fiori-guidelines","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-fiori-guidelines","kind":"maintains"},{"source":"artifact:sap-fiori-ios","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-fiori-ios","kind":"maintains"},{"source":"artifact:sap-generator-cap-project","target":"capability:generators","kind":"provides"},{"source":"artifact:sap-generator-cds","target":"capability:generators","kind":"provides"},{"source":"artifact:sap-generator-fiori","target":"capability:fiori-annotations","kind":"provides"},{"source":"artifact:sap-hana-client","target":"capability:database-connectors","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-hana-client","kind":"maintains"},{"source":"artifact:sap-hana","target":"capability:database-connectors","kind":"provides"},{"source":"artifact:sap-hdi-deploy","target":"capability:schema-evolution","kind":"provides"},{"source":"artifact:sap-hdi-deploy","target":"capability:hana-native-artifacts","kind":"provides"},{"source":"artifact:sap-joule-for-developers","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-joule-for-developers","kind":"maintains"},{"source":"artifact:sap-joule-studio-classic","target":"capability:agent-tooling","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-joule-studio-classic","kind":"maintains"},{"source":"artifact:sap-joule-studio-cli","target":"capability:agent-tooling","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-joule-studio-cli","kind":"maintains"},{"source":"artifact:sap-joule-studio","target":"capability:agent-tooling","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-joule-studio","kind":"maintains"},{"source":"artifact:sap-joule-work-dev-cli","target":"capability:agent-tooling","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-joule-work-dev-cli","kind":"maintains"},{"source":"artifact:sap-joule-work","target":"capability:agent-workspaces","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-joule-work","kind":"maintains"},{"source":"artifact:sap-joule","target":"capability:agent-tooling","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-joule","kind":"maintains"},{"source":"artifact:sap-leanix-ai-plugins","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-leanix-ai-plugins","kind":"maintains"},{"source":"artifact:sap-leanix-mcp-server","target":"capability:agent-systems-access","kind":"provides"},{"source":"artifact:sap-mdk-mcp-server","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-mdk-mcp-server","kind":"maintains"},{"source":"artifact:sap-mdk-tools","target":"capability:deployment-operator","kind":"provides"},{"source":"artifact:sap-russia-zrs-abap-source-scan","target":"capability:code-search","kind":"provides"},{"source":"actor:sap-russia","target":"artifact:sap-russia-zrs-abap-source-scan","kind":"maintains"},{"source":"artifact:sap-samples-abap-alv-google-upload-sheet","target":"capability:data-import-export","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-alv-google-upload-sheet","kind":"maintains"},{"source":"artifact:sap-samples-abap-cheat-sheets","target":"capability:documentation","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-cheat-sheets","kind":"maintains"},{"source":"artifact:sap-samples-abap-file-uploader","target":"capability:data-import-export","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-file-uploader","kind":"maintains"},{"source":"artifact:sap-samples-abap-partner-reference-application","target":"capability:abap-transactional-model","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-partner-reference-application","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-analytics-data-modeling","target":"capability:data-modelling","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-analytics-data-modeling","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-application-jobs","target":"capability:job-scheduling","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-application-jobs","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-bgpf-appl-log-events-side-effects","target":"capability:async-processing","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-bgpf-appl-log-events-side-effects","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-ccm-workshops","target":"capability:abap-cloud-readiness","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-ccm-workshops","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-codejam-latest-features-2602","target":"capability:abap-transactional-model","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-codejam-latest-features-2602","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-fiori-feature-showcase","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-fiori-feature-showcase","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-jak","target":"capability:abap-source-control","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-jak","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-nominated-apis-consumption","target":"capability:abap-extensibility","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-nominated-apis-consumption","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-rap-transactional-outbox-with-bgpf","target":"capability:async-processing","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-rap-transactional-outbox-with-bgpf","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-rap-workshops","target":"capability:abap-transactional-model","kind":"demonstrates"},{"source":"artifact:sap-samples-abap-platform-rap-workshops","target":"capability:abap-unit-testing","kind":"demonstrates"},{"source":"artifact:sap-samples-abap-platform-rap-workshops","target":"capability:analytic-modelling","kind":"demonstrates"},{"source":"artifact:sap-samples-abap-platform-rap-workshops","target":"capability:abap-extensibility","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-rap-workshops","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-rap100","target":"capability:abap-transactional-model","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-rap100","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-rap110","target":"capability:abap-transactional-model","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-rap110","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-rap120","target":"capability:abap-transactional-model","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-rap120","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-rap130","target":"capability:abap-transactional-model","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-rap130","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-rap200","target":"capability:abap-transactional-model","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-rap200","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-rap620","target":"capability:abap-extensibility","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-rap620","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-rap630-ext","target":"capability:abap-extensibility","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-rap630-ext","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-rap630","target":"capability:abap-extensibility","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-rap630","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-rap640","target":"capability:abap-extensibility","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-rap640","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-refscen-flight-soap-client","target":"capability:xml-payloads","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-refscen-flight-soap-client","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-refscen-flight-soap-server","target":"capability:xml-payloads","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-refscen-flight-soap-server","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-refscen-flight","target":"capability:abap-transactional-model","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-refscen-flight","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-reuse-services","target":"capability:change-tracking","kind":"demonstrates"},{"source":"artifact:sap-samples-abap-platform-reuse-services","target":"capability:document-output","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-reuse-services","kind":"maintains"},{"source":"artifact:sap-samples-abap-platform-yy","target":"capability:abap-source-control","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-abap-platform-yy","kind":"maintains"},{"source":"artifact:sap-samples-adaptation-project-exercises","target":"capability:ui5-flexibility","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-adaptation-project-exercises","kind":"maintains"},{"source":"artifact:sap-samples-ai-core-samples","target":"capability:predictive-models","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-ai-core-samples","kind":"maintains"},{"source":"artifact:sap-samples-ai-enabled-integrations-codejam","target":"capability:llm-integration","kind":"demonstrates"},{"source":"artifact:sap-samples-ai-enabled-integrations-codejam","target":"capability:integration-flows","kind":"demonstrates"},{"source":"artifact:sap-samples-ai-enabled-integrations-codejam","target":"capability:mcp-servers","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-ai-enabled-integrations-codejam","kind":"maintains"},{"source":"artifact:sap-samples-ai-seamless-integration","target":"capability:ui5-web-components","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-ai-seamless-integration","kind":"maintains"},{"source":"artifact:sap-samples-aicore-genai-samples","target":"capability:llm-integration","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-aicore-genai-samples","kind":"maintains"},{"source":"artifact:sap-samples-aicore-multioutput-regression-restaurant-inspections","target":"capability:predictive-models","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-aicore-multioutput-regression-restaurant-inspections","kind":"maintains"},{"source":"artifact:sap-samples-ams-samples-java","target":"capability:authorization","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-ams-samples-java","kind":"maintains"},{"source":"artifact:sap-samples-ams-samples-node","target":"capability:authorization","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-ams-samples-node","kind":"maintains"},{"source":"artifact:sap-samples-analytics-cloud-rpt15-prediction-demo","target":"capability:predictive-models","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-analytics-cloud-rpt15-prediction-demo","kind":"maintains"},{"source":"artifact:sap-samples-analytics-cloud-scim-api-samples","target":"capability:identity-provisioning","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-analytics-cloud-scim-api-samples","kind":"maintains"},{"source":"artifact:sap-samples-application-vulnerability-report-scan-user-automation","target":"capability:account-provisioning","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-application-vulnerability-report-scan-user-automation","kind":"maintains"},{"source":"artifact:sap-samples-automation-pilot-examples","target":"capability:operations-automation","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-automation-pilot-examples","kind":"maintains"},{"source":"artifact:sap-samples-btp-a2a-dispute-resolution","target":"capability:agent-tooling","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-a2a-dispute-resolution","kind":"maintains"},{"source":"artifact:sap-samples-btp-abap-cna","target":"capability:reference-apps","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-abap-cna","kind":"maintains"},{"source":"artifact:sap-samples-btp-admin-guide-samples","target":"capability:account-provisioning","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-admin-guide-samples","kind":"maintains"},{"source":"artifact:sap-samples-btp-agentic-ai-use-cases","target":"capability:agent-tooling","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-agentic-ai-use-cases","kind":"maintains"},{"source":"artifact:sap-samples-btp-ai-bp-access-to-generative-ai-models-cap","target":"capability:llm-integration","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-ai-bp-access-to-generative-ai-models-cap","kind":"maintains"},{"source":"artifact:sap-samples-btp-ai-bp-content-filtering-cap","target":"capability:content-filtering","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-ai-bp-content-filtering-cap","kind":"maintains"},{"source":"artifact:sap-samples-btp-ai-bp-data-masking-cap","target":"capability:data-masking","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-ai-bp-data-masking-cap","kind":"maintains"},{"source":"artifact:sap-samples-btp-ai-bp-prompt-registry-cap","target":"capability:prompt-management","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-ai-bp-prompt-registry-cap","kind":"maintains"},{"source":"artifact:sap-samples-btp-ai-bp-prompt-templating-cap","target":"capability:prompt-management","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-ai-bp-prompt-templating-cap","kind":"maintains"},{"source":"artifact:sap-samples-btp-ai-bp-vector-rag-embedding-cap","target":"capability:retrieval-augmented-generation","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-ai-bp-vector-rag-embedding-cap","kind":"maintains"},{"source":"artifact:sap-samples-btp-ai-bp-vector-rag-query-cap","target":"capability:retrieval-augmented-generation","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-ai-bp-vector-rag-query-cap","kind":"maintains"},{"source":"artifact:sap-samples-btp-ai-core-consumption-monitor","target":"capability:consumption-monitoring","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-ai-core-consumption-monitor","kind":"maintains"},{"source":"artifact:sap-samples-btp-ai-core-usage-monitor","target":"capability:consumption-monitoring","kind":"provides"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-ai-core-usage-monitor","kind":"maintains"},{"source":"artifact:sap-samples-btp-aws-monitron","target":"capability:event-mesh","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-aws-monitron","kind":"maintains"},{"source":"artifact:sap-samples-btp-cap-dox-invoice-validation","target":"capability:document-extraction","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-cap-dox-invoice-validation","kind":"maintains"},{"source":"artifact:sap-samples-btp-cap-genai-rag","target":"capability:retrieval-augmented-generation","kind":"demonstrates"},{"source":"artifact:sap-samples-btp-cap-genai-rag","target":"capability:llm-integration","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-cap-genai-rag","kind":"maintains"},{"source":"artifact:sap-samples-btp-cap-genai-semantic-search","target":"capability:retrieval-augmented-generation","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-cap-genai-semantic-search","kind":"maintains"},{"source":"artifact:sap-samples-btp-cloud-connector-setup-automation","target":"capability:destinations","kind":"provides"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-cloud-connector-setup-automation","kind":"maintains"},{"source":"artifact:sap-samples-btp-developer-guide-cap","target":"capability:reference-apps","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-developer-guide-cap","kind":"maintains"},{"source":"artifact:sap-samples-btp-edge-integration-cell-on-azure","target":"capability:integration-flows","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-edge-integration-cell-on-azure","kind":"maintains"},{"source":"artifact:sap-samples-btp-event-driven-multi-tenant-architecture","target":"capability:event-mesh","kind":"demonstrates"},{"source":"artifact:sap-samples-btp-event-driven-multi-tenant-architecture","target":"capability:multitenancy","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-event-driven-multi-tenant-architecture","kind":"maintains"},{"source":"artifact:sap-samples-btp-gen-ai-hub-sdk-samples","target":"capability:llm-integration","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-gen-ai-hub-sdk-samples","kind":"maintains"},{"source":"artifact:sap-samples-btp-hello-world-fiori","target":"capability:app-hosting","kind":"demonstrates"},{"source":"artifact:sap-samples-btp-hello-world-fiori","target":"capability:launchpad-content","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-hello-world-fiori","kind":"maintains"},{"source":"artifact:sap-samples-btp-joule-a2a-pro-code-agent","target":"capability:agent-tooling","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-joule-a2a-pro-code-agent","kind":"maintains"},{"source":"artifact:sap-samples-btp-kyma-helloworld","target":"capability:deployment","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-kyma-helloworld","kind":"maintains"},{"source":"artifact:sap-samples-btp-launchpad-ui-samples","target":"capability:launchpad-content","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-launchpad-ui-samples","kind":"maintains"},{"source":"artifact:sap-samples-btp-neo-java-app-migration","target":"capability:platform-migration","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-neo-java-app-migration","kind":"maintains"},{"source":"artifact:sap-samples-btp-onboarding","target":"capability:account-provisioning","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-onboarding","kind":"maintains"},{"source":"artifact:sap-samples-btp-private-link-approuter","target":"capability:destinations","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-private-link-approuter","kind":"maintains"},{"source":"artifact:sap-samples-btp-resource-consumption-monitor","target":"capability:consumption-monitoring","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-resource-consumption-monitor","kind":"maintains"},{"source":"artifact:sap-samples-btp-s4hana-nocode-extension","target":"capability:app-hosting","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-s4hana-nocode-extension","kind":"maintains"},{"source":"artifact:sap-samples-btp-secure-development","target":"capability:authorization","kind":"demonstrates"},{"source":"artifact:sap-samples-btp-secure-development","target":"capability:audit-logging","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-secure-development","kind":"maintains"},{"source":"artifact:sap-samples-btp-service-metadata","target":"capability:documentation","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-service-metadata","kind":"maintains"},{"source":"artifact:sap-samples-btp-sourcing-decision-board","target":"capability:agent-tooling","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-sourcing-decision-board","kind":"maintains"},{"source":"artifact:sap-samples-btp-spend-analysis","target":"capability:integration-flows","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-spend-analysis","kind":"maintains"},{"source":"artifact:sap-samples-btp-terraform-mooc-terra1","target":"capability:account-provisioning","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-terraform-mooc-terra1","kind":"maintains"},{"source":"artifact:sap-samples-btp-terraform-samples","target":"capability:account-provisioning","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-terraform-samples","kind":"maintains"},{"source":"artifact:sap-samples-btp-user-management-microservice","target":"capability:authorization","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-btp-user-management-microservice","kind":"maintains"},{"source":"artifact:sap-samples-cap-agentic-engineered","target":"capability:agent-guidance","kind":"demonstrates"},{"source":"artifact:sap-samples-cap-agentic-engineered","target":"capability:reference-apps","kind":"demonstrates"},{"source":"artifact:sap-samples-cap-agentic-engineered","target":"capability:llm-integration","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cap-agentic-engineered","kind":"maintains"},{"source":"artifact:sap-samples-cap-bookshop-wdi5","target":"capability:testing","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cap-bookshop-wdi5","kind":"maintains"},{"source":"artifact:sap-samples-cap-cds-hands-on","target":"capability:data-modelling","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cap-cds-hands-on","kind":"maintains"},{"source":"artifact:sap-samples-cap-hana-exercises-codejam","target":"capability:database-connectors","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cap-hana-exercises-codejam","kind":"maintains"},{"source":"artifact:sap-samples-cap-local-development-workshop","target":"capability:local-development","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cap-local-development-workshop","kind":"maintains"},{"source":"artifact:sap-samples-cap-microservices-workshop","target":"capability:deployment","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cap-microservices-workshop","kind":"maintains"},{"source":"artifact:sap-samples-cap-nodejs-dev-env","target":"capability:local-development","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cap-nodejs-dev-env","kind":"maintains"},{"source":"artifact:sap-samples-cap-service-integration-codejam","target":"capability:destinations","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cap-service-integration-codejam","kind":"maintains"},{"source":"artifact:sap-samples-cap-sflight","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"artifact:sap-samples-cap-sflight","target":"capability:reference-apps","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cap-sflight","kind":"maintains"},{"source":"artifact:sap-samples-cap-tour-hands-on","target":"capability:plugin-authoring","kind":"demonstrates"},{"source":"artifact:sap-samples-cap-tour-hands-on","target":"capability:local-development","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cap-tour-hands-on","kind":"maintains"},{"source":"artifact:sap-samples-cf-autoscaler-custom-metrics-mtls","target":"capability:deployment","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cf-autoscaler-custom-metrics-mtls","kind":"maintains"},{"source":"artifact:sap-samples-cf-mta-examples","target":"capability:deployment","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cf-mta-examples","kind":"maintains"},{"source":"artifact:sap-samples-cf-routing-samples","target":"capability:deployment","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cf-routing-samples","kind":"maintains"},{"source":"artifact:sap-samples-cloud-abap-rap","target":"capability:abap-transactional-model","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cloud-abap-rap","kind":"maintains"},{"source":"artifact:sap-samples-cloud-btp-cli-api-codejam","target":"capability:account-provisioning","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cloud-btp-cli-api-codejam","kind":"maintains"},{"source":"artifact:sap-samples-cloud-cap-hana-swapi","target":"capability:data-modelling","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cloud-cap-hana-swapi","kind":"maintains"},{"source":"artifact:sap-samples-cloud-cap-samples-java","target":"capability:reference-apps","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cloud-cap-samples-java","kind":"maintains"},{"source":"artifact:sap-samples-cloud-cf-feature-flags-sample","target":"capability:feature-toggles","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cloud-cf-feature-flags-sample","kind":"maintains"},{"source":"artifact:sap-samples-cloud-foundry-runtime-learning-journey","target":"capability:deployment","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cloud-foundry-runtime-learning-journey","kind":"maintains"},{"source":"artifact:sap-samples-cloud-integration-pipeline-datastore-extension-ui","target":"capability:integration-flows","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cloud-integration-pipeline-datastore-extension-ui","kind":"maintains"},{"source":"artifact:sap-samples-cloud-mdk-samples","target":"capability:mobile-apps","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cloud-mdk-samples","kind":"maintains"},{"source":"artifact:sap-samples-cloud-mdk-tutorial-samples","target":"capability:mobile-apps","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cloud-mdk-tutorial-samples","kind":"maintains"},{"source":"artifact:sap-samples-cloud-sample-webhooks","target":"capability:operations-automation","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cloud-sample-webhooks","kind":"maintains"},{"source":"artifact:sap-samples-codejam-cap-llm","target":"capability:llm-integration","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-codejam-cap-llm","kind":"maintains"},{"source":"artifact:sap-samples-codejam-code-based-agents","target":"capability:agent-tooling","kind":"demonstrates"},{"source":"artifact:sap-samples-codejam-code-based-agents","target":"capability:llm-integration","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-codejam-code-based-agents","kind":"maintains"},{"source":"artifact:sap-samples-concur-joule-ips-jobs","target":"capability:identity-provisioning","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-concur-joule-ips-jobs","kind":"maintains"},{"source":"artifact:sap-samples-connecting-systems-services-integration-suite-codejam","target":"capability:integration-flows","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-connecting-systems-services-integration-suite-codejam","kind":"maintains"},{"source":"artifact:sap-samples-cross-stack-partner-reference-extension","target":"capability:abap-extensibility","kind":"demonstrates"},{"source":"artifact:sap-samples-cross-stack-partner-reference-extension","target":"capability:destinations","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-cross-stack-partner-reference-extension","kind":"maintains"},{"source":"artifact:sap-samples-dbt-sap-hana-cloud","target":"capability:warehouse-loading","kind":"provides"},{"source":"actor:sap-samples","target":"artifact:sap-samples-dbt-sap-hana-cloud","kind":"maintains"},{"source":"artifact:sap-samples-digital-manufacturing-extension-samples","target":"domain:learning-and-reference","kind":"weak"},{"source":"actor:sap-samples","target":"artifact:sap-samples-digital-manufacturing-extension-samples","kind":"maintains"},{"source":"artifact:sap-samples-e-mobility-driver-app","target":"capability:reference-apps","kind":"demonstrates"},{"source":"artifact:sap-samples-e-mobility-driver-app","target":"capability:authorization","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-e-mobility-driver-app","kind":"maintains"},{"source":"artifact:sap-samples-event-driven-integrations-codejam","target":"capability:event-mesh","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-event-driven-integrations-codejam","kind":"maintains"},{"source":"artifact:sap-samples-event-hub-cap-samples","target":"capability:event-mesh","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-event-hub-cap-samples","kind":"maintains"},{"source":"artifact:sap-samples-event-mesh-client-java-samples","target":"capability:event-mesh","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-event-mesh-client-java-samples","kind":"maintains"},{"source":"artifact:sap-samples-event-mesh-client-nodejs-samples","target":"capability:event-mesh","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-event-mesh-client-nodejs-samples","kind":"maintains"},{"source":"artifact:sap-samples-fiori-elements-feature-showcase","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-fiori-elements-feature-showcase","kind":"maintains"},{"source":"artifact:sap-samples-fiori-elements-fpm-exercises-codejam","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-fiori-elements-fpm-exercises-codejam","kind":"maintains"},{"source":"artifact:sap-samples-fiori-elements-v4-cap-advanced","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-fiori-elements-v4-cap-advanced","kind":"maintains"},{"source":"artifact:sap-samples-fiori-mcp-server-hands-on","target":"capability:agent-code-access","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-fiori-mcp-server-hands-on","kind":"maintains"},{"source":"artifact:sap-samples-forms-service-by-adobe-samples","target":"capability:document-output","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-forms-service-by-adobe-samples","kind":"maintains"},{"source":"artifact:sap-samples-fundamental-ngx-sample-apps","target":"capability:ui5-web-components","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-fundamental-ngx-sample-apps","kind":"maintains"},{"source":"artifact:sap-samples-generative-ai-codejam","target":"capability:llm-integration","kind":"demonstrates"},{"source":"artifact:sap-samples-generative-ai-codejam","target":"capability:retrieval-augmented-generation","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-generative-ai-codejam","kind":"maintains"},{"source":"artifact:sap-samples-hana-apl-apis-runtimes","target":"capability:predictive-models","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-hana-apl-apis-runtimes","kind":"maintains"},{"source":"artifact:sap-samples-hana-cf-get-started-trial","target":"capability:multi-model-data","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-hana-cf-get-started-trial","kind":"maintains"},{"source":"artifact:sap-samples-hana-cli-claude-plugin","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:sap-samples","target":"artifact:sap-samples-hana-cli-claude-plugin","kind":"maintains"},{"source":"artifact:sap-samples-hana-cloud-modeling-learning-journey","target":"capability:analytic-modelling","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-hana-cloud-modeling-learning-journey","kind":"maintains"},{"source":"artifact:sap-samples-hana-developer-cli-tool-example","target":"capability:agent-systems-access","kind":"provides"},{"source":"artifact:sap-samples-hana-developer-cli-tool-example","target":"capability:hana-native-artifacts","kind":"provides"},{"source":"artifact:sap-samples-hana-developer-cli-tool-example","target":"capability:database-administration","kind":"provides"},{"source":"actor:sap-samples","target":"artifact:sap-samples-hana-developer-cli-tool-example","kind":"maintains"},{"source":"artifact:sap-samples-hana-graph-examples","target":"capability:multi-model-data","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-hana-graph-examples","kind":"maintains"},{"source":"artifact:sap-samples-hana-hdbext-promisfied-example","target":"capability:database-connectors","kind":"provides"},{"source":"actor:sap-samples","target":"artifact:sap-samples-hana-hdbext-promisfied-example","kind":"maintains"},{"source":"artifact:sap-samples-hana-ml-py-codejam","target":"capability:predictive-models","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-hana-ml-py-codejam","kind":"maintains"},{"source":"artifact:sap-samples-hana-ml-samples","target":"capability:predictive-models","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-hana-ml-samples","kind":"maintains"},{"source":"artifact:sap-samples-hana-shine-xsa","target":"capability:reference-apps","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-hana-shine-xsa","kind":"maintains"},{"source":"artifact:sap-samples-hda-cross-pm-samples","target":"capability:analytic-modelling","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-hda-cross-pm-samples","kind":"maintains"},{"source":"artifact:sap-samples-html5-applications-migration-skills-for-sap-btp","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:sap-samples","target":"artifact:sap-samples-html5-applications-migration-skills-for-sap-btp","kind":"maintains"},{"source":"artifact:sap-samples-hxe-hibernate-google-app-engine","target":"capability:database-connectors","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-hxe-hibernate-google-app-engine","kind":"maintains"},{"source":"artifact:sap-samples-integration-suite-partner-directory-accelerator-for-pipeline-concept","target":"capability:integration-flows","kind":"provides"},{"source":"actor:sap-samples","target":"artifact:sap-samples-integration-suite-partner-directory-accelerator-for-pipeline-concept","kind":"maintains"},{"source":"artifact:sap-samples-iq-to-hdl-migration","target":"capability:platform-migration","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-iq-to-hdl-migration","kind":"maintains"},{"source":"artifact:sap-samples-joule-a2a-agent-toolkit","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:sap-samples","target":"artifact:sap-samples-joule-a2a-agent-toolkit","kind":"maintains"},{"source":"artifact:sap-samples-joule-gui-automation-and-integration","target":"capability:gui-automation","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-joule-gui-automation-and-integration","kind":"maintains"},{"source":"artifact:sap-samples-joule-studio-setup-terraform","target":"capability:account-provisioning","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-joule-studio-setup-terraform","kind":"maintains"},{"source":"artifact:sap-samples-liteinventorymanagement","target":"capability:reference-apps","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-liteinventorymanagement","kind":"maintains"},{"source":"artifact:sap-samples-manage-apis-codejam","target":"capability:openapi","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-manage-apis-codejam","kind":"maintains"},{"source":"artifact:sap-samples-multi-cloud-html5-apps-samples","target":"capability:app-hosting","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-multi-cloud-html5-apps-samples","kind":"maintains"},{"source":"artifact:sap-samples-odata-dd-server","target":"capability:odata","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-odata-dd-server","kind":"maintains"},{"source":"artifact:sap-samples-odbc-driver-for-abap-examples","target":"capability:database-connectors","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-odbc-driver-for-abap-examples","kind":"maintains"},{"source":"artifact:sap-samples-on-stack-partner-reference-extension","target":"capability:abap-extensibility","kind":"demonstrates"},{"source":"artifact:sap-samples-on-stack-partner-reference-extension","target":"capability:abap-transactional-model","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-on-stack-partner-reference-extension","kind":"maintains"},{"source":"artifact:sap-samples-openui5-fhir-sample-app","target":"capability:ui5-data-binding","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-openui5-fhir-sample-app","kind":"maintains"},{"source":"artifact:sap-samples-partner-reference-application-extension","target":"capability:tenant-extensibility","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-partner-reference-application-extension","kind":"maintains"},{"source":"artifact:sap-samples-partner-reference-application","target":"capability:multitenancy","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-partner-reference-application","kind":"maintains"},{"source":"artifact:sap-samples-private-link-aws-services","target":"capability:destinations","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-private-link-aws-services","kind":"maintains"},{"source":"artifact:sap-samples-recap2026-cap-level-data-federation","target":"capability:replication","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-recap2026-cap-level-data-federation","kind":"maintains"},{"source":"artifact:sap-samples-s4hana-avc-ui-extension-template","target":"capability:abap-extensibility","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-s4hana-avc-ui-extension-template","kind":"maintains"},{"source":"artifact:sap-samples-s4hana-gcts-badi","target":"capability:abap-source-control","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-s4hana-gcts-badi","kind":"maintains"},{"source":"artifact:sap-samples-s4hana-hana-audit-policies","target":"capability:audit-logging","kind":"provides"},{"source":"actor:sap-samples","target":"artifact:sap-samples-s4hana-hana-audit-policies","kind":"maintains"},{"source":"artifact:sap-samples-sap-bdc-explore-hyperscaler-data","target":"capability:warehouse-loading","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-sap-bdc-explore-hyperscaler-data","kind":"maintains"},{"source":"artifact:sap-samples-sap-btp-ai-best-practices","target":"capability:llm-integration","kind":"demonstrates"},{"source":"artifact:sap-samples-sap-btp-ai-best-practices","target":"capability:content-filtering","kind":"demonstrates"},{"source":"artifact:sap-samples-sap-btp-ai-best-practices","target":"capability:data-masking","kind":"demonstrates"},{"source":"artifact:sap-samples-sap-btp-ai-best-practices","target":"capability:prompt-management","kind":"demonstrates"},{"source":"artifact:sap-samples-sap-btp-ai-best-practices","target":"capability:retrieval-augmented-generation","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-sap-btp-ai-best-practices","kind":"maintains"},{"source":"artifact:sap-samples-sap-concur-user-provisioning-service-apis","target":"capability:identity-provisioning","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-sap-concur-user-provisioning-service-apis","kind":"maintains"},{"source":"artifact:sap-samples-sap-devs-cli","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:sap-samples","target":"artifact:sap-samples-sap-devs-cli","kind":"maintains"},{"source":"artifact:sap-samples-sap-genai-hub-with-sap-hana-cloud-vector-engine","target":"capability:retrieval-augmented-generation","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-sap-genai-hub-with-sap-hana-cloud-vector-engine","kind":"maintains"},{"source":"artifact:sap-samples-sap-rpt-samples","target":"capability:predictive-models","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-sap-rpt-samples","kind":"maintains"},{"source":"artifact:sap-samples-slp-supplier-validation","target":"capability:reference-apps","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-slp-supplier-validation","kind":"maintains"},{"source":"artifact:sap-samples-smartrecruiters-ai-recruiting-custom-agent","target":"capability:agent-tooling","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-smartrecruiters-ai-recruiting-custom-agent","kind":"maintains"},{"source":"artifact:sap-samples-spfi-reference-application","target":"capability:multitenancy","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-spfi-reference-application","kind":"maintains"},{"source":"artifact:sap-samples-tailspendmanagement","target":"capability:reference-apps","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-tailspendmanagement","kind":"maintains"},{"source":"artifact:sap-samples-teched2022-dt181","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2022-dt181","kind":"maintains"},{"source":"artifact:sap-samples-teched2022-xp260","target":"capability:authentication","kind":"demonstrates"},{"source":"artifact:sap-samples-teched2022-xp260","target":"capability:audit-logging","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2022-xp260","kind":"maintains"},{"source":"artifact:sap-samples-teched2022-xp281","target":"capability:operations-automation","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2022-xp281","kind":"maintains"},{"source":"artifact:sap-samples-teched2023-da263","target":"capability:multi-model-data","kind":"demonstrates"},{"source":"artifact:sap-samples-teched2023-da263","target":"capability:predictive-models","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2023-da263","kind":"maintains"},{"source":"artifact:sap-samples-teched2023-dt187v","target":"capability:analytic-modelling","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2023-dt187v","kind":"maintains"},{"source":"artifact:sap-samples-teched2023-xp185v","target":"capability:authentication","kind":"demonstrates"},{"source":"artifact:sap-samples-teched2023-xp185v","target":"capability:audit-logging","kind":"demonstrates"},{"source":"artifact:sap-samples-teched2023-xp185v","target":"capability:authorization","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2023-xp185v","kind":"maintains"},{"source":"artifact:sap-samples-teched2024-in280","target":"capability:integration-flows","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2024-in280","kind":"maintains"},{"source":"artifact:sap-samples-teched2024-xp280","target":"capability:account-provisioning","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2024-xp280","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-ad162","target":"capability:agent-code-access","kind":"demonstrates"},{"source":"artifact:sap-samples-teched2025-ad162","target":"capability:generators","kind":"demonstrates"},{"source":"artifact:sap-samples-teched2025-ad162","target":"capability:abap-unit-testing","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-ad162","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-ad163","target":"capability:abap-transactional-model","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-ad163","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-ad164","target":"capability:abap-transactional-model","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-ad164","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-ai160","target":"capability:agent-tooling","kind":"demonstrates"},{"source":"artifact:sap-samples-teched2025-ai160","target":"capability:llm-integration","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-ai160","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-ai161","target":"capability:agent-evals","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-ai161","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-ai163","target":"capability:agent-tooling","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-ai163","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-ai165","target":"capability:agent-tooling","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-ai165","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-ca261","target":"capability:agent-code-access","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-ca261","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-ca262","target":"capability:frontend-performance","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-ca262","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-cs261","target":"capability:telemetry","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-cs261","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-da260","target":"capability:warehouse-loading","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-da260","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-da261","target":"capability:retrieval-augmented-generation","kind":"demonstrates"},{"source":"artifact:sap-samples-teched2025-da261","target":"capability:predictive-models","kind":"demonstrates"},{"source":"artifact:sap-samples-teched2025-da261","target":"capability:multi-model-data","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-da261","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-da264","target":"capability:analytic-modelling","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-da264","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-da265","target":"capability:analytic-modelling","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-da265","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-da266","target":"capability:predictive-models","kind":"demonstrates"},{"source":"artifact:sap-samples-teched2025-da266","target":"capability:llm-integration","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-da266","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-da267","target":"capability:analytic-modelling","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-da267","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-dt260","target":"capability:abap-cloud-readiness","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-dt260","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-dt261","target":"capability:abap-extensibility","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-dt261","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-dt266","target":"capability:debugging","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-dt266","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-in161","target":"capability:platform-migration","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-in161","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-in162","target":"capability:event-mesh","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-in162","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-in163","target":"capability:async-processing","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-in163","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-xp260","target":"capability:authorization","kind":"demonstrates"},{"source":"artifact:sap-samples-teched2025-xp260","target":"capability:audit-logging","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-xp260","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-xp261","target":"capability:identity-provisioning","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-xp261","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-xp263","target":"capability:consumption-monitoring","kind":"demonstrates"},{"source":"artifact:sap-samples-teched2025-xp263","target":"capability:account-provisioning","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-xp263","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-xp264","target":"capability:telemetry","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-xp264","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-xp265","target":"capability:telemetry","kind":"demonstrates"},{"source":"artifact:sap-samples-teched2025-xp265","target":"capability:logging","kind":"demonstrates"},{"source":"artifact:sap-samples-teched2025-xp265","target":"capability:deployment","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-xp265","kind":"maintains"},{"source":"artifact:sap-samples-teched2025-xp267","target":"capability:operations-automation","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-teched2025-xp267","kind":"maintains"},{"source":"artifact:sap-samples-ui5-cap-event-app","target":"capability:draft-handling","kind":"demonstrates"},{"source":"artifact:sap-samples-ui5-cap-event-app","target":"capability:reference-apps","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-ui5-cap-event-app","kind":"maintains"},{"source":"artifact:sap-samples-ui5-deployments","target":"capability:app-hosting","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-ui5-deployments","kind":"maintains"},{"source":"artifact:sap-samples-ui5-flexibility-easy-key-user-adaptation","target":"capability:ui5-flexibility","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-ui5-flexibility-easy-key-user-adaptation","kind":"maintains"},{"source":"artifact:sap-samples-ui5-mdc-json-tutorial","target":"capability:ui5-flexibility","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-ui5-mdc-json-tutorial","kind":"maintains"},{"source":"artifact:sap-samples-ui5-p13n-tutorial","target":"capability:ui5-flexibility","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-ui5-p13n-tutorial","kind":"maintains"},{"source":"artifact:sap-samples-ui5-typescript-control-library","target":"capability:ui5-typescript","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-ui5-typescript-control-library","kind":"maintains"},{"source":"artifact:sap-samples-ui5-typescript-helloworld","target":"capability:ui5-typescript","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-ui5-typescript-helloworld","kind":"maintains"},{"source":"artifact:sap-samples-ui5-typescript-tutorial","target":"capability:ui5-typescript","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-ui5-typescript-tutorial","kind":"maintains"},{"source":"artifact:sap-samples-ui5-webcomponents-ngx-sample","target":"capability:ui5-web-components","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-ui5-webcomponents-ngx-sample","kind":"maintains"},{"source":"artifact:sap-samples-ui5con-2025-theming-workshop","target":"capability:ui5-theming","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-ui5con-2025-theming-workshop","kind":"maintains"},{"source":"artifact:sap-samples-ui5con-2026-a11y-hands-on","target":"capability:accessibility","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-ui5con-2026-a11y-hands-on","kind":"maintains"},{"source":"artifact:sap-samples-ui5con-2026-chrome-built-in-ai","target":"capability:llm-integration","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-ui5con-2026-chrome-built-in-ai","kind":"maintains"},{"source":"artifact:sap-samples-ui5con-2026-fiori-building-blocks","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-ui5con-2026-fiori-building-blocks","kind":"maintains"},{"source":"artifact:sap-samples-ui5con-2026-fiori-mcp-server","target":"capability:agent-code-access","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-ui5con-2026-fiori-mcp-server","kind":"maintains"},{"source":"artifact:sap-samples-ui5con-2026-ui5-linter-workshop","target":"capability:linting","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-ui5con-2026-ui5-linter-workshop","kind":"maintains"},{"source":"artifact:sap-samples-uxc-integration","target":"capability:ui5-web-components","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-uxc-integration","kind":"maintains"},{"source":"artifact:sap-samples-wdf2025-fiori-innov-day-building-blocks","target":"capability:fiori-annotations","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-wdf2025-fiori-innov-day-building-blocks","kind":"maintains"},{"source":"artifact:sap-samples-wdf2025-fiori-innov-day-mcp-server","target":"capability:agent-code-access","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-wdf2025-fiori-innov-day-mcp-server","kind":"maintains"},{"source":"artifact:sap-samples-workzone-content-package-templates","target":"capability:launchpad-content","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-workzone-content-package-templates","kind":"maintains"},{"source":"artifact:sap-samples-xsa-cap-migration-using-basextn","target":"capability:platform-migration","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-xsa-cap-migration-using-basextn","kind":"maintains"},{"source":"artifact:sap-samples-xsa-cap-migration","target":"capability:platform-migration","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-xsa-cap-migration","kind":"maintains"},{"source":"artifact:sap-samples-xsc-cap-migration","target":"capability:platform-migration","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-xsc-cap-migration","kind":"maintains"},{"source":"artifact:sap-samples-xsc-to-native-hana-cloud","target":"capability:platform-migration","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-xsc-to-native-hana-cloud","kind":"maintains"},{"source":"artifact:sap-samples-xsc-xsa-migration","target":"capability:platform-migration","kind":"demonstrates"},{"source":"actor:sap-samples","target":"artifact:sap-samples-xsc-xsa-migration","kind":"maintains"},{"source":"artifact:sap-styleguides-clean-abap","target":"capability:abap-clean-code","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-styleguides-clean-abap","kind":"maintains"},{"source":"artifact:sap-terraform-provider-btp","target":"capability:account-provisioning","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-terraform-provider-btp","kind":"maintains"},{"source":"artifact:sap-theming-base-content","target":"capability:ui5-theming","kind":"provides"},{"source":"actor:andreas-roessler","target":"artifact:sap-theming-base-content","kind":"maintains"},{"source":"actor:sap","target":"artifact:sap-theming-base-content","kind":"maintains"},{"source":"actor:theming-technical-user","target":"artifact:sap-theming-base-content","kind":"maintains"},{"source":"artifact:sap-tutorials-content","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-tutorials-content","kind":"maintains"},{"source":"actor:sap-tutorials","target":"artifact:sap-tutorials-content","kind":"maintains"},{"source":"artifact:sap-ui-theme-designer-plugins","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-ui-theme-designer-plugins","kind":"maintains"},{"source":"artifact:sap-ui5-cli","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-ui5-cli","kind":"maintains"},{"source":"artifact:sap-ux-cap-config-writer","target":"capability:generators","kind":"provides"},{"source":"actor:devinea","target":"artifact:sap-ux-cap-config-writer","kind":"maintains"},{"source":"actor:sap","target":"artifact:sap-ux-cap-config-writer","kind":"maintains"},{"source":"artifact:sap-ux-cds-annotation-parser","target":"capability:fiori-annotations","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-ux-cds-annotation-parser","kind":"maintains"},{"source":"artifact:sap-ux-cds-compiler-facade","target":"capability:fiori-annotations","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-ux-cds-compiler-facade","kind":"maintains"},{"source":"artifact:sap-ux-cds-odata-annotation-converter","target":"capability:fiori-annotations","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-ux-cds-odata-annotation-converter","kind":"maintains"},{"source":"artifact:sap-ux-cds-odata-language-server-extension","target":"capability:editor-support","kind":"provides"},{"source":"artifact:sap-ux-cds-odata-language-server-extension","target":"capability:fiori-annotations","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-ux-cds-odata-language-server-extension","kind":"maintains"},{"source":"artifact:sap-ux-create","target":"capability:generators","kind":"provides"},{"source":"actor:devinea","target":"artifact:sap-ux-create","kind":"maintains"},{"source":"actor:sap","target":"artifact:sap-ux-create","kind":"maintains"},{"source":"artifact:sap-ux-eslint-plugin-fiori-tools","target":"capability:linting","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-ux-eslint-plugin-fiori-tools","kind":"maintains"},{"source":"artifact:sap-ux-fe-fpm-writer","target":"capability:generators","kind":"provides"},{"source":"actor:devinea","target":"artifact:sap-ux-fe-fpm-writer","kind":"maintains"},{"source":"actor:sap","target":"artifact:sap-ux-fe-fpm-writer","kind":"maintains"},{"source":"artifact:sap-ux-fe-mockserver-plugin-cds","target":"capability:testing","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-ux-fe-mockserver-plugin-cds","kind":"maintains"},{"source":"artifact:sap-ux-fiori-annotation-api","target":"capability:fiori-annotations","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-ux-fiori-annotation-api","kind":"maintains"},{"source":"artifact:sap-ux-fiori-docs-embeddings","target":"capability:documentation","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-ux-fiori-docs-embeddings","kind":"maintains"},{"source":"artifact:sap-ux-fiori-generator-shared","target":"capability:generators","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-ux-fiori-generator-shared","kind":"maintains"},{"source":"artifact:sap-ux-fiori-mcp-server","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-ux-fiori-mcp-server","kind":"maintains"},{"source":"artifact:sap-ux-i18n","target":"capability:localization","kind":"provides"},{"source":"actor:devinea","target":"artifact:sap-ux-i18n","kind":"maintains"},{"source":"actor:sap","target":"artifact:sap-ux-i18n","kind":"maintains"},{"source":"artifact:sap-ux-odata-service-writer","target":"capability:generators","kind":"provides"},{"source":"actor:devinea","target":"artifact:sap-ux-odata-service-writer","kind":"maintains"},{"source":"actor:sap","target":"artifact:sap-ux-odata-service-writer","kind":"maintains"},{"source":"artifact:sap-ux-odata-vocabularies","target":"capability:fiori-annotations","kind":"provides"},{"source":"actor:devinea","target":"artifact:sap-ux-odata-vocabularies","kind":"maintains"},{"source":"actor:sap","target":"artifact:sap-ux-odata-vocabularies","kind":"maintains"},{"source":"artifact:sap-ux-telemetry","target":"capability:telemetry","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-ux-telemetry","kind":"maintains"},{"source":"artifact:sap-ux-ui5-application-writer","target":"capability:generators","kind":"provides"},{"source":"actor:devinea","target":"artifact:sap-ux-ui5-application-writer","kind":"maintains"},{"source":"actor:sap","target":"artifact:sap-ux-ui5-application-writer","kind":"maintains"},{"source":"artifact:sap-vscode-cds","target":"capability:editor-support","kind":"provides"},{"source":"artifact:sap-vscode-ui5-language-assistant","target":"capability:editor-support","kind":"provides"},{"source":"artifact:sap-vscode-ui5-language-assistant","target":"capability:linting","kind":"provides"},{"source":"actor:sap","target":"artifact:sap-vscode-ui5-language-assistant","kind":"maintains"},{"source":"artifact:sap-xssec","target":"capability:authentication","kind":"provides"},{"source":"artifact:sap2moose-sap2moose","target":"capability:model-visualisation","kind":"provides"},{"source":"actor:sap2moose","target":"artifact:sap2moose-sap2moose","kind":"maintains"},{"source":"artifact:sapmentors-cds-azure-ad","target":"capability:authentication","kind":"provides"},{"source":"actor:gregorwolf","target":"artifact:sapmentors-cds-azure-ad","kind":"maintains"},{"source":"actor:sapmentors","target":"artifact:sapmentors-cds-azure-ad","kind":"maintains"},{"source":"artifact:sapmentors-cds-pg","target":"capability:database-connectors","kind":"provides"},{"source":"actor:gregorwolf","target":"artifact:sapmentors-cds-pg","kind":"maintains"},{"source":"actor:sapmentors","target":"artifact:sapmentors-cds-pg","kind":"maintains"},{"source":"actor:vobu","target":"artifact:sapmentors-cds-pg","kind":"maintains"},{"source":"artifact:sapmentors-cds-scp-api","target":"capability:destinations","kind":"provides"},{"source":"actor:gregorwolf","target":"artifact:sapmentors-cds-scp-api","kind":"maintains"},{"source":"actor:sapmentors","target":"artifact:sapmentors-cds-scp-api","kind":"maintains"},{"source":"actor:vobu","target":"artifact:sapmentors-cds-scp-api","kind":"maintains"},{"source":"artifact:saposs-vscode-mta-tools","target":"capability:deployment-operator","kind":"provides"},{"source":"actor:sap","target":"artifact:saposs-vscode-mta-tools","kind":"maintains"},{"source":"artifact:saptarishi-cds-plugin-llm","target":"capability:llm-integration","kind":"provides"},{"source":"artifact:saptarishi-cds-plugin-llm","target":"capability:agent-tooling","kind":"provides"},{"source":"artifact:saptarishi-cds-plugin-llm","target":"capability:prompt-management","kind":"provides"},{"source":"artifact:saptarishi-cds-plugin-llm","target":"capability:agent-evals","kind":"provides"},{"source":"artifact:saptarishi-cds-plugin-llm","target":"capability:retrieval-augmented-generation","kind":"provides"},{"source":"actor:kalyanjanumpally","target":"artifact:saptarishi-cds-plugin-llm","kind":"maintains"},{"source":"artifact:saptarishi-cds-plugin-vector-hana","target":"capability:retrieval-augmented-generation","kind":"provides"},{"source":"actor:kalyanjanumpally","target":"artifact:saptarishi-cds-plugin-vector-hana","kind":"maintains"},{"source":"artifact:saptools-bruno","target":"capability:testing","kind":"provides"},{"source":"actor:dong-tran","target":"artifact:saptools-bruno","kind":"maintains"},{"source":"artifact:saptools-cf-debugger","target":"capability:debugging","kind":"provides"},{"source":"actor:dong-tran","target":"artifact:saptools-cf-debugger","kind":"maintains"},{"source":"artifact:saptools-cf-explorer","target":"capability:debugging","kind":"provides"},{"source":"actor:dong-tran","target":"artifact:saptools-cf-explorer","kind":"maintains"},{"source":"artifact:saptools-cf-function-trace","target":"capability:debugging","kind":"provides"},{"source":"actor:dong-tran","target":"artifact:saptools-cf-function-trace","kind":"maintains"},{"source":"artifact:saptools-cf-hana","target":"capability:debugging","kind":"provides"},{"source":"actor:dong-tran","target":"artifact:saptools-cf-hana","kind":"maintains"},{"source":"artifact:saptools-cf-inspector","target":"capability:debugging","kind":"provides"},{"source":"actor:dong-tran","target":"artifact:saptools-cf-inspector","kind":"maintains"},{"source":"artifact:saptools-cf-live-trace","target":"capability:debugging","kind":"provides"},{"source":"actor:dong-tran","target":"artifact:saptools-cf-live-trace","kind":"maintains"},{"source":"artifact:saptools-cf-logs","target":"capability:logging","kind":"provides"},{"source":"actor:dong-tran","target":"artifact:saptools-cf-logs","kind":"maintains"},{"source":"artifact:saptools-cf-metrics","target":"capability:telemetry","kind":"provides"},{"source":"actor:dong-tran","target":"artifact:saptools-cf-metrics","kind":"maintains"},{"source":"artifact:saptools-cf-otel","target":"capability:telemetry","kind":"provides"},{"source":"actor:dong-tran","target":"artifact:saptools-cf-otel","kind":"maintains"},{"source":"artifact:saptools-cf-request-runner","target":"capability:debugging","kind":"provides"},{"source":"actor:dong-tran","target":"artifact:saptools-cf-request-runner","kind":"maintains"},{"source":"artifact:saptools-cf-sync","target":"domain:developer-experience","kind":"weak"},{"source":"actor:dong-tran","target":"artifact:saptools-cf-sync","kind":"maintains"},{"source":"artifact:saptools-cf-tail","target":"capability:logging","kind":"provides"},{"source":"actor:dong-tran","target":"artifact:saptools-cf-tail","kind":"maintains"},{"source":"artifact:saptools-cf-xsuaa","target":"capability:authentication","kind":"provides"},{"source":"actor:dong-tran","target":"artifact:saptools-cf-xsuaa","kind":"maintains"},{"source":"artifact:saptools-hana-lens","target":"capability:editor-support","kind":"provides"},{"source":"actor:dong-tran","target":"artifact:saptools-hana-lens","kind":"maintains"},{"source":"artifact:saptools-service-flow","target":"capability:debugging","kind":"provides"},{"source":"actor:dong-tran","target":"artifact:saptools-service-flow","kind":"maintains"},{"source":"artifact:saptools-sqltools","target":"capability:editor-support","kind":"provides"},{"source":"actor:dong-tran","target":"artifact:saptools-sqltools","kind":"maintains"},{"source":"artifact:satiroglu-kaev","target":"capability:linting","kind":"provides"},{"source":"artifact:satiroglu-kaev","target":"capability:frontend-performance","kind":"provides"},{"source":"actor:satiroglu","target":"artifact:satiroglu-kaev","kind":"maintains"},{"source":"artifact:saurabhvc-abapdocmcp","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:saurabhvc","target":"artifact:saurabhvc-abapdocmcp","kind":"maintains"},{"source":"artifact:sbcgua-abap-gui-boilerplate","target":"capability:abap-ui-from-abap","kind":"demonstrates"},{"source":"actor:sbcgua","target":"artifact:sbcgua-abap-gui-boilerplate","kind":"maintains"},{"source":"artifact:sbcgua-abap-mustache","target":"capability:abap-ui-from-abap","kind":"provides"},{"source":"actor:sbcgua","target":"artifact:sbcgua-abap-mustache","kind":"maintains"},{"source":"artifact:sbcgua-ajson","target":"capability:serialisation","kind":"provides"},{"source":"actor:sbcgua","target":"artifact:sbcgua-ajson","kind":"maintains"},{"source":"artifact:sbcgua-mockup-loader","target":"capability:abap-unit-testing","kind":"provides"},{"source":"actor:sbcgua","target":"artifact:sbcgua-mockup-loader","kind":"maintains"},{"source":"artifact:sbcgua-text2tab","target":"capability:serialisation","kind":"provides"},{"source":"actor:sbcgua","target":"artifact:sbcgua-text2tab","kind":"maintains"},{"source":"artifact:schwarzit-sap-usi-authority-check","target":"capability:authorization","kind":"provides"},{"source":"actor:schwarzit","target":"artifact:schwarzit-sap-usi-authority-check","kind":"maintains"},{"source":"artifact:schwarzit-sap-usi-exception","target":"capability:error-handling","kind":"provides"},{"source":"actor:schwarzit","target":"artifact:schwarzit-sap-usi-exception","kind":"maintains"},{"source":"artifact:schwarzit-sap-usi-logging-api","target":"capability:logging","kind":"provides"},{"source":"actor:schwarzit","target":"artifact:schwarzit-sap-usi-logging-api","kind":"maintains"},{"source":"artifact:se38-abapfaker","target":"capability:seed-data","kind":"provides"},{"source":"actor:se38","target":"artifact:se38-abapfaker","kind":"maintains"},{"source":"artifact:sebsst-cap-js-geoloc-plugin","target":"capability:fiori-annotations","kind":"provides"},{"source":"artifact:sebsst-cap-js-geoloc-plugin","target":"capability:location-services","kind":"provides"},{"source":"artifact:secondsky-sap-skills","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:secondsky","target":"artifact:secondsky-sap-skills","kind":"maintains"},{"source":"artifact:shahid-la-cds-db-nlquery-mcp","target":"capability:mcp-servers","kind":"provides"},{"source":"artifact:shahid-la-cds-db-nlquery-mcp","target":"capability:llm-integration","kind":"provides"},{"source":"actor:shahidla","target":"artifact:shahid-la-cds-db-nlquery-mcp","kind":"maintains"},{"source":"artifact:silvius1996-claude-sap-kit","target":"capability:agent-code-access","kind":"provides"},{"source":"artifact:silvius1996-claude-sap-kit","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:silvius1996","target":"artifact:silvius1996-claude-sap-kit","kind":"maintains"},{"source":"artifact:skybuffer-ai-mcp-server","target":"capability:agent-systems-access","kind":"provides"},{"source":"artifact:skybuffer-ai-mcp-server","target":"capability:mcp-servers","kind":"provides"},{"source":"artifact:skybuffer-ai-mcp-server","target":"capability:agent-code-access","kind":"provides"},{"source":"artifact:sleibach-cap-collaborative-draft","target":"capability:draft-handling","kind":"provides"},{"source":"artifact:sleibach-cap-collaborative-draft","target":"capability:concurrency-control","kind":"provides"},{"source":"actor:sleibach","target":"artifact:sleibach-cap-collaborative-draft","kind":"maintains"},{"source":"artifact:sleibach-cap-companion","target":"capability:in-app-guidance","kind":"provides"},{"source":"actor:sleibach","target":"artifact:sleibach-cap-companion","kind":"maintains"},{"source":"artifact:sleibach-cap-mcp-plugin","target":"capability:mcp-servers","kind":"provides"},{"source":"actor:sleibach","target":"artifact:sleibach-cap-mcp-plugin","kind":"maintains"},{"source":"artifact:sleibach-cap-n8n","target":"capability:workflow-integration","kind":"provides"},{"source":"actor:sleibach","target":"artifact:sleibach-cap-n8n","kind":"maintains"},{"source":"artifact:sleibach-cap-snowflake","target":"capability:database-connectors","kind":"provides"},{"source":"actor:sleibach","target":"artifact:sleibach-cap-snowflake","kind":"maintains"},{"source":"artifact:sleibach-cap-ui-telemetry","target":"capability:telemetry","kind":"provides"},{"source":"actor:sleibach","target":"artifact:sleibach-cap-ui-telemetry","kind":"maintains"},{"source":"artifact:sonnyfrenzel-rgb-clean-core-io","target":"capability:abap-cloud-readiness","kind":"provides"},{"source":"artifact:sonnyfrenzel-rgb-clean-core-io","target":"capability:abap-static-analysis","kind":"provides"},{"source":"artifact:sonnyfrenzel-rgb-clean-core-io","target":"capability:documentation","kind":"provides"},{"source":"artifact:soontao-cds-common-jwt-support","target":"capability:authentication","kind":"provides"},{"source":"actor:theo-sun","target":"artifact:soontao-cds-common-jwt-support","kind":"maintains"},{"source":"artifact:soontao-cds-feature-toggle","target":"capability:feature-toggles","kind":"provides"},{"source":"actor:theo-sun","target":"artifact:soontao-cds-feature-toggle","kind":"maintains"},{"source":"artifact:soontao-cds-hyper-app-service","target":"capability:typescript-patterns","kind":"provides"},{"source":"actor:theo-sun","target":"artifact:soontao-cds-hyper-app-service","kind":"maintains"},{"source":"artifact:soontao-cds-internal-tool","target":"capability:typing","kind":"provides"},{"source":"actor:theo-sun","target":"artifact:soontao-cds-internal-tool","kind":"maintains"},{"source":"artifact:soontao-cds-mysql","target":"capability:database-connectors","kind":"provides"},{"source":"actor:theo-sun","target":"artifact:soontao-cds-mysql","kind":"maintains"},{"source":"artifact:soontao-cds-nats","target":"capability:async-processing","kind":"provides"},{"source":"actor:theo-sun","target":"artifact:soontao-cds-nats","kind":"maintains"},{"source":"artifact:soontao-cds-rate-limit","target":"capability:rate-limiting","kind":"provides"},{"source":"actor:theo-sun","target":"artifact:soontao-cds-rate-limit","kind":"maintains"},{"source":"artifact:soontao-opentelemetry-cds","target":"capability:telemetry","kind":"provides"},{"source":"actor:theo-sun","target":"artifact:soontao-opentelemetry-cds","kind":"maintains"},{"source":"artifact:spreadsheetimporter-abap-importer","target":"capability:data-import-export","kind":"provides"},{"source":"artifact:spreadsheetimporter-cds-spreadsheetimporter-plugin","target":"capability:data-import-export","kind":"provides"},{"source":"actor:lemaiwo","target":"artifact:spreadsheetimporter-cds-spreadsheetimporter-plugin","kind":"maintains"},{"source":"actor:marianfoo","target":"artifact:spreadsheetimporter-cds-spreadsheetimporter-plugin","kind":"maintains"},{"source":"actor:spreadsheetimporter","target":"artifact:spreadsheetimporter-cds-spreadsheetimporter-plugin","kind":"maintains"},{"source":"artifact:spreadsheetimporter-packed-deployment-abap","target":"capability:data-import-export","kind":"demonstrates"},{"source":"actor:spreadsheetimporter","target":"artifact:spreadsheetimporter-packed-deployment-abap","kind":"maintains"},{"source":"artifact:spreadsheetimporter-sample-adaptation-banks-update","target":"capability:data-import-export","kind":"demonstrates"},{"source":"actor:spreadsheetimporter","target":"artifact:spreadsheetimporter-sample-adaptation-banks-update","kind":"maintains"},{"source":"artifact:spreadsheetimporter-sample-adaptation-banks","target":"capability:data-import-export","kind":"demonstrates"},{"source":"actor:spreadsheetimporter","target":"artifact:spreadsheetimporter-sample-adaptation-banks","kind":"maintains"},{"source":"artifact:spreadsheetimporter-sample-full-btp","target":"capability:data-import-export","kind":"demonstrates"},{"source":"actor:spreadsheetimporter","target":"artifact:spreadsheetimporter-sample-full-btp","kind":"maintains"},{"source":"artifact:spreadsheetimporter-sample-odata-api-upload","target":"capability:data-import-export","kind":"demonstrates"},{"source":"actor:spreadsheetimporter","target":"artifact:spreadsheetimporter-sample-odata-api-upload","kind":"maintains"},{"source":"artifact:spreadsheetimporter-sample-standalone","target":"capability:data-import-export","kind":"demonstrates"},{"source":"actor:spreadsheetimporter","target":"artifact:spreadsheetimporter-sample-standalone","kind":"maintains"},{"source":"artifact:spreadsheetimporter-ui5-cc-spreadsheetimporter","target":"capability:data-import-export","kind":"provides"},{"source":"actor:marianfoo","target":"artifact:spreadsheetimporter-ui5-cc-spreadsheetimporter","kind":"maintains"},{"source":"actor:spreadsheetimporter","target":"artifact:spreadsheetimporter-ui5-cc-spreadsheetimporter","kind":"maintains"},{"source":"artifact:spreadsheetimporter-ui5-task-btp-manifest","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:marianfoo","target":"artifact:spreadsheetimporter-ui5-task-btp-manifest","kind":"maintains"},{"source":"actor:spreadsheetimporter","target":"artifact:spreadsheetimporter-ui5-task-btp-manifest","kind":"maintains"},{"source":"artifact:srbconsultingteam-srbinfoandsupportjs","target":"domain:operations-and-runtime","kind":"weak"},{"source":"actor:michaelhenningersrb","target":"artifact:srbconsultingteam-srbinfoandsupportjs","kind":"maintains"},{"source":"actor:srbconsultingteam","target":"artifact:srbconsultingteam-srbinfoandsupportjs","kind":"maintains"},{"source":"artifact:srbconsultingteam-srbjslogger","target":"capability:logging","kind":"provides"},{"source":"actor:michaelhenningersrb","target":"artifact:srbconsultingteam-srbjslogger","kind":"maintains"},{"source":"actor:srbconsultingteam","target":"artifact:srbconsultingteam-srbjslogger","kind":"maintains"},{"source":"artifact:srijan9864-zrfcread","target":"capability:rfc-connectivity","kind":"provides"},{"source":"actor:srijan9864","target":"artifact:srijan9864-zrfcread","kind":"maintains"},{"source":"artifact:striezl-variscan","target":"capability:code-search","kind":"provides"},{"source":"actor:striezl","target":"artifact:striezl-variscan","kind":"maintains"},{"source":"artifact:sumu-ning-aes","target":"capability:encryption","kind":"provides"},{"source":"actor:sumu-ning","target":"artifact:sumu-ning-aes","kind":"maintains"},{"source":"artifact:swixfort-sdw-abap-di","target":"capability:dependency-injection","kind":"provides"},{"source":"actor:swixfort","target":"artifact:swixfort-sdw-abap-di","kind":"maintains"},{"source":"artifact:syarhei-cap-utils-barrier","target":"domain:developer-experience","kind":"weak"},{"source":"artifact:syntaai-sap-security-mcp","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:syntaai","target":"artifact:syntaai-sap-security-mcp","kind":"maintains"},{"source":"artifact:techedgegroup-sap-abap2gsheet","target":"capability:http-clients","kind":"provides"},{"source":"actor:techedgegroup-sap","target":"artifact:techedgegroup-sap-abap2gsheet","kind":"maintains"},{"source":"artifact:tf-franz-seidl-abapdocs-code-scanner","target":"capability:documentation","kind":"provides"},{"source":"actor:tf-franz-seidl","target":"artifact:tf-franz-seidl-abapdocs-code-scanner","kind":"maintains"},{"source":"artifact:tiagobalmeida-openui5-camera","target":"capability:ui5-custom-controls","kind":"provides"},{"source":"actor:tiagobalmeida","target":"artifact:tiagobalmeida-openui5-camera","kind":"maintains"},{"source":"artifact:tklein1801-cap-js-attachments","target":"capability:attachments","kind":"provides"},{"source":"actor:tklein1801","target":"artifact:tklein1801-cap-js-attachments","kind":"maintains"},{"source":"artifact:tmhew-abap-aws-sigv4","target":"capability:authentication","kind":"provides"},{"source":"actor:tmhew","target":"artifact:tmhew-abap-aws-sigv4","kind":"maintains"},{"source":"artifact:tobiashofmann-adt-bundle-builder","target":"capability:ide-provisioning","kind":"provides"},{"source":"actor:tobiashofmann","target":"artifact:tobiashofmann-adt-bundle-builder","kind":"maintains"},{"source":"artifact:tobiashofmann-off-stack-abap","target":"capability:abap-static-analysis","kind":"demonstrates"},{"source":"artifact:tobiashofmann-off-stack-abap","target":"capability:abap-unit-testing","kind":"demonstrates"},{"source":"artifact:tobiashofmann-off-stack-abap","target":"capability:documentation","kind":"demonstrates"},{"source":"actor:tobiashofmann","target":"artifact:tobiashofmann-off-stack-abap","kind":"maintains"},{"source":"artifact:tobiashofmann-pam-mcp-server","target":"capability:product-maintenance-status","kind":"provides"},{"source":"actor:tobiashofmann","target":"artifact:tobiashofmann-pam-mcp-server","kind":"maintains"},{"source":"artifact:tobiashofmann-sap-support-radar","target":"capability:product-maintenance-status","kind":"provides"},{"source":"actor:tobiashofmann","target":"artifact:tobiashofmann-sap-support-radar","kind":"maintains"},{"source":"artifact:toni-ramchandani-sapient-mcp","target":"capability:gui-automation","kind":"provides"},{"source":"actor:toni-ramchandani","target":"artifact:toni-ramchandani-sapient-mcp","kind":"maintains"},{"source":"artifact:tricktresor-alv-grid","target":"capability:abap-classic-ui","kind":"demonstrates"},{"source":"actor:tricktresor","target":"artifact:tricktresor-alv-grid","kind":"maintains"},{"source":"artifact:tricktresor-cute","target":"capability:table-maintenance","kind":"provides"},{"source":"actor:tricktresor","target":"artifact:tricktresor-cute","kind":"maintains"},{"source":"artifact:tricktresor-gladius","target":"capability:abap-unit-testing","kind":"demonstrates"},{"source":"actor:tricktresor","target":"artifact:tricktresor-gladius","kind":"maintains"},{"source":"artifact:tricktresor-guidrasil","target":"capability:abap-classic-ui","kind":"provides"},{"source":"actor:tricktresor","target":"artifact:tricktresor-guidrasil","kind":"maintains"},{"source":"artifact:ui5-community-babel-plugin-transform-modules-ui5","target":"capability:ui5-typescript","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-babel-plugin-transform-modules-ui5","kind":"maintains"},{"source":"artifact:ui5-community-cds-plugin-ui5","target":"capability:ui5-dev-server","kind":"provides"},{"source":"actor:petermuessig","target":"artifact:ui5-community-cds-plugin-ui5","kind":"maintains"},{"source":"actor:ui5-community","target":"artifact:ui5-community-cds-plugin-ui5","kind":"maintains"},{"source":"artifact:ui5-community-create-easy-ui5","target":"capability:generators","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-create-easy-ui5","kind":"maintains"},{"source":"artifact:ui5-community-create-wdi5","target":"capability:generators","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-create-wdi5","kind":"maintains"},{"source":"actor:vobu","target":"artifact:ui5-community-create-wdi5","kind":"maintains"},{"source":"artifact:ui5-community-dev-approuter","target":"capability:local-development","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-dev-approuter","kind":"maintains"},{"source":"artifact:ui5-community-generator-easy-ui5","target":"capability:generators","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-generator-easy-ui5","kind":"maintains"},{"source":"artifact:ui5-community-generator-ui5-add-extension","target":"capability:generators","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-generator-ui5-add-extension","kind":"maintains"},{"source":"actor:uxkjaer","target":"artifact:ui5-community-generator-ui5-add-extension","kind":"maintains"},{"source":"artifact:ui5-community-generator-ui5-app","target":"capability:generators","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-generator-ui5-app","kind":"maintains"},{"source":"artifact:ui5-community-generator-ui5-control","target":"capability:generators","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-generator-ui5-control","kind":"maintains"},{"source":"artifact:ui5-community-generator-ui5-flp-plugin","target":"capability:launchpad-plugins","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-generator-ui5-flp-plugin","kind":"maintains"},{"source":"artifact:ui5-community-generator-ui5-library-webc","target":"capability:generators","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-generator-ui5-library-webc","kind":"maintains"},{"source":"artifact:ui5-community-generator-ui5-library","target":"capability:generators","kind":"provides"},{"source":"actor:geert-janklaps","target":"artifact:ui5-community-generator-ui5-library","kind":"maintains"},{"source":"actor:ui5-community","target":"artifact:ui5-community-generator-ui5-library","kind":"maintains"},{"source":"artifact:ui5-community-generator-ui5-project","target":"capability:generators","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-generator-ui5-project","kind":"maintains"},{"source":"artifact:ui5-community-generator-ui5-ts-app-fcl","target":"capability:generators","kind":"provides"},{"source":"actor:lemaiwo","target":"artifact:ui5-community-generator-ui5-ts-app-fcl","kind":"maintains"},{"source":"actor:petermuessig","target":"artifact:ui5-community-generator-ui5-ts-app-fcl","kind":"maintains"},{"source":"actor:ui5-community","target":"artifact:ui5-community-generator-ui5-ts-app-fcl","kind":"maintains"},{"source":"artifact:ui5-community-generator-ui5-ts-app","target":"capability:generators","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-generator-ui5-ts-app","kind":"maintains"},{"source":"artifact:ui5-community-generator-ui5-ts-flp-plugin","target":"capability:launchpad-plugins","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-generator-ui5-ts-flp-plugin","kind":"maintains"},{"source":"artifact:ui5-community-generator-ui5-ts-library","target":"capability:generators","kind":"provides"},{"source":"actor:lemaiwo","target":"artifact:ui5-community-generator-ui5-ts-library","kind":"maintains"},{"source":"actor:ui5-community","target":"artifact:ui5-community-generator-ui5-ts-library","kind":"maintains"},{"source":"artifact:ui5-community-generator-ui5-wdi5","target":"capability:generators","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-generator-ui5-wdi5","kind":"maintains"},{"source":"artifact:ui5-community-hacking-away-sampleapp","target":"capability:ui5-typescript","kind":"demonstrates"},{"source":"actor:ui5-community","target":"artifact:ui5-community-hacking-away-sampleapp","kind":"maintains"},{"source":"artifact:ui5-community-jsx-runtime-helloworld","target":"domain:developer-experience","kind":"weak"},{"source":"actor:ui5-community","target":"artifact:ui5-community-jsx-runtime-helloworld","kind":"maintains"},{"source":"artifact:ui5-community-jsx-runtime-showcase","target":"domain:developer-experience","kind":"weak"},{"source":"actor:ui5-community","target":"artifact:ui5-community-jsx-runtime-showcase","kind":"maintains"},{"source":"artifact:ui5-community-jsx-runtime","target":"capability:ui5-typescript","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-jsx-runtime","kind":"maintains"},{"source":"artifact:ui5-community-karma-ui5-transpile","target":"capability:ui5-testing","kind":"provides"},{"source":"actor:petermuessig","target":"artifact:ui5-community-karma-ui5-transpile","kind":"maintains"},{"source":"actor:ui5-community","target":"artifact:ui5-community-karma-ui5-transpile","kind":"maintains"},{"source":"artifact:ui5-community-showcase-approuter","target":"capability:local-development","kind":"demonstrates"},{"source":"actor:nicoschoenteich","target":"artifact:ui5-community-showcase-approuter","kind":"maintains"},{"source":"actor:petermuessig","target":"artifact:ui5-community-showcase-approuter","kind":"maintains"},{"source":"actor:ui5-community","target":"artifact:ui5-community-showcase-approuter","kind":"maintains"},{"source":"artifact:ui5-community-showcase-cds-bookshop","target":"capability:ui5-dev-server","kind":"demonstrates"},{"source":"actor:nicoschoenteich","target":"artifact:ui5-community-showcase-cds-bookshop","kind":"maintains"},{"source":"actor:petermuessig","target":"artifact:ui5-community-showcase-cds-bookshop","kind":"maintains"},{"source":"actor:ui5-community","target":"artifact:ui5-community-showcase-cds-bookshop","kind":"maintains"},{"source":"artifact:ui5-community-showcase-ui5-app","target":"capability:ui5-build-tooling","kind":"demonstrates"},{"source":"artifact:ui5-community-showcase-ui5-app","target":"capability:ui5-testing","kind":"demonstrates"},{"source":"actor:petermuessig","target":"artifact:ui5-community-showcase-ui5-app","kind":"maintains"},{"source":"actor:ui5-community","target":"artifact:ui5-community-showcase-ui5-app","kind":"maintains"},{"source":"actor:vobu","target":"artifact:ui5-community-showcase-ui5-app","kind":"maintains"},{"source":"artifact:ui5-community-showcase-ui5-bookshop-viewer","target":"capability:ui5-build-tooling","kind":"demonstrates"},{"source":"actor:nicoschoenteich","target":"artifact:ui5-community-showcase-ui5-bookshop-viewer","kind":"maintains"},{"source":"actor:petermuessig","target":"artifact:ui5-community-showcase-ui5-bookshop-viewer","kind":"maintains"},{"source":"actor:ui5-community","target":"artifact:ui5-community-showcase-ui5-bookshop-viewer","kind":"maintains"},{"source":"artifact:ui5-community-showcase-ui5-lib","target":"capability:ui5-build-tooling","kind":"demonstrates"},{"source":"artifact:ui5-community-showcase-ui5-lib","target":"capability:ui5-testing","kind":"demonstrates"},{"source":"actor:petermuessig","target":"artifact:ui5-community-showcase-ui5-lib","kind":"maintains"},{"source":"actor:ui5-community","target":"artifact:ui5-community-showcase-ui5-lib","kind":"maintains"},{"source":"artifact:ui5-community-showcase-ui5-module","target":"capability:ui5-build-tooling","kind":"demonstrates"},{"source":"actor:petermuessig","target":"artifact:ui5-community-showcase-ui5-module","kind":"maintains"},{"source":"actor:ui5-community","target":"artifact:ui5-community-showcase-ui5-module","kind":"maintains"},{"source":"artifact:ui5-community-showcase-ui5-tsapp-webc","target":"capability:ui5-web-components","kind":"demonstrates"},{"source":"artifact:ui5-community-showcase-ui5-tsapp-webc","target":"capability:ui5-typescript","kind":"demonstrates"},{"source":"artifact:ui5-community-showcase-ui5-tsapp-webc","target":"capability:ui5-build-tooling","kind":"demonstrates"},{"source":"actor:petermuessig","target":"artifact:ui5-community-showcase-ui5-tsapp-webc","kind":"maintains"},{"source":"actor:ui5-community","target":"artifact:ui5-community-showcase-ui5-tsapp-webc","kind":"maintains"},{"source":"artifact:ui5-community-showcase-ui5-tsapp","target":"capability:ui5-typescript","kind":"demonstrates"},{"source":"artifact:ui5-community-showcase-ui5-tsapp","target":"capability:ui5-build-tooling","kind":"demonstrates"},{"source":"artifact:ui5-community-showcase-ui5-tsapp","target":"capability:ui5-testing","kind":"demonstrates"},{"source":"actor:petermuessig","target":"artifact:ui5-community-showcase-ui5-tsapp","kind":"maintains"},{"source":"actor:ui5-community","target":"artifact:ui5-community-showcase-ui5-tsapp","kind":"maintains"},{"source":"artifact:ui5-community-showcase-ui5-tslib","target":"capability:ui5-typescript","kind":"demonstrates"},{"source":"artifact:ui5-community-showcase-ui5-tslib","target":"capability:ui5-testing","kind":"demonstrates"},{"source":"actor:petermuessig","target":"artifact:ui5-community-showcase-ui5-tslib","kind":"maintains"},{"source":"actor:ui5-community","target":"artifact:ui5-community-showcase-ui5-tslib","kind":"maintains"},{"source":"artifact:ui5-community-showcase-ui5-tsmodule","target":"capability:ui5-typescript","kind":"demonstrates"},{"source":"artifact:ui5-community-showcase-ui5-tsmodule","target":"capability:ui5-build-tooling","kind":"demonstrates"},{"source":"actor:petermuessig","target":"artifact:ui5-community-showcase-ui5-tsmodule","kind":"maintains"},{"source":"actor:ui5-community","target":"artifact:ui5-community-showcase-ui5-tsmodule","kind":"maintains"},{"source":"artifact:ui5-community-ui5-cc-chart","target":"capability:ui5-custom-controls","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-cc-chart","kind":"maintains"},{"source":"artifact:ui5-community-ui5-cc-md","target":"capability:ui5-custom-controls","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-cc-md","kind":"maintains"},{"source":"actor:vobu","target":"artifact:ui5-community-ui5-cc-md","kind":"maintains"},{"source":"artifact:ui5-community-ui5-fontawesome-lib","target":"capability:ui5-custom-controls","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-fontawesome-lib","kind":"maintains"},{"source":"artifact:ui5-community-ui5-icon-explorer","target":"capability:ui5-custom-controls","kind":"demonstrates"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-icon-explorer","kind":"maintains"},{"source":"artifact:ui5-community-ui5-journey-recorder","target":"capability:ui5-testing","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-journey-recorder","kind":"maintains"},{"source":"artifact:ui5-community-ui5-middleware-approuter","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-middleware-approuter","kind":"maintains"},{"source":"artifact:ui5-community-ui5-middleware-cap","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:petermuessig","target":"artifact:ui5-community-ui5-middleware-cap","kind":"maintains"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-middleware-cap","kind":"maintains"},{"source":"artifact:ui5-community-ui5-middleware-hmr","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-middleware-hmr","kind":"maintains"},{"source":"artifact:ui5-community-ui5-middleware-iasync","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-middleware-iasync","kind":"maintains"},{"source":"artifact:ui5-community-ui5-middleware-index","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-middleware-index","kind":"maintains"},{"source":"artifact:ui5-community-ui5-middleware-livereload","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-middleware-livereload","kind":"maintains"},{"source":"artifact:ui5-community-ui5-middleware-onelogin","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-middleware-onelogin","kind":"maintains"},{"source":"artifact:ui5-community-ui5-middleware-serveframework","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-middleware-serveframework","kind":"maintains"},{"source":"artifact:ui5-community-ui5-middleware-servestatic","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-middleware-servestatic","kind":"maintains"},{"source":"artifact:ui5-community-ui5-middleware-simpleproxy","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-middleware-simpleproxy","kind":"maintains"},{"source":"artifact:ui5-community-ui5-middleware-ui5","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-middleware-ui5","kind":"maintains"},{"source":"artifact:ui5-community-ui5-middleware-webjars","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-middleware-webjars","kind":"maintains"},{"source":"artifact:ui5-community-ui5-middleware-websocket","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-middleware-websocket","kind":"maintains"},{"source":"artifact:ui5-community-ui5-task-cachebuster","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-task-cachebuster","kind":"maintains"},{"source":"artifact:ui5-community-ui5-task-copyright","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-task-copyright","kind":"maintains"},{"source":"artifact:ui5-community-ui5-task-flatten-library","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-task-flatten-library","kind":"maintains"},{"source":"artifact:ui5-community-ui5-task-i18ncheck","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-task-i18ncheck","kind":"maintains"},{"source":"artifact:ui5-community-ui5-task-minify-xml","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-task-minify-xml","kind":"maintains"},{"source":"artifact:ui5-community-ui5-task-pwa-enabler","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-task-pwa-enabler","kind":"maintains"},{"source":"artifact:ui5-community-ui5-task-transpile","target":"capability:ui5-typescript","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-task-transpile","kind":"maintains"},{"source":"artifact:ui5-community-ui5-task-zipper","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-task-zipper","kind":"maintains"},{"source":"artifact:ui5-community-ui5-tooling-less","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-tooling-less","kind":"maintains"},{"source":"artifact:ui5-community-ui5-tooling-modules","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-tooling-modules","kind":"maintains"},{"source":"artifact:ui5-community-ui5-tooling-stringreplace","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-tooling-stringreplace","kind":"maintains"},{"source":"artifact:ui5-community-ui5-tooling-transpile","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-tooling-transpile","kind":"maintains"},{"source":"artifact:ui5-community-ui5-ts-modules-showcase","target":"capability:ui5-build-tooling","kind":"demonstrates"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-ts-modules-showcase","kind":"maintains"},{"source":"artifact:ui5-community-ui5-webcomponents-bundle","target":"capability:ui5-web-components","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-ui5-webcomponents-bundle","kind":"maintains"},{"source":"artifact:ui5-community-wdi5-cucumber","target":"capability:ui5-testing","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-wdi5-cucumber","kind":"maintains"},{"source":"artifact:ui5-community-wdi5-fe-selectors","target":"capability:ui5-testing","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-wdi5-fe-selectors","kind":"maintains"},{"source":"artifact:ui5-community-wdi5-workshop","target":"capability:ui5-testing","kind":"demonstrates"},{"source":"actor:ui5-community","target":"artifact:ui5-community-wdi5-workshop","kind":"maintains"},{"source":"artifact:ui5-community-wdi5","target":"capability:ui5-testing","kind":"provides"},{"source":"actor:ui5-community","target":"artifact:ui5-community-wdi5","kind":"maintains"},{"source":"actor:vobu","target":"artifact:ui5-community-wdi5","kind":"maintains"},{"source":"artifact:ui5-linter","target":"capability:linting","kind":"provides"},{"source":"actor:ui5","target":"artifact:ui5-linter","kind":"maintains"},{"source":"artifact:ui5-logger","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:sap","target":"artifact:ui5-logger","kind":"maintains"},{"source":"artifact:ui5-mcp-server","target":"capability:agent-code-access","kind":"provides"},{"source":"artifact:ui5-mcp-server","target":"capability:ui5-typescript","kind":"provides"},{"source":"actor:ui5","target":"artifact:ui5-mcp-server","kind":"maintains"},{"source":"artifact:ui5-middleware-code-coverage","target":"capability:ui5-testing","kind":"provides"},{"source":"artifact:ui5-middleware-code-coverage","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:ui5","target":"artifact:ui5-middleware-code-coverage","kind":"maintains"},{"source":"artifact:ui5-plugins-coding-agents","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:ui5","target":"artifact:ui5-plugins-coding-agents","kind":"maintains"},{"source":"artifact:ui5-sample-app","target":"capability:ui5-build-tooling","kind":"demonstrates"},{"source":"artifact:ui5-sample-app","target":"capability:ui5-testing","kind":"demonstrates"},{"source":"artifact:ui5-sample-app","target":"capability:linting","kind":"demonstrates"},{"source":"actor:ui5","target":"artifact:ui5-sample-app","kind":"maintains"},{"source":"artifact:ui5-tooling-webc","target":"capability:ui5-web-components","kind":"provides"},{"source":"artifact:ui5-tooling-webc","target":"capability:ui5-build-tooling","kind":"provides"},{"source":"actor:sap","target":"artifact:ui5-tooling-webc","kind":"maintains"},{"source":"artifact:ui5-webcomponents-agent-skills","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:ui5","target":"artifact:ui5-webcomponents-agent-skills","kind":"maintains"},{"source":"artifact:ui5-webcomponents-mcp-server","target":"capability:documentation","kind":"provides"},{"source":"actor:ui5","target":"artifact:ui5-webcomponents-mcp-server","kind":"maintains"},{"source":"artifact:ui5-webcomponents","target":"capability:ui5-web-components","kind":"provides"},{"source":"artifact:ui5-webcomponents","target":"capability:ui5-theming","kind":"provides"},{"source":"artifact:ui5-webcomponents","target":"capability:ui5-typescript","kind":"provides"},{"source":"artifact:ui5-webcomponents","target":"capability:ui5-touch-uis","kind":"provides"},{"source":"artifact:ui5-webcomponents","target":"capability:attachments","kind":"provides"},{"source":"artifact:ui5-webcomponents","target":"capability:llm-integration","kind":"provides"},{"source":"actor:ui5","target":"artifact:ui5-webcomponents","kind":"maintains"},{"source":"artifact:uweku-mocka","target":"capability:abap-unit-testing","kind":"provides"},{"source":"actor:uweku","target":"artifact:uweku-mocka","kind":"maintains"},{"source":"artifact:uweku-vise-for-abap","target":"capability:abap-unit-testing","kind":"provides"},{"source":"actor:uweku","target":"artifact:uweku-vise-for-abap","kind":"maintains"},{"source":"artifact:uxkjaer-cap-user-info","target":"capability:data-modelling","kind":"provides"},{"source":"artifact:uxkjaer-cap-user-info","target":"capability:fiori-annotations","kind":"provides"},{"source":"actor:uxkjaer","target":"artifact:uxkjaer-cap-user-info","kind":"maintains"},{"source":"artifact:vadimklimov-cpi-mcp-server","target":"capability:agent-systems-access","kind":"provides"},{"source":"actor:vadimklimov","target":"artifact:vadimklimov-cpi-mcp-server","kind":"maintains"},{"source":"artifact:vaibhavgoel-github-1986-abap-adt-cli","target":"capability:abap-source-control","kind":"provides"},{"source":"artifact:vaibhavgoel-github-1986-abap-adt-cli","target":"capability:change-promotion","kind":"provides"},{"source":"artifact:vaibhavgoel-github-1986-abap-adt-cli","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:vaibhavgoel-github-1986","target":"artifact:vaibhavgoel-github-1986-abap-adt-cli","kind":"maintains"},{"source":"artifact:valdirmendesdev-abap-json-encoder-decoder","target":"capability:serialisation","kind":"provides"},{"source":"actor:valdirmendesdev","target":"artifact:valdirmendesdev-abap-json-encoder-decoder","kind":"maintains"},{"source":"artifact:vcd94xt10z-forsap-s4hana-private-simulator","target":"capability:local-development","kind":"demonstrates"},{"source":"actor:vcd94xt10z","target":"artifact:vcd94xt10z-forsap-s4hana-private-simulator","kind":"maintains"},{"source":"artifact:venkatesh-hulekal-dynamic-external-cds-join","target":"capability:tenant-extensibility","kind":"provides"},{"source":"artifact:victorizbitskiy-zconcurrency-api","target":"capability:parallel-processing","kind":"provides"},{"source":"actor:victorizbitskiy","target":"artifact:victorizbitskiy-zconcurrency-api","kind":"maintains"},{"source":"artifact:victorizbitskiy-zspool-pdf","target":"capability:document-output","kind":"provides"},{"source":"actor:victorizbitskiy","target":"artifact:victorizbitskiy-zspool-pdf","kind":"maintains"},{"source":"artifact:vlutsas-dst","target":"capability:data-privacy","kind":"provides"},{"source":"actor:vlutsas","target":"artifact:vlutsas-dst","kind":"maintains"},{"source":"artifact:vneecious-sap-cap-sdm-plugin","target":"capability:attachments","kind":"provides"},{"source":"actor:vneecious","target":"artifact:vneecious-sap-cap-sdm-plugin","kind":"maintains"},{"source":"artifact:vobu-cds-entra-id","target":"capability:authorization","kind":"provides"},{"source":"actor:vobu","target":"artifact:vobu-cds-entra-id","kind":"maintains"},{"source":"artifact:vrishtrix-zed-cds-extension","target":"capability:editor-support","kind":"provides"},{"source":"actor:vrishtrix","target":"artifact:vrishtrix-zed-cds-extension","kind":"maintains"},{"source":"artifact:watson-developer-cloud-abap-sdk-nwas","target":"capability:llm-integration","kind":"provides"},{"source":"actor:watson-developer-cloud","target":"artifact:watson-developer-cloud-abap-sdk-nwas","kind":"maintains"},{"source":"artifact:wegnerdan-abapmermaid","target":"capability:abap-classic-ui","kind":"provides"},{"source":"actor:wegnerdan","target":"artifact:wegnerdan-abapmermaid","kind":"maintains"},{"source":"artifact:wegnerdan-zwdcsv","target":"capability:serialisation","kind":"provides"},{"source":"actor:wegnerdan","target":"artifact:wegnerdan-zwdcsv","kind":"maintains"},{"source":"artifact:wegnerdan-zwddynscreen","target":"capability:abap-classic-ui","kind":"provides"},{"source":"actor:wegnerdan","target":"artifact:wegnerdan-zwddynscreen","kind":"maintains"},{"source":"artifact:weiserman-rap-skills","target":"capability:agent-guidance","kind":"provides"},{"source":"actor:weiserman","target":"artifact:weiserman-rap-skills","kind":"maintains"},{"source":"artifact:wolfe100-openui5-paginator","target":"capability:ui5-custom-controls","kind":"provides"},{"source":"actor:wolfe100","target":"artifact:wolfe100-openui5-paginator","kind":"maintains"},{"source":"artifact:workskong-mcp-abap-adt","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:workskong","target":"artifact:workskong-mcp-abap-adt","kind":"maintains"},{"source":"artifact:wozjac-abap-sencha","target":"capability:abap-unit-testing","kind":"provides"},{"source":"actor:wozjac","target":"artifact:wozjac-abap-sencha","kind":"maintains"},{"source":"artifact:wozjac-vscode-ui5-api-reference","target":"capability:documentation","kind":"provides"},{"source":"actor:wozjac","target":"artifact:wozjac-vscode-ui5-api-reference","kind":"maintains"},{"source":"artifact:wozjac-vscode-ui5-odata-mock-generator","target":"capability:ui5-testing","kind":"provides"},{"source":"actor:wozjac","target":"artifact:wozjac-vscode-ui5-odata-mock-generator","kind":"maintains"},{"source":"artifact:xamafe-rfc-tools","target":"capability:parallel-processing","kind":"provides"},{"source":"actor:xamafe","target":"artifact:xamafe-rfc-tools","kind":"maintains"},{"source":"artifact:xbergun-cap-mock-generator","target":"capability:seed-data","kind":"provides"},{"source":"actor:xbergun","target":"artifact:xbergun-cap-mock-generator","kind":"maintains"},{"source":"artifact:xexer-abap-ccm","target":"capability:abap-cloud-readiness","kind":"provides"},{"source":"actor:xexer","target":"artifact:xexer-abap-ccm","kind":"maintains"},{"source":"artifact:xexer-abap-message-logger","target":"capability:logging","kind":"provides"},{"source":"actor:xexer","target":"artifact:xexer-abap-message-logger","kind":"maintains"},{"source":"artifact:xexer-abap-select-converter","target":"capability:abap-cloud-readiness","kind":"provides"},{"source":"artifact:xexer-abap-system-fields","target":"capability:abap-cloud-readiness","kind":"provides"},{"source":"actor:xexer","target":"artifact:xexer-abap-system-fields","kind":"maintains"},{"source":"artifact:xexer-abap-test-container","target":"capability:abap-unit-testing","kind":"provides"},{"source":"actor:xexer","target":"artifact:xexer-abap-test-container","kind":"maintains"},{"source":"artifact:xexer-abap-unit-runner","target":"capability:abap-unit-testing","kind":"provides"},{"source":"actor:xexer","target":"artifact:xexer-abap-unit-runner","kind":"maintains"},{"source":"artifact:xexer-cds-field-mapping","target":"capability:data-modelling","kind":"provides"},{"source":"actor:xexer","target":"artifact:xexer-cds-field-mapping","kind":"maintains"},{"source":"artifact:xexer-cloudification-repository-viewer","target":"capability:abap-cloud-readiness","kind":"provides"},{"source":"artifact:xexer-my-ide-actions","target":"capability:editor-support","kind":"provides"},{"source":"actor:xexer","target":"artifact:xexer-my-ide-actions","kind":"maintains"},{"source":"artifact:xexer-odata-batch-creator","target":"capability:odata","kind":"provides"},{"source":"artifact:xexer-xlf-translator","target":"capability:localization","kind":"provides"},{"source":"artifact:xinitrc86-adash-services","target":"capability:abap-unit-testing","kind":"provides"},{"source":"actor:xinitrc86","target":"artifact:xinitrc86-adash-services","kind":"maintains"},{"source":"artifact:xinitrc86-zthread","target":"capability:parallel-processing","kind":"provides"},{"source":"actor:xinitrc86","target":"artifact:xinitrc86-zthread","kind":"maintains"},{"source":"artifact:yannick-thirion-klystron","target":"capability:agent-code-access","kind":"provides"},{"source":"artifact:yannick-thirion-klystron","target":"capability:agent-systems-access","kind":"provides"},{"source":"artifact:yannick-thirion-klystron","target":"capability:change-promotion","kind":"provides"},{"source":"artifact:yannick-thirion-klystron","target":"capability:agent-guidance","kind":"provides"},{"source":"artifact:yassinbahri-pyrfc-mcp","target":"capability:agent-systems-access","kind":"provides"},{"source":"artifact:yassinbahri-pyrfc-mcp","target":"capability:agent-code-access","kind":"provides"},{"source":"artifact:yassinbahri-pyrfc-mcp","target":"capability:tool-governance","kind":"provides"},{"source":"actor:yassinbahri","target":"artifact:yassinbahri-pyrfc-mcp","kind":"maintains"},{"source":"artifact:yassinbahri-sap-knowledge-pipeline","target":"capability:retrieval-augmented-generation","kind":"provides"},{"source":"actor:yassinbahri","target":"artifact:yassinbahri-sap-knowledge-pipeline","kind":"maintains"},{"source":"artifact:ysichov-abap-ai-code-tools","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:ysichov","target":"artifact:ysichov-abap-ai-code-tools","kind":"maintains"},{"source":"artifact:ysichov-abap-ai-code","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:ysichov","target":"artifact:ysichov-abap-ai-code","kind":"maintains"},{"source":"artifact:ysichov-ace","target":"capability:abap-static-analysis","kind":"provides"},{"source":"actor:ysichov","target":"artifact:ysichov-ace","kind":"maintains"},{"source":"artifact:ysichov-ave","target":"capability:abap-code-review","kind":"provides"},{"source":"actor:ysichov","target":"artifact:ysichov-ave","kind":"maintains"},{"source":"artifact:ysichov-hr-dme","target":"capability:abap-data-browsing","kind":"provides"},{"source":"actor:ysichov","target":"artifact:ysichov-hr-dme","kind":"maintains"},{"source":"artifact:ysichov-sap-easy-ai","target":"capability:llm-integration","kind":"demonstrates"},{"source":"actor:ysichov","target":"artifact:ysichov-sap-easy-ai","kind":"maintains"},{"source":"artifact:ysichov-simple-data-explorer","target":"capability:abap-data-browsing","kind":"provides"},{"source":"actor:ysichov","target":"artifact:ysichov-simple-data-explorer","kind":"maintains"},{"source":"artifact:ysichov-smart-debugger","target":"capability:debugging","kind":"provides"},{"source":"actor:ysichov","target":"artifact:ysichov-smart-debugger","kind":"maintains"},{"source":"artifact:ysichov-vertex","target":"capability:abap-code-review","kind":"provides"},{"source":"artifact:ysichov-vertex","target":"capability:abap-data-browsing","kind":"provides"},{"source":"artifact:ysichov-vertex","target":"capability:agent-code-access","kind":"provides"},{"source":"actor:ysichov","target":"artifact:ysichov-vertex","kind":"maintains"},{"source":"artifact:zedwin-ztct","target":"capability:change-promotion","kind":"provides"},{"source":"actor:zedwin","target":"artifact:zedwin-ztct","kind":"maintains"},{"source":"artifact:zenrosadira-abap-tbox-csvman","target":"capability:serialisation","kind":"provides"},{"source":"actor:zenrosadira","target":"artifact:zenrosadira-abap-tbox-csvman","kind":"maintains"},{"source":"artifact:zenrosadira-abap-tbox-stats","target":"capability:statistical-analysis","kind":"provides"},{"source":"actor:zenrosadira","target":"artifact:zenrosadira-abap-tbox-stats","kind":"maintains"},{"source":"artifact:1nbuc-mcp-is-tpm","target":"artifact:btp-trading-partner-management","kind":"requires","requirement":"required","role":"target"},{"source":"artifact:abap-adt-api","target":"artifact:sap-adt","kind":"requires"},{"source":"artifact:abap-ai-mcp","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap-ai-mcp2","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap-logger-abap-logger","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:abap2ui5-abap2ui5-local","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"conditional","role":"installation","condition":"the repository is pulled into the system instead of the handler class being copied"},{"source":"artifact:abap2ui5-abap2ui5","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:abap2ui5-addons-abap-agent-runtime","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-abap-agent-runtime","target":"artifact:abap2ui5-headless-frontend","kind":"requires","requirement":"required","role":"frontend simulator"},{"source":"artifact:abap2ui5-addons-abap-agent-runtime","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-addons-abap-cloud-gui","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-abap-cloud-gui","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-addons-admin-cockpit","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-admin-cockpit","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-addons-admin-cockpit","target":"artifact:abap2ui5-addons-lock-manager","kind":"requires","requirement":"conditional","role":"live-monitor-display","condition":"abap2UI5-addons/lock-manager is installed"},{"source":"artifact:abap2ui5-addons-admin-cockpit","target":"artifact:abap2ui5-headless-frontend","kind":"requires","requirement":"conditional","role":"reproduction","condition":"the headless frontend is installed"},{"source":"artifact:abap2ui5-addons-config-management","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-config-management","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-addons-custom-controls-customer","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-custom-controls-customer","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-addons-custom-controls-customer","target":"artifact:abap2ui5-frontend","kind":"requires","requirement":"conditional","role":"frontend","condition":"abap2UI5 runs in BSP or launchpad mode"},{"source":"artifact:abap2ui5-addons-custom-controls","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-custom-controls","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-addons-http-connector","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-http-connector","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-addons-launchpad-kpi","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-launchpad-kpi","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-addons-layout-management","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-layout-management","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-addons-lock-manager","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-lock-manager","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-addons-office-addin","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-office-addin","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-addons-office-addin","target":"external:microsoft-excel","kind":"requires","requirement":"required","role":"host-application"},{"source":"artifact:abap2ui5-addons-office-addin","target":"artifact:sap-approuter","kind":"requires","requirement":"conditional","role":"host-page-server","condition":"The system has no BSP applications (SAP BTP, ABAP environment) and the host page is served in front of the system instead; a reverse proxy does the same job."},{"source":"artifact:abap2ui5-addons-office-addin","target":"artifact:btp-abap-environment","kind":"requires","requirement":"conditional","role":"runtime-target","condition":"ABAP Cloud system with no BSP applications"},{"source":"artifact:abap2ui5-addons-office-addin","target":"external:sap-s4hana-cloud-public-edition","kind":"requires","requirement":"conditional","role":"runtime-target","condition":"ABAP Cloud system with no BSP applications"},{"source":"artifact:abap2ui5-addons-open-source-libs","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-open-source-libs","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-addons-open-source-libs","target":"artifact:abap2xlsx-abap2xlsx","kind":"requires","requirement":"conditional","role":"demonstrated-library","condition":"the `src/02` sample, `z2ui5_cl_osl_abap2xlsx`, is installed and run"},{"source":"artifact:abap2ui5-addons-open-source-libs","target":"artifact:abap-openapi-abap-openapi","kind":"requires","requirement":"conditional","role":"demonstrated-library","condition":"the `src/04` sample, `z2ui5_cl_osl_openapi`, is installed and run"},{"source":"artifact:abap2ui5-addons-open-source-libs","target":"artifact:hhelibeb-abap-data-validator","kind":"requires","requirement":"conditional","role":"demonstrated-library","condition":"the `src/11` sample, `z2ui5_cl_osl_validator`, is installed and run"},{"source":"artifact:abap2ui5-addons-popups","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-popups","target":"artifact:abap2ui5-addons-layout-management","kind":"requires","requirement":"required","role":"layout-renderer"},{"source":"artifact:abap2ui5-addons-popups","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-addons-rap-ext","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-rap-ext","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-addons-rfc-connector","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-rfc-connector","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-addons-sapgui","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-sapgui","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-addons-se16n","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-se16n","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installer"},{"source":"artifact:abap2ui5-addons-selection-screen","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-selection-screen","target":"artifact:abap2ui5-addons-layout-management","kind":"requires","requirement":"required","role":"variant-persistence"},{"source":"artifact:abap2ui5-addons-selection-screen","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-addons-sql-console","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-sql-console","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installer"},{"source":"artifact:abap2ui5-addons-table-content-loader","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-table-content-loader","target":"artifact:abap2xlsx-abap2xlsx","kind":"requires","requirement":"required","role":"xlsx-file-io"},{"source":"artifact:abap2ui5-addons-table-content-loader","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installer"},{"source":"artifact:abap2ui5-addons-table-maintenance","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-addons-table-maintenance","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-app-template","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-app-template","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"deployment"},{"source":"artifact:abap2ui5-embed-control","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-embed-control","target":"artifact:sap-ui5-cli","kind":"requires","requirement":"required","role":"build-tooling"},{"source":"artifact:abap2ui5-frontend-webcomponent","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-frontend-webcomponent","target":"artifact:ui5-webcomponents","kind":"requires","requirement":"required","role":"control-set"},{"source":"artifact:abap2ui5-frontend","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-frontend","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-headless-frontend","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-headless-frontend","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-layout-editor","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-layout-editor","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"conditional","role":"installation","condition":"the exported ZIP is pulled into the system, rather than the `.clas.abap` pasted into a new class in ADT or SE24"},{"source":"artifact:abap2ui5-linter","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-linter","target":"external:playwright","kind":"requires","requirement":"conditional","role":"headless-browser","condition":"the render gate or --screenshot is used"},{"source":"artifact:abap2ui5-mcp-server","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-mcp-server","target":"external:playwright","kind":"requires","requirement":"conditional","role":"headless-browser","condition":"A tool that renders or boots in a browser is used: `screenshot_view`, `run_app` or `interact_app`"},{"source":"artifact:abap2ui5-mobile-shell","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-mobile-shell","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"conditional","role":"installation","condition":"the repository's ABAP sample app is installed in a system"},{"source":"artifact:abap2ui5-mobile-shell","target":"artifact:btp-mobile-services","kind":"requires","requirement":"conditional","role":"push-backend","condition":"push notifications are activated"},{"source":"artifact:abap2ui5-playground","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-playground","target":"artifact:abaplint-transpiler","kind":"requires","requirement":"required","role":"transpiler"},{"source":"artifact:abap2ui5-playground","target":"artifact:abaplint-abaplint","kind":"requires","requirement":"required","role":"syntax-check"},{"source":"artifact:abap2ui5-playground","target":"artifact:open-abap-open-abap-core","kind":"requires","requirement":"required","role":"standard-library"},{"source":"artifact:abap2ui5-playground","target":"artifact:abap2ui5-frontend","kind":"requires","requirement":"required","role":"frontend"},{"source":"artifact:abap2ui5-playground","target":"external:sqlite","kind":"requires","requirement":"required","role":"database"},{"source":"artifact:abap2ui5-protocol","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"conditional","role":"frontend-under-test","condition":"the frontend suite runs with --adapter ui5"},{"source":"artifact:abap2ui5-protocol","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"conditional","role":"app-deployment","condition":"the backend under test serves the ABAP conformance apps from an ABAP system"},{"source":"artifact:abap2ui5-samples-controls","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-samples-controls","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-samples-stack","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-samples-stack","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-samples-stack","target":"artifact:sap-samples-abap-platform-refscen-flight","kind":"requires","requirement":"conditional","role":"odata-service","condition":"the `01` OData sample is run against the service paths it ships with"},{"source":"artifact:abap2ui5-samples-stack","target":"artifact:sap-abap-ai-sdk","kind":"requires","requirement":"conditional","role":"llm-provider","condition":"the `10` samples are configured for the ABAP AI SDK provider"},{"source":"artifact:abap2ui5-samples-stack","target":"artifact:btp-destination","kind":"requires","requirement":"conditional","role":"http-destination","condition":"the `10` AI samples run on an ABAP Cloud system"},{"source":"artifact:abap2ui5-samples","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-samples","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:abap2ui5-vscode-extension","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-vscode-extension","target":"artifact:marcellourbani-vscode-abap-remote-fs","kind":"requires","requirement":"conditional","role":"abap-connection","condition":"the parts that talk to a system are used"},{"source":"artifact:abap2ui5-web-abap2ui5","target":"artifact:abap2ui5-abap2ui5","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:abap2ui5-web-abap2ui5","target":"artifact:abaplint-abaplint","kind":"requires","requirement":"required","role":"downporter"},{"source":"artifact:abap2ui5-web-abap2ui5","target":"artifact:abaplint-transpiler","kind":"requires","requirement":"required","role":"transpiler"},{"source":"artifact:abap2ui5-web-abap2ui5","target":"artifact:open-abap-open-abap-core","kind":"requires","requirement":"required"},{"source":"artifact:abap2ui5-web-abap2ui5","target":"artifact:open-abap-express-icf-shim","kind":"requires","requirement":"required"},{"source":"artifact:abap2ui5-web-abap2ui5","target":"external:sqlite","kind":"requires","requirement":"conditional","role":"database","condition":"the webpack browser build, where there is no server behind the page"},{"source":"artifact:abap2ui5-web-abap2ui5","target":"external:ffmpeg","kind":"requires","requirement":"conditional","role":"video-encoder","condition":"`.mp4` and `.gif` output from `npm run media` is wanted"},{"source":"artifact:abapify-fetch-cloud","target":"artifact:abapify-fetch","kind":"requires"},{"source":"artifact:abapify-fetch-legacy","target":"artifact:abapify-fetch","kind":"requires","requirement":"required"},{"source":"artifact:abapify-fetch","target":"artifact:abapify-throw","kind":"requires"},{"source":"artifact:abapify-json","target":"artifact:abapify-codepage","kind":"requires","requirement":"required"},{"source":"artifact:abapinho-abak","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:abapinho-abaptimemachine","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:abaplint-transpiler","target":"external:nodejs","kind":"requires"},{"source":"artifact:abappm-abap-strust","target":"artifact:sbcgua-ajson","kind":"requires","requirement":"required"},{"source":"artifact:abat-tao-arc-1-bopf-enh","target":"artifact:arc-mcp-arc-1","kind":"requires","requirement":"required"},{"source":"artifact:abat-tao-arc-1-bopf-enh","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:abat-tao-arc-1-bopf-enh","target":"external:docker","kind":"requires","requirement":"conditional","role":"deployment","condition":"ARC-1 and its extension are deployed as a Docker image rather than run locally or on Cloud Foundry"},{"source":"artifact:adam0thman-sap-basis-ops","target":"artifact:sap-hana","kind":"requires","requirement":"conditional","role":"database","condition":"the system's database type (dbms_type) is hdb"},{"source":"artifact:adam0thman-sap-basis-ops","target":"external:sap-s4hana","kind":"requires","requirement":"required","role":"target-system"},{"source":"artifact:aditheos-attachmentcommentodataservice","target":"external:sap-erp","kind":"requires","requirement":"required","role":"platform"},{"source":"artifact:agiguere-scpmspushnotificationrest-api","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:akatuoro-vite-plugin-cds","target":"artifact:sap-cds","kind":"requires","requirement":"required"},{"source":"artifact:akatuoro-vite-plugin-cds","target":"external:vite","kind":"requires","requirement":"required"},{"source":"artifact:akatuoro-vite-plugin-cds","target":"artifact:cap-js-sqlite","kind":"requires","requirement":"conditional","condition":"the cds runtime is run in the browser through the node() and cap() plugins"},{"source":"artifact:akatuoro-vite-plugin-cds","target":"external:sqlite","kind":"requires","requirement":"conditional","condition":"the cds runtime is run in the browser through the node() and cap() plugins"},{"source":"artifact:albertmink-agentic-abap-evals","target":"external:abap-platform","kind":"requires","requirement":"required","role":"evaluation-target"},{"source":"artifact:alokm3hta-star-abap-offstack-testing","target":"external:nodejs","kind":"requires","requirement":"required"},{"source":"artifact:alokm3hta-star-abap-offstack-testing","target":"artifact:abaplint-abaplint","kind":"requires","requirement":"required"},{"source":"artifact:alokm3hta-star-abap-offstack-testing","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:alokm3hta-star-abap-offstack-testing","target":"artifact:abaplint-transpiler","kind":"requires","requirement":"required","role":"transpilation"},{"source":"artifact:alokm3hta-star-abap-offstack-testing","target":"artifact:open-abap-open-abap-core","kind":"requires","requirement":"required","role":"runtime-library"},{"source":"artifact:andre-schaerpf-hammer-core-services","target":"artifact:andre-schaerpf-hammer","kind":"requires","requirement":"required"},{"source":"artifact:andre-schaerpf-hammer-core-services","target":"external:abap-platform","kind":"requires","requirement":"required"},{"source":"artifact:andre-schaerpf-hammer","target":"artifact:andre-schaerpf-hammer-core-services","kind":"requires","requirement":"conditional","condition":"choosing the HCS connection on a supported SAP system"},{"source":"artifact:arc-mcp-adt-ls","target":"artifact:sap-adt-vscode","kind":"requires","requirement":"required"},{"source":"artifact:arc-mcp-arc-1-extension-sample","target":"artifact:arc-mcp-arc-1","kind":"requires","requirement":"required"},{"source":"artifact:arc-mcp-arc-1-extension-sample","target":"artifact:marianfoo-open-rfc","kind":"requires","requirement":"conditional","condition":"`Custom_RfcSystemInfo` is used"},{"source":"artifact:arc-mcp-arc-1-extension-sample","target":"artifact:clementringot-lisa","kind":"requires","requirement":"conditional","condition":"the three translation tools are used"},{"source":"artifact:arc-mcp-arc-1-extension-sample","target":"artifact:btp-connectivity","kind":"requires","requirement":"conditional","condition":"the RFC tool runs on Cloud Foundry"},{"source":"artifact:arc-mcp-arc-1-lsp","target":"artifact:arc-mcp-arc-1","kind":"alternative_to"},{"source":"artifact:arc-mcp-arc-1-skills","target":"artifact:arc-mcp-arc-1","kind":"requires"},{"source":"artifact:arc-mcp-arc-1-skills","target":"artifact:ui5-mcp-server","kind":"requires"},{"source":"artifact:arc-mcp-arc-1-skills","target":"artifact:sap-ux-fiori-mcp-server","kind":"requires"},{"source":"artifact:arc-mcp-arc-1-skills","target":"artifact:marianfoo-mcp-sap-docs","kind":"requires"},{"source":"artifact:arc-mcp-arc-1","target":"artifact:abaplint-abaplint","kind":"requires"},{"source":"artifact:arc-mcp-arc-1","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"conditional","role":"version-control-backend","condition":"the SAPGit tool's backend auto-selects abapGit"},{"source":"artifact:arc-mcp-arc-1","target":"external:docker","kind":"requires","requirement":"conditional","role":"deployment","condition":"ARC-1 is run via the Docker image or local Docker-based development"},{"source":"artifact:arc-mcp-arc-1","target":"artifact:btp-authorization-and-trust-management","kind":"requires","requirement":"conditional","role":"authentication","condition":"XSUAA is selected as the authentication method"},{"source":"artifact:arc-mcp-arc-1","target":"artifact:btp-oauth","kind":"requires","requirement":"conditional","role":"authentication","condition":"OAuth 2.0 browser-based login is used for BTP ABAP Environment service-key development"},{"source":"artifact:arc-mcp-arc-1","target":"artifact:btp-connectivity","kind":"requires","requirement":"conditional","role":"connectivity-proxy","condition":"ARC-1 is deployed on BTP Cloud Foundry to reach on-premise SAP systems"},{"source":"artifact:arc-mcp-arc-1","target":"artifact:btp-audit-log","kind":"requires","requirement":"conditional","role":"audit-logging","condition":"audit logging is configured to use the BTP Audit Log Service"},{"source":"artifact:arc-mcp-arc-1","target":"external:sqlite","kind":"requires","requirement":"conditional","role":"cache-store","condition":"ARC-1 runs in http-streamable mode"},{"source":"artifact:arc-mcp-arc-1","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"conditional","role":"runtime-platform","condition":"ARC-1 is deployed as a Cloud Foundry app on SAP BTP"},{"source":"artifact:arc-mcp-arc-1","target":"artifact:abap-adt-api","kind":"lineage"},{"source":"artifact:arc-mcp-arc-1","target":"artifact:mario-andreschak-mcp-abap-adt","kind":"lineage"},{"source":"artifact:arc-mcp-arc-1","target":"artifact:oisee-vibing-steampunk","kind":"lineage"},{"source":"artifact:arc-mcp-arc1-abap-bridge","target":"artifact:sap-adt-vscode","kind":"requires","requirement":"required"},{"source":"artifact:arc-mcp-arc1-abap-bridge","target":"artifact:arc-mcp-arc-1","kind":"requires","requirement":"conditional","condition":"`abapValidate` is used, or the package is looked up through ARC-1 rather than supplied by the caller"},{"source":"artifact:arc-mcp-arc1-adt-ext","target":"artifact:sap-adt-mcp-server","kind":"requires"},{"source":"artifact:arc-mcp-hub","target":"artifact:btp-destination","kind":"requires","requirement":"required"},{"source":"artifact:arc-mcp-hub","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"required"},{"source":"artifact:arc-mcp-hub","target":"artifact:arc-mcp-arc-1","kind":"requires","requirement":"conditional","condition":"the backends are ARC-1 instances, which is the documented setup; the requirement the README states of a backend is XSUAA protection and Streamable HTTP, which another MCP server can meet"},{"source":"artifact:arc-mcp-xsuaa-auth","target":"artifact:btp-authorization-and-trust-management","kind":"requires","requirement":"required"},{"source":"artifact:arc-mcp-xsuaa-auth","target":"artifact:btp-destination","kind":"requires","requirement":"conditional","condition":"the `./btp` entrypoint is used, which is the per-user principal propagation path; a server that only verifies bearer tokens never reaches it"},{"source":"artifact:arc-mcp-xsuaa-auth","target":"artifact:sap-cloud-connector","kind":"requires","requirement":"conditional","condition":"the propagated user reaches an on-premise system, for which the `./btp` entrypoint returns a connectivity proxy descriptor the caller applies"},{"source":"artifact:arc-mcp-xsuaa-auth","target":"artifact:sap-xssec","kind":"requires","requirement":"required","role":"dependency"},{"source":"artifact:arc-mcp-xsuaa-auth","target":"artifact:btp-connectivity","kind":"requires","requirement":"conditional","role":"principal-propagation","condition":"the ./btp entrypoint is used for per-user principal propagation via Cloud Connector"},{"source":"artifact:arc-mcp-xsuaa-auth","target":"artifact:sap-cloud-sdk-connectivity","kind":"requires","requirement":"required","role":"dependency"},{"source":"artifact:arnaudbuchholz-ui5-test-runner","target":"external:nodejs","kind":"requires"},{"source":"artifact:attilaberencsi-abapthemes","target":"external:eclipse","kind":"requires","requirement":"required"},{"source":"artifact:aws-modernization-agents-for-sap","target":"external:aws","kind":"requires","requirement":"required","role":"deployment-platform"},{"source":"artifact:aws-modernization-agents-for-sap","target":"external:docker","kind":"requires","requirement":"conditional","role":"container-engine","condition":"A container image is built for deployment in AWS Cloud, and Docker rather than finch or podman is the engine used"},{"source":"artifact:aws-modernization-agents-for-sap","target":"external:sap-erp","kind":"requires","requirement":"conditional","role":"source-system","condition":"The ABAP modernization use case runs against an SAP ECC system"},{"source":"artifact:aws-modernization-agents-for-sap","target":"external:sap-s4hana","kind":"requires","requirement":"conditional","role":"target-system","condition":"The ABAP modernization use case targets SAP S/4HANA"},{"source":"artifact:aws-modernization-agents-for-sap","target":"external:sap-bw4hana","kind":"requires","requirement":"conditional","role":"source-system","condition":"The BW modernization use case runs against an SAP BW/4HANA system"},{"source":"artifact:aws-modernization-agents-for-sap","target":"artifact:btp-integration-suite","kind":"requires","requirement":"conditional","role":"target-platform","condition":"The PI/PO modernization use case is run"},{"source":"artifact:aws-modernization-agents-for-sap","target":"artifact:btp-datasphere","kind":"requires","requirement":"conditional","role":"target-platform","condition":"The BW modernization use case is run"},{"source":"artifact:b-tocs-abap-btocs-core","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"conditional","role":"installation","condition":"the package is installed from this repository into an ABAP system"},{"source":"artifact:b-tocs-pyapi4abap","target":"artifact:b-tocs-abap-btocs-core","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:b-tocs-pyapi4abap","target":"external:docker","kind":"requires","requirement":"conditional","role":"container-engine","condition":"the API is run or deployed as a container"},{"source":"artifact:b-tocs-scec","target":"external:docker","kind":"requires","requirement":"required","role":"container-engine"},{"source":"artifact:b-tocs-scec","target":"artifact:sap-cloud-connector","kind":"requires","requirement":"conditional","role":"image-contents","condition":"the Cloud Connector template is built"},{"source":"artifact:b-tocs-scec","target":"external:thingsboard","kind":"requires","requirement":"conditional","role":"iot-platform","condition":"the ThingsBoard stack is started"},{"source":"artifact:babamba2-abap-mcp-adt-powerup","target":"artifact:mario-andreschak-mcp-abap-adt","kind":"lineage"},{"source":"artifact:babamba2-abap-mcp-adt-powerup","target":"artifact:fr0ster-mcp-abap-adt","kind":"lineage"},{"source":"artifact:babamba2-superclaude-for-sap","target":"artifact:babamba2-abap-mcp-adt-powerup","kind":"requires"},{"source":"artifact:babamba2-superclaude-for-sap","target":"external:sap-s4hana","kind":"requires","requirement":"required","role":"target-system"},{"source":"artifact:babamba2-superclaude-for-sap","target":"external:sap-erp","kind":"requires","requirement":"required","role":"target-system"},{"source":"artifact:blumenkuebel-sap-dm-pod2-mcp-server","target":"external:sap-digital-manufacturing","kind":"requires","requirement":"conditional","role":"target-product","condition":"the REST API specification and MDO entity tools are used; the server starts without the specifications and the tools that need them say which step is missing"},{"source":"artifact:boy0korea-abap2xlsx-helper","target":"artifact:abap2xlsx-abap2xlsx","kind":"requires","requirement":"required","role":"library"},{"source":"artifact:brandeis-consulting-abap-prc","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:brandeis-consulting-abap-prc","target":"external:sap-s4hana","kind":"requires","requirement":"required","role":"platform"},{"source":"artifact:btc-ag-featuretoggle","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:btp-agentry","target":"artifact:btp-mobile-services","kind":"requires"},{"source":"artifact:btp-ai-launchpad","target":"artifact:btp-ai-core","kind":"requires"},{"source":"artifact:btp-application-frontend","target":"artifact:btp-html5-application-repository","kind":"alternative_to"},{"source":"artifact:btp-connectivity","target":"artifact:sap-cloud-connector","kind":"requires"},{"source":"artifact:btp-data-retention-manager","target":"artifact:btp-data-privacy-integration","kind":"alternative_to"},{"source":"artifact:btp-personal-data-manager","target":"artifact:btp-data-privacy-integration","kind":"alternative_to"},{"source":"artifact:btp-postgresql-hyperscaler","target":"external:postgresql","kind":"delivers"},{"source":"artifact:btp-private-link-service","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"required"},{"source":"artifact:btp-redis","target":"external:redis","kind":"delivers"},{"source":"artifact:btp-task-center","target":"artifact:btp-build-work-zone-standard","kind":"requires","requirement":"conditional","condition":"The all-tasks plan lists both editions of SAP Build Work Zone as required services, and its description says it can be used with either, or with SAP SuccessFactors Work Zone, which the atlas does not hold."},{"source":"artifact:btp-task-center","target":"artifact:btp-build-work-zone-advanced","kind":"requires","requirement":"conditional","condition":"The all-tasks plan lists both editions of SAP Build Work Zone as required services, and its description says it can be used with either, or with SAP SuccessFactors Work Zone, which the atlas does not hold."},{"source":"artifact:btp-trading-partner-management","target":"artifact:btp-cloud-integration","kind":"requires"},{"source":"artifact:btp-trading-partner-management","target":"artifact:btp-integration-advisor","kind":"requires"},{"source":"artifact:cap-attachments-plus","target":"artifact:btp-destination","kind":"requires","requirement":"conditional","role":"attachment-storage","condition":"A cloud storage backend is selected."},{"source":"artifact:cap-attachments-plus","target":"artifact:btp-malware-scanning","kind":"requires","requirement":"conditional","role":"attachment-scanning","condition":"Real malware scanning is enabled rather than the development mock."},{"source":"artifact:cap-attachments-plus","target":"artifact:btp-object-store","kind":"requires","requirement":"conditional","role":"tenant-store-provisioning","condition":"Automatic per-tenant Object Store provisioning is used."},{"source":"artifact:cap-java-cds-adapter-agent","target":"artifact:btp-ai-core","kind":"requires","requirement":"conditional","role":"llm-provider","condition":"The aicore chat model kind is used, which is CAP Java's default LLM configuration for the production and hybrid profiles."},{"source":"artifact:cap-java-cds-ai","target":"artifact:btp-ai-core","kind":"requires","requirement":"conditional","role":"model-provider","condition":"Production use; without a binding the plugins fall back to mock implementations for local development."},{"source":"artifact:cap-java-cds-feature-advanced-event-mesh","target":"artifact:btp-advanced-event-mesh","kind":"requires","requirement":"conditional","role":"broker-validation","condition":"Broker validation is configured with a subaccount ID, so the plugin can call the validation service."},{"source":"artifact:cap-java-cds-feature-attachments","target":"artifact:btp-object-store","kind":"requires","requirement":"conditional","role":"attachment-storage","condition":"The cds-feature-attachments-oss module is selected."},{"source":"artifact:cap-java-cds-feature-attachments","target":"artifact:btp-malware-scanning","kind":"requires","requirement":"conditional","role":"attachment-scanning","condition":"Actual malware scanning is needed."},{"source":"artifact:cap-java-cds-feature-auditlog-ng","target":"artifact:btp-audit-log","kind":"requires","requirement":"required","role":"audit-log-service"},{"source":"artifact:cap-java-cds-feature-auditlog-v2","target":"artifact:btp-audit-log","kind":"requires","requirement":"conditional","role":"audit-log-sink","condition":"The cds-feature-auditlog-v2 dependency is on the classpath and a binding to the SAP Audit Log service (API version 2) is provided."},{"source":"artifact:cap-java-cds-feature-enterprise-messaging","target":"artifact:btp-event-mesh","kind":"requires","requirement":"conditional","role":"message-broker","condition":"A messaging service is configured with kind enterprise-messaging."},{"source":"artifact:cap-java-cds-feature-event-hub","target":"artifact:btp-cloud-application-event-hub","kind":"requires","requirement":"required","role":"event-broker"},{"source":"artifact:cap-java-cds-feature-hana","target":"artifact:btp-hana-cloud","kind":"requires","requirement":"conditional","role":"database","condition":"A hana service binding is present in the runtime environment."},{"source":"artifact:cap-java-cds-feature-identity","target":"artifact:btp-authorization-and-trust-management","kind":"requires"},{"source":"artifact:cap-java-cds-feature-identity","target":"artifact:btp-cloud-identity-services","kind":"requires"},{"source":"artifact:cap-java-cds-feature-jdbc","target":"external:sqlite","kind":"requires","requirement":"conditional","role":"local-database","condition":"The sqlite profile is used for local development or testing."},{"source":"artifact:cap-java-cds-feature-kafka","target":"external:kafka","kind":"requires","requirement":"conditional","role":"message-broker","condition":"A messaging service is configured to use Apache Kafka for intra-application messaging."},{"source":"artifact:cap-java-cds-feature-mt","target":"artifact:sap-cds-mtxs","kind":"requires","requirement":"conditional","role":"tenant-model-sidecar","condition":"Tenant CDS model extensions are used."},{"source":"artifact:cap-java-cds-feature-n8n","target":"artifact:btp-destination","kind":"requires","requirement":"conditional","role":"webhook-endpoint-resolution","condition":"n8n.destination is configured, for production deployments behind a proxy instead of a plain base URL."},{"source":"artifact:cap-java-cds-feature-notifications","target":"artifact:btp-alert-notification","kind":"requires","requirement":"conditional","role":"notification-delivery","condition":"Production mode with a standalone ANS instance; local mode needs no binding."},{"source":"artifact:cap-java-cds-feature-notifications","target":"artifact:btp-build-work-zone-standard","kind":"requires","requirement":"conditional","role":"notification-credentials","condition":"Work Zone's built-in notification credentials are used instead of a standalone ANS instance."},{"source":"artifact:cap-java-cds-feature-notifications","target":"artifact:btp-cloud-identity-services","kind":"requires","requirement":"conditional","role":"language-resolution","condition":"Language-based email template selection is enabled."},{"source":"artifact:cap-java-cds-feature-postgresql","target":"external:postgresql","kind":"requires"},{"source":"artifact:cap-java-cds-feature-postgresql","target":"artifact:btp-postgresql-hyperscaler","kind":"available_via"},{"source":"artifact:cap-java-cds-feature-redis","target":"external:redis","kind":"requires","requirement":"conditional","role":"message-broker","condition":"A messaging service is configured with kind redis-pubsub."},{"source":"artifact:cap-java-cds-feature-redis","target":"artifact:btp-redis","kind":"available_via"},{"source":"artifact:cap-java-cds-feature-remote-odata","target":"artifact:cap-java-cds-integration-cloud-sdk","kind":"requires","requirement":"required","role":"cloud-sdk-integration"},{"source":"artifact:cap-java-cds-feature-remote-odata","target":"artifact:btp-destination","kind":"requires","requirement":"conditional","role":"destination-source","condition":"The remote service is configured with a destination rather than a service binding."},{"source":"artifact:cap-java-cds-maven-plugin","target":"artifact:sap-cds-dk","kind":"requires","requirement":"required","role":"cds-model-compiler"},{"source":"artifact:cap-java-sdm","target":"artifact:btp-document-management-integration","kind":"requires","requirement":"required","role":"attachment-storage"},{"source":"artifact:cap-js-advanced-event-mesh","target":"artifact:btp-advanced-event-mesh","kind":"requires","requirement":"required"},{"source":"artifact:cap-js-agents","target":"artifact:btp-ai-core","kind":"requires","requirement":"conditional","role":"llm-provider","condition":"The aicore kind is configured under cds.requires.llm, which capire states is the default for the production and hybrid profiles; development defaults to auto, which reads credentials from a local Claude Code or OpenCode installation, and mock returns dummy responses."},{"source":"artifact:cap-js-ai","target":"artifact:sap-cds","kind":"requires","requirement":"required"},{"source":"artifact:cap-js-ai","target":"artifact:cap-js-sqlite","kind":"requires","requirement":"conditional","role":"local-embedding-database","condition":"The local vector embeddings are used: capire states the plugin requires @sap/cds ^10.1 and @cap-js/sqlite ^3.1 for them. The recommendations and the AICore service do not involve SQLite."},{"source":"artifact:cap-js-ai","target":"artifact:btp-ai-core","kind":"requires","requirement":"conditional","condition":"The recommendations run in a production deployment; without the binding, local development uses a mock implementation for UI smoke tests."},{"source":"artifact:cap-js-attachments","target":"artifact:btp-object-store","kind":"requires","requirement":"conditional","role":"attachment-storage","condition":"Productive use of an Object Store storage target."},{"source":"artifact:cap-js-attachments","target":"artifact:btp-malware-scanning","kind":"requires","requirement":"conditional","role":"attachment-scanning","condition":"Malware scanning is enabled."},{"source":"artifact:cap-js-audit-logging","target":"artifact:btp-audit-log","kind":"requires","requirement":"conditional","condition":"The plugin's own integration is used; an own implementation may write the audit logs to a custom store instead."},{"source":"artifact:cap-js-cds-federation-synonyms","target":"artifact:btp-hana-cloud","kind":"requires","requirement":"required"},{"source":"artifact:cap-js-cds-federation-synonyms","target":"artifact:sap-xssec","kind":"requires","requirement":"required"},{"source":"artifact:cap-js-community-business-metrics","target":"artifact:cap-js-telemetry","kind":"requires","requirement":"required","role":"metrics-pipeline"},{"source":"artifact:cap-js-community-common","target":"artifact:cap-js-sqlite","kind":"requires"},{"source":"artifact:cap-js-community-event-queue","target":"external:redis","kind":"requires"},{"source":"artifact:cap-js-community-event-queue","target":"artifact:btp-redis","kind":"available_via"},{"source":"artifact:cap-js-community-event-queue","target":"artifact:cds-kafka","kind":"alternative_to"},{"source":"artifact:cap-js-community-feature-toggle-library","target":"external:redis","kind":"requires"},{"source":"artifact:cap-js-community-feature-toggle-library","target":"artifact:btp-redis","kind":"available_via"},{"source":"artifact:cap-js-community-odata-v2-adapter","target":"artifact:sap-cds","kind":"requires","requirement":"required"},{"source":"artifact:cap-js-hana","target":"artifact:sap-cds","kind":"requires","requirement":"required"},{"source":"artifact:cap-js-hana","target":"artifact:btp-hana-cloud","kind":"requires","requirement":"conditional","condition":"A HANA binding is available to the profile the server runs with, which `cds add hana --for hybrid` configures; in development SQLite is the default."},{"source":"artifact:cap-js-hana","target":"artifact:hdb","kind":"requires","requirement":"conditional","condition":"@sap/hana-client is not added to the project's dependencies; added, it takes precedence over this default."},{"source":"artifact:cap-js-hana","target":"artifact:sap-hana-client","kind":"requires","requirement":"conditional","condition":"@sap/hana-client is added to the project's dependencies, which then takes precedence over the default driver."},{"source":"artifact:cap-js-mcp-server","target":"artifact:sap-cds","kind":"requires","requirement":"required","role":"cds-runtime"},{"source":"artifact:cap-js-mcp-server","target":"artifact:sap-cds-dk","kind":"requires","requirement":"conditional","role":"cds-runtime-fallback","condition":"the project provides no local CDS"},{"source":"artifact:cap-js-n8n","target":"artifact:sap-cloud-sdk-connectivity","kind":"requires"},{"source":"artifact:cap-js-n8n","target":"artifact:btp-destination","kind":"requires"},{"source":"artifact:cap-js-n8n","target":"artifact:sleibach-cap-n8n","kind":"alternative_to"},{"source":"artifact:cap-js-postgres","target":"external:postgresql","kind":"requires"},{"source":"artifact:cap-js-postgres","target":"artifact:btp-postgresql-hyperscaler","kind":"available_via"},{"source":"artifact:cap-js-postgres","target":"artifact:sapmentors-cds-pg","kind":"alternative_to"},{"source":"artifact:cap-js-print","target":"artifact:btp-print","kind":"requires","requirement":"required","role":"print-queues"},{"source":"artifact:cap-js-process","target":"artifact:btp-build-process-automation","kind":"requires","requirement":"conditional","role":"process-engine","condition":"Working against a real SAP Build Process Automation instance — hybrid mode, production, or a remote process import."},{"source":"artifact:cap-js-sdm","target":"artifact:btp-document-management-integration","kind":"requires","requirement":"required","role":"attachment-storage"},{"source":"artifact:cap-js-telemetry","target":"artifact:sap-cds","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:cap-llm-plugin","target":"artifact:btp-hana-cloud","kind":"requires","requirement":"conditional","role":"vector-store","condition":"The similarity search, the single retrieval method or the anonymisation are used; all three are written against SAP HANA Cloud."},{"source":"artifact:cap-llm-plugin","target":"artifact:btp-ai-core","kind":"requires","requirement":"conditional","role":"model-provider","condition":"An embedding, a chat completion or the single retrieval method is called; each of them goes through SAP AI Core."},{"source":"artifact:cap-postgres-btp-connectivity","target":"external:postgresql","kind":"requires"},{"source":"artifact:cap-postgres-btp-connectivity","target":"artifact:btp-connectivity","kind":"requires"},{"source":"artifact:cap-postgres-btp-connectivity","target":"artifact:sap-cloud-connector","kind":"requires"},{"source":"artifact:cap-postgres-btp-connectivity","target":"artifact:btp-postgresql-hyperscaler","kind":"available_via"},{"source":"artifact:capire-bookshop","target":"artifact:gregorwolf-bookshop-demo","kind":"alternative_to"},{"source":"artifact:catafeidi-abap-transport-review","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:catafeidi-abap-transport-review","target":"external:github","kind":"requires","requirement":"required"},{"source":"artifact:catafeidi-abap-transport-review","target":"artifact:abaplint-abaplint","kind":"requires","requirement":"conditional","role":"quality-check","condition":"the abaplint GitHub Actions check is turned on for the repository"},{"source":"artifact:cds-caching","target":"artifact:sap-cds","kind":"requires","requirement":"required","role":"runtime"},{"source":"artifact:cds-caching","target":"external:redis","kind":"requires","requirement":"conditional","role":"cache-store","condition":"When store: \"redis\" is selected."},{"source":"artifact:cds-caching","target":"external:sqlite","kind":"requires","requirement":"conditional","role":"cache-store","condition":"When store: \"sqlite\" is selected."},{"source":"artifact:cds-caching","target":"external:postgresql","kind":"requires","requirement":"conditional","role":"cache-store","condition":"When store: \"postgres\" is selected."},{"source":"artifact:cds-caching","target":"artifact:sap-hana","kind":"requires","requirement":"conditional","role":"cache-store","condition":"When store: \"hana\" is selected."},{"source":"artifact:cds-caching","target":"artifact:cap-js-sqlite","kind":"requires","requirement":"conditional","role":"cache-adapter","condition":"When the SQLite store is selected."},{"source":"artifact:cds-caching","target":"artifact:btp-postgresql-hyperscaler","kind":"available_via"},{"source":"artifact:cds-caching","target":"artifact:btp-redis","kind":"available_via"},{"source":"artifact:cds-kafka","target":"external:kafka","kind":"requires","requirement":"required","role":"message-broker"},{"source":"artifact:cds-mongodb","target":"external:mongodb","kind":"requires"},{"source":"artifact:cds-pgroll-postgres","target":"external:postgresql","kind":"requires"},{"source":"artifact:cds-pgroll-postgres","target":"artifact:btp-postgresql-hyperscaler","kind":"available_via"},{"source":"artifact:cdse","target":"artifact:sap-cds","kind":"requires","requirement":"required","role":"runtime"},{"source":"artifact:cdse","target":"external:axios","kind":"requires","requirement":"required","role":"http-client"},{"source":"artifact:cesar-sap-abap-fm-json","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"conditional","role":"installation","condition":"installing the adapter from this repository; the README also offers SAPLink with its plugins, and a transport request under transport/ for direct import"},{"source":"artifact:clementringot-lisa","target":"artifact:arc-mcp-xsuaa-auth","kind":"requires","requirement":"required"},{"source":"artifact:clementringot-lisa","target":"artifact:arc-mcp-arc-1","kind":"requires","requirement":"conditional","condition":"LISA is loaded as the ARC-1 extension rather than run as its own server"},{"source":"artifact:clementringot-lisa","target":"artifact:btp-authorization-and-trust-management","kind":"requires","requirement":"conditional","condition":"deployed to SAP BTP Cloud Foundry, the production path"},{"source":"artifact:clementringot-lisa","target":"artifact:btp-destination","kind":"requires","requirement":"conditional","condition":"deployed to SAP BTP Cloud Foundry, the production path"},{"source":"artifact:clementringot-lisa","target":"artifact:btp-connectivity","kind":"requires","requirement":"conditional","condition":"deployed to SAP BTP Cloud Foundry, the production path"},{"source":"artifact:clementringot-lisa","target":"artifact:btp-abap-environment","kind":"requires","requirement":"conditional","role":"target-system","condition":"the CLOUD platform variant of the ABAP handler is deployed to the SAP BTP ABAP environment"},{"source":"artifact:clementringot-lisa","target":"external:abap-platform","kind":"requires","requirement":"conditional","role":"target-system","condition":"the on-premise/private-cloud ABAP Platform variant of the handler is installed"},{"source":"artifact:clementringot-lisa","target":"external:docker","kind":"requires","requirement":"conditional","role":"deployment","condition":"running the self-hosted Docker path instead of BTP or the ARC-1 extension"},{"source":"artifact:clementringot-lisa","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"conditional","role":"installation","condition":"installing the ABAP handler via abapGit rather than pasting it manually in ADT/SE24"},{"source":"artifact:clementringot-lisa","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"conditional","role":"runtime","condition":"deploying the standalone MCP server to SAP BTP"},{"source":"artifact:clementringot-lisa","target":"artifact:btp-application-logging","kind":"requires","requirement":"conditional","role":"logging","condition":"the lisa-logs resource is reactivated in an mtaext override; it is inactive by default"},{"source":"artifact:clementringot-lisa","target":"external:sap-s4hana-cloud-public-edition","kind":"requires","requirement":"conditional","role":"target-system","condition":"the destination's backend is S/4HANA Cloud public"},{"source":"artifact:clementringot-lisa","target":"external:sap-s4hana","kind":"requires","requirement":"conditional","role":"target-system","condition":"the SAP system is S/4HANA on-premise or private cloud, 2022 or later"},{"source":"artifact:clementringot-rosa","target":"artifact:sap-abap-atc-cr-cv-s4hc","kind":"requires","requirement":"required","role":"data-source"},{"source":"artifact:clementringot-rosa","target":"external:docker","kind":"requires","requirement":"conditional","role":"installation","condition":"deployed via the pre-built Docker image"},{"source":"artifact:clementringot-rosa","target":"artifact:btp-authorization-and-trust-management","kind":"requires","requirement":"conditional","role":"authentication","condition":"HTTP transport running on SAP BTP Cloud Foundry with an xsuaa service binding (XSUAA auth mode)"},{"source":"artifact:clementringot-rosa","target":"artifact:arc-mcp-xsuaa-auth","kind":"requires","requirement":"conditional","role":"authentication","condition":"XSUAA auth mode is active"},{"source":"artifact:clementringot-rosa","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"conditional","role":"hosting","condition":"deployed via the MTA or npm wrapper path on SAP BTP Cloud Foundry"},{"source":"artifact:cogniac-sap-pod-extension","target":"external:sap-digital-manufacturing","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:cogniac-sap-pod-extension","target":"external:cogniac-edgeflow-proxy","kind":"requires","requirement":"required","role":"capture-endpoint"},{"source":"artifact:cogniac-sap-pod-extension","target":"external:cogniac-edgeflow","kind":"requires","requirement":"required","role":"inference-hardware"},{"source":"artifact:consetto-calmcp","target":"artifact:btp-destination","kind":"requires","requirement":"conditional","condition":"run in BTP mode, which the MTA descriptor and `cf push` both set up"},{"source":"artifact:consetto-calmcp","target":"artifact:btp-authorization-and-trust-management","kind":"requires","requirement":"conditional","condition":"the HTTP transport, which refuses to start unless XSUAA or a static API key is configured"},{"source":"artifact:consetto-calmcp","target":"artifact:btp-application-logging","kind":"requires","requirement":"conditional","condition":"deployed with the MTA descriptor or `cf push`, which create and bind `calmcp-logs`"},{"source":"artifact:consetto-calmcp","target":"artifact:arc-mcp-arc-1","kind":"lineage"},{"source":"artifact:consetto-cloudalmlink","target":"artifact:sap-adt-eclipse","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:consetto-cloudalmlink","target":"external:eclipse","kind":"requires","requirement":"required","role":"host-ide"},{"source":"artifact:consetto-cloudalmlink","target":"external:sap-cloud-alm","kind":"requires","requirement":"conditional","role":"data-source","condition":"the plugin is pointed at a tenant; demo mode shows sample data with no Cloud ALM connection"},{"source":"artifact:coreline-zuml-diagram","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"conditional","role":"installation","condition":"installing the program with abapGit rather than creating ZUML_CLASS_DIAGRAM by hand and pasting the source into it"},{"source":"artifact:coveles-claude-abap-dev","target":"artifact:fr0ster-mcp-abap-adt","kind":"requires","requirement":"conditional","role":"system-access","condition":"at least one of mcp-abap-adt or vibing-steampunk is connected"},{"source":"artifact:coveles-claude-abap-dev","target":"artifact:oisee-vibing-steampunk","kind":"requires","requirement":"conditional","role":"system-access","condition":"at least one of mcp-abap-adt or vibing-steampunk is connected"},{"source":"artifact:coveles-claude-abap-dev","target":"artifact:abaplint-abaplint","kind":"requires","requirement":"conditional","role":"lint","condition":"the abap-review skill's lint step, as an abaplint MCP server exposing LintAbap and FixAbap or as the public CLI through npx @abaplint/cli"},{"source":"artifact:coveles-claude-abap-dev","target":"artifact:marianfoo-mcp-sap-docs","kind":"requires","requirement":"conditional","role":"documentation","condition":"the clean-core-check skill is used"},{"source":"artifact:coveles-claude-abap-dev","target":"artifact:matt1as-claude-abap-skills","kind":"lineage"},{"source":"artifact:dassianinc-dassian-adt","target":"artifact:mario-andreschak-mcp-abap-adt-api","kind":"alternative_to"},{"source":"artifact:dassianinc-dassian-adt","target":"artifact:mario-andreschak-mcp-abap-adt-api","kind":"lineage"},{"source":"artifact:datazoode-erpl","target":"external:duckdb","kind":"requires","requirement":"required"},{"source":"artifact:datazoode-erpl","target":"external:abap-platform","kind":"requires","requirement":"required"},{"source":"artifact:derekvincent-mcp-sap-focusedrun","target":"external:docker","kind":"requires","requirement":"conditional","role":"installation","condition":"deploying the server as a container instead of running it directly with uv"},{"source":"artifact:derekvincent-mcp-sap-focusedrun","target":"external:sap-focused-run","kind":"requires","requirement":"required","role":"data-source"},{"source":"artifact:dergutewolf-abap-translation-hub","target":"artifact:btp-translation-hub","kind":"requires","requirement":"required","role":"translation-service"},{"source":"artifact:devepos-abap-call-hierarchy-ui","target":"artifact:sap-adt-eclipse","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:devepos-abap-call-hierarchy-ui","target":"artifact:devepos-abap-call-hierarchy","kind":"requires","requirement":"required","role":"backend"},{"source":"artifact:devepos-abap-call-hierarchy","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:devepos-abap-code-search-tools","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:devepos-abap-code-search-ui","target":"artifact:sap-adt-eclipse","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:devepos-abap-code-search-ui","target":"artifact:devepos-abap-code-search-tools","kind":"requires","requirement":"conditional","role":"backend","condition":"the server-based search mode is used"},{"source":"artifact:devepos-abap-db-browser","target":"artifact:devepos-abap-search-tools","kind":"requires"},{"source":"artifact:devepos-abap-db-browser","target":"artifact:devepos-abap-ui-toolbox","kind":"requires"},{"source":"artifact:devepos-abap-db-browser","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:devepos-abap-search-tools-ui","target":"artifact:sap-adt-eclipse","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:devepos-abap-search-tools-ui","target":"artifact:devepos-abap-search-tools","kind":"requires","requirement":"required","role":"backend"},{"source":"artifact:devepos-abap-search-tools","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:devepos-abap-tags-backend","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:devepos-abap-tags-ui","target":"artifact:sap-adt-eclipse","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:devepos-abap-tags-ui","target":"artifact:devepos-abap-tags-backend","kind":"requires","requirement":"required","role":"backend"},{"source":"artifact:devepos-abap-ui-toolbox","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:devepos-eclipsadt-o-mat","target":"artifact:sap-adt-eclipse","kind":"requires","requirement":"required"},{"source":"artifact:devepos-eclipsadt-o-mat","target":"external:eclipse","kind":"requires","requirement":"required"},{"source":"artifact:dnic-dev-bw-modeling-mcp","target":"external:sap-bw4hana","kind":"requires"},{"source":"artifact:dongitran-sapbruno","target":"artifact:btp-authorization-and-trust-management","kind":"requires","requirement":"conditional","role":"authentication","condition":"the SAP BTP / xsuaa credential provider is configured"},{"source":"artifact:endresshauser-infoserve-abap-utesthelp","target":"artifact:sap-styleguides-clean-abap","kind":"lineage"},{"source":"artifact:erhan-epod-adt-mcp-server","target":"artifact:sap-adt-eclipse","kind":"requires","requirement":"conditional","role":"framework","condition":"the Eclipse mode, which this update site carries"},{"source":"artifact:erhan-epod-adt-mcp-server","target":"external:eclipse","kind":"requires","requirement":"conditional","role":"host IDE","condition":"the Eclipse mode, which this update site carries"},{"source":"artifact:erhan-epod-adt-mcp-server","target":"artifact:sap-adt-vscode","kind":"requires","requirement":"conditional","role":"runtime host","condition":"the standalone mode"},{"source":"artifact:erhan-epod-adt-mcp-server","target":"artifact:sap-adt","kind":"requires","requirement":"required","role":"backend"},{"source":"artifact:etosin-arc-draw","target":"external:drawio","kind":"requires"},{"source":"artifact:etosin-arc-draw","target":"external:nodejs","kind":"requires"},{"source":"artifact:expertum-cap-email-plugin","target":"artifact:sap-cloud-sdk-http-client","kind":"requires","requirement":"conditional","condition":"The project installs it; peerDependenciesMeta marks it optional."},{"source":"artifact:expertum-cap-email-plugin","target":"artifact:btp-destination","kind":"requires","requirement":"conditional","condition":"The graph kind is configured for Microsoft Graph."},{"source":"artifact:f-wer-zarc1-extension-forms","target":"artifact:arc-mcp-arc-1","kind":"requires","requirement":"required"},{"source":"artifact:f-wer-zarc1-extension-forms","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"conditional","condition":"the ABAP backend is pulled from the repository rather than created by hand"},{"source":"artifact:fabianlupa-abap-log","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:fermeregali-cap-mtx-scaffold","target":"artifact:sap-cds-dk","kind":"requires","requirement":"required"},{"source":"artifact:fermeregali-cap-mtx-scaffold","target":"external:nodejs","kind":"requires","requirement":"required"},{"source":"artifact:fgalastri-mcp-abap","target":"external:sap-s4hana","kind":"requires","requirement":"required","role":"target-system"},{"source":"artifact:fr0ster-mcp-abap-adt","target":"artifact:btp-authorization-and-trust-management","kind":"requires","requirement":"conditional","role":"authentication","condition":"JWT authentication selected with a service key (ABAP or XSUAA)"},{"source":"artifact:fr0ster-mcp-abap-adt","target":"external:sap-nw-rfc-sdk","kind":"requires","requirement":"conditional","role":"rfc-connectivity","condition":"RFC or SNC connection type selected"},{"source":"artifact:fr0ster-mcp-abap-adt","target":"external:docker","kind":"requires","requirement":"conditional","role":"deployment","condition":"deployed via the project's Docker images"},{"source":"artifact:fr0ster-mcp-abap-adt","target":"artifact:mario-andreschak-mcp-abap-adt","kind":"lineage"},{"source":"artifact:franzreitmayer-abap-logging","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:freight-art-abapsmith","target":"artifact:sap-adt","kind":"requires","requirement":"required","role":"adt-endpoint"},{"source":"artifact:geert-janklaps-abap-openapi-ui","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:germanysources-regression-test","target":"artifact:abap-logger-abap-logger","kind":"requires"},{"source":"artifact:germanysources-regression-test","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:gprs555-abap-soql-query","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:grahamrobbo-building-gateway-services","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:gregorwolf-cloud-alm-itsm-mcp","target":"external:sap-cloud-alm","kind":"requires","requirement":"required","role":"integration"},{"source":"artifact:gregorwolf-pg-beershop","target":"external:postgresql","kind":"requires"},{"source":"artifact:gregorwolf-pg-beershop","target":"artifact:btp-postgresql-hyperscaler","kind":"available_via"},{"source":"artifact:greltel-abap-cloud-logger","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:greltel-abap-dynamic-assignment","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:greltel-abap-form-translator","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:greltel-abap-point-gate","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:grknylmz-sap-ai-dev-toolkit","target":"artifact:btp-business-application-studio","kind":"requires","requirement":"conditional","condition":"the BAS setup path is taken; local setup reads the SAP GUI landscape on a workstation instead"},{"source":"artifact:grknylmz-sap-ai-dev-toolkit","target":"artifact:oisee-vibing-steampunk","kind":"requires","requirement":"required"},{"source":"artifact:grknylmz-sap-ai-dev-toolkit","target":"artifact:sap-adt","kind":"requires","requirement":"required"},{"source":"artifact:grknylmz-sap-ai-dev-toolkit","target":"artifact:btp-hana-cloud","kind":"requires","requirement":"conditional","role":"database","condition":"the hana-cloud-inspector companion server is selected during setup"},{"source":"artifact:grknylmz-sap-ai-dev-toolkit","target":"artifact:sap-hana-client","kind":"requires","requirement":"conditional","role":"database-driver","condition":"the hana-cloud-inspector companion connects to a bound HANA Cloud HDI schema"},{"source":"artifact:hochfrequenz-aibap-mcp","target":"artifact:sap-adt","kind":"requires"},{"source":"artifact:ibm-abap-sdk-nwas-x","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:iljapostnovs-ui5plugin-linter","target":"artifact:iljapostnovs-ui5plugin-parser","kind":"requires","requirement":"required"},{"source":"artifact:iljapostnovs-ui5plugin","target":"artifact:iljapostnovs-ui5plugin-parser","kind":"requires","requirement":"required"},{"source":"artifact:iljapostnovs-ui5plugin","target":"artifact:iljapostnovs-ui5plugin-linter","kind":"requires","requirement":"required"},{"source":"artifact:ivanfemia-abap2gapps","target":"artifact:ivanfemia-abap2oauth2","kind":"requires"},{"source":"artifact:ivanfemia-abap2gapps","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:ivanfemia-abap2oauth2","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:jrgkraus-abap-gencust","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:jrgkraus-abap-ui-tools","target":"artifact:abapify-throw","kind":"requires"},{"source":"artifact:jrgkraus-tool-bi","target":"artifact:abap-logger-abap-logger","kind":"requires"},{"source":"artifact:jrodriguez-rc-abap-tasks-tracker","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:kamilkov-supply-chain-rescue","target":"artifact:sap-cds","kind":"requires","requirement":"required"},{"source":"artifact:kamilkov-supply-chain-rescue","target":"external:sqlite","kind":"requires","requirement":"required"},{"source":"artifact:kamilkov-supply-chain-rescue","target":"artifact:cap-js-agents","kind":"requires","requirement":"conditional","role":"agent framework","condition":"the optional recovery agent or the Recall Agent is used"},{"source":"artifact:kamilkov-supply-chain-rescue","target":"artifact:cap-js-notifications","kind":"requires","requirement":"required"},{"source":"artifact:kamilkov-supply-chain-rescue","target":"external:abap-platform","kind":"requires","requirement":"conditional","condition":"the Recall Rescue part is run"},{"source":"artifact:kamilkov-supply-chain-rescue","target":"artifact:sap-hana","kind":"requires","requirement":"conditional","role":"graph query engine","condition":"the Recall Rescue part is run"},{"source":"artifact:kamilkov-supply-chain-rescue","target":"external:anthropic-claude-api","kind":"requires","requirement":"conditional","condition":"the optional agent is started with its key"},{"source":"artifact:kamilkov-supply-chain-rescue","target":"external:postmark","kind":"requires","requirement":"conditional","condition":"the email approval request is configured with a Postmark server token"},{"source":"artifact:kaszub09-abapdatatotableimport","target":"artifact:kaszub09-abapeasyalv","kind":"requires","requirement":"required"},{"source":"artifact:kaszub09-abapdatatotableimport","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:kaszub09-abaptoc","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:kaszub09-zabap-sap-enhancements","target":"artifact:kaszub09-abapeasyalv","kind":"requires"},{"source":"artifact:kaszub09-zabap-sap-enhancements","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:kaszub09-zabap-table-edit","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:khalidmh-capx","target":"artifact:sap-cds-dk","kind":"requires"},{"source":"artifact:krish469-sap-cap-mongodb","target":"external:mongodb","kind":"requires"},{"source":"artifact:kseretis-abap-metrics","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:ktaubmann-bella","target":"artifact:sap-adt-eclipse","kind":"requires"},{"source":"artifact:ktaubmann-bella","target":"external:eclipse","kind":"requires"},{"source":"artifact:larshp-abap-object-visualizer","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:larshp-abapcov","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:larshp-abapopenchecks","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:larshp-abapopenreview","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:larshp-abappgp","target":"artifact:sumu-ning-aes","kind":"requires","requirement":"required"},{"source":"artifact:larshp-formfactor","target":"artifact:larshp-abapopenchecks","kind":"requires","requirement":"required"},{"source":"artifact:larshp-formfactor","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:larshp-updownci","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:lemaiwo-ai-core-mcp-server","target":"artifact:lemaiwo-odata-mcp-proxy","kind":"requires"},{"source":"artifact:lemaiwo-btp-agent","target":"artifact:sap-cds","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:lemaiwo-btp-agent","target":"artifact:sap-cds-dk","kind":"requires","requirement":"required"},{"source":"artifact:lemaiwo-btp-agent","target":"artifact:lemaiwo-odata-mcp-proxy","kind":"requires","requirement":"required"},{"source":"artifact:lemaiwo-btp-agent","target":"external:langgraph","kind":"requires","requirement":"required","role":"agent framework"},{"source":"artifact:lemaiwo-btp-agent","target":"external:langchain-mcp-adapters","kind":"requires","requirement":"required"},{"source":"artifact:lemaiwo-btp-agent","target":"artifact:btp-ai-core","kind":"requires","requirement":"required"},{"source":"artifact:lemaiwo-btp-agent","target":"artifact:btp-authorization-and-trust-management","kind":"requires","requirement":"required"},{"source":"artifact:lemaiwo-btp-agent","target":"artifact:btp-destination","kind":"requires","requirement":"required"},{"source":"artifact:lemaiwo-btp-agent","target":"artifact:btp-connectivity","kind":"requires","requirement":"required"},{"source":"artifact:lemaiwo-btp-agent","target":"artifact:btp-hana-service","kind":"requires","requirement":"conditional","condition":"the application is deployed, where the CDS data model runs on HANA rather than the local SQLite database"},{"source":"artifact:lemaiwo-btp-agent","target":"artifact:btp-html5-application-repository","kind":"requires","requirement":"conditional","condition":"the application is deployed; the chat app is served from the CDS server at dev time"},{"source":"artifact:lemaiwo-btp-agent","target":"artifact:sap-approuter","kind":"requires","requirement":"required"},{"source":"artifact:lemaiwo-btp-agent","target":"artifact:ui5-community-cds-plugin-ui5","kind":"requires","requirement":"conditional","condition":"running locally; the deployed chat app is built as its own MTA module"},{"source":"artifact:lemaiwo-btp-agent","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"required"},{"source":"artifact:lemaiwo-btp-cf-mcp-server","target":"artifact:lemaiwo-odata-mcp-proxy","kind":"requires","requirement":"required"},{"source":"artifact:lemaiwo-btp-cf-mcp-server","target":"artifact:btp-destination","kind":"requires","requirement":"required"},{"source":"artifact:lemaiwo-btp-cf-mcp-server","target":"artifact:btp-authorization-and-trust-management","kind":"requires","requirement":"required"},{"source":"artifact:lemaiwo-btp-cf-mcp-server","target":"artifact:btp-connectivity","kind":"requires","requirement":"required"},{"source":"artifact:lemaiwo-btp-cf-mcp-server","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"required"},{"source":"artifact:lemaiwo-btp-drawio-skill","target":"external:drawio","kind":"requires"},{"source":"artifact:lemaiwo-btp-mcp-server","target":"artifact:lemaiwo-odata-mcp-proxy","kind":"requires"},{"source":"artifact:lemaiwo-cap-agent-ui5-webui","target":"artifact:cap-js-agents","kind":"requires","requirement":"required","role":"agent runtime"},{"source":"artifact:lemaiwo-ci-mcp-server","target":"artifact:lemaiwo-odata-mcp-proxy","kind":"requires"},{"source":"artifact:lemaiwo-ui5-ai-features-demo","target":"artifact:lemaiwo-ui5-cap-ai-features","kind":"requires"},{"source":"artifact:lemaiwo-ui5-ai-features-demo","target":"artifact:btp-html5-application-repository","kind":"requires"},{"source":"artifact:lemaiwo-ui5-ai-features-demo","target":"artifact:sap-approuter","kind":"requires"},{"source":"artifact:lemaiwo-ui5-cap-ai-features","target":"artifact:sap-ai-sdk-orchestration","kind":"requires","requirement":"conditional","role":"model-client","condition":"The backend half is installed: the README calls the package an optional peer dependency so that a frontend-only install stays lean, and says a backend project installs it explicitly."},{"source":"artifact:lemaiwo-ui5-cap-ai-features","target":"artifact:btp-html5-application-repository","kind":"requires"},{"source":"artifact:lemaiwo-ui5-cap-serverside-rendering-demo","target":"artifact:lemaiwo-ui5-cap-serverside-rendering-plugin","kind":"requires","requirement":"required"},{"source":"artifact:lemaiwo-ui5-cap-serverside-rendering-demo","target":"artifact:sap-cds","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:lemaiwo-ui5-cap-serverside-rendering-demo","target":"artifact:ui5-community-cds-plugin-ui5","kind":"requires","requirement":"required"},{"source":"artifact:lemaiwo-ui5-cap-serverside-rendering-demo","target":"artifact:sap-cds-dk","kind":"requires","requirement":"required"},{"source":"artifact:lemaiwo-ui5-cap-serverside-rendering-demo","target":"artifact:cap-js-sqlite","kind":"requires","requirement":"conditional","condition":"the project is run locally rather than deployed"},{"source":"artifact:likweitan-abap-skills","target":"external:drawio","kind":"requires","requirement":"required","role":"viewer"},{"source":"artifact:likweitan-abap-skills","target":"artifact:abaplint-abaplint","kind":"requires","requirement":"required","role":"static-analysis"},{"source":"artifact:likweitan-abap-skills","target":"artifact:sap-btp-solution-diagrams","kind":"requires","requirement":"required","role":"specification"},{"source":"artifact:lofond-drawio-skill-sap","target":"external:drawio","kind":"requires","requirement":"conditional","role":"export","condition":"exporting the diagram to PNG, SVG, PDF or JPG"},{"source":"artifact:magpasulke-abap-string-interpreter","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:maherd18-sap-mcp-server","target":"artifact:sap-adt","kind":"requires","requirement":"required"},{"source":"artifact:maherd18-sap-mcp-server","target":"external:docker","kind":"requires","requirement":"conditional","condition":"the server is started from the published container image rather than with `npx` or from a checkout"},{"source":"artifact:marc-bernard-tools-abap-tools-for-abapgit","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:marc-bernard-tools-mbt-logical-object-lister","target":"external:sap-bw4hana","kind":"requires","requirement":"conditional","condition":"the object model being displayed is SAP BW/4HANA's; the README names SAP BW and SAP BPC as the alternatives"},{"source":"artifact:marcellourbani-abap-debugger-object-graph-extension","target":"artifact:marcellourbani-abapgraph","kind":"requires","requirement":"required"},{"source":"artifact:marcellourbani-abap-debugger-object-graph-extension","target":"artifact:marcellourbani-graphviz-browser","kind":"requires","requirement":"required"},{"source":"artifact:marcellourbani-abap-debugger-object-graph-extension","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:marcellourbani-abap-debugger-object-graph-extension","target":"artifact:larshp-abap-object-visualizer","kind":"lineage"},{"source":"artifact:marcellourbani-abapfs-extensions","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:marcellourbani-sapdumpmcp","target":"artifact:sap-adt","kind":"requires"},{"source":"artifact:marcellourbani-vscode-abap-remote-fs","target":"artifact:sap-adt","kind":"requires"},{"source":"artifact:marcellourbani-vscode-abap-remote-fs","target":"artifact:abap-adt-api","kind":"requires"},{"source":"artifact:marcellourbani-vscode-abap-remote-fs","target":"artifact:marcellourbani-abapfs-extensions","kind":"requires","requirement":"conditional","condition":"the SAP system is older than NetWeaver 7.51 and source has to be written back to it"},{"source":"artifact:marcellourbani-vscode-abap-remote-fs","target":"external:github-copilot","kind":"requires","requirement":"conditional","condition":"using the native Copilot integration in VS Code"},{"source":"artifact:marcellourbani-vscode-activecontrol","target":"artifact:marcellourbani-vscode-abap-remote-fs","kind":"requires"},{"source":"artifact:marianfoo-btp-cf-mcp","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"required"},{"source":"artifact:marianfoo-btp-cf-mcp","target":"artifact:arc-mcp-arc-1","kind":"lineage"},{"source":"artifact:marianfoo-btp-drawio-skill","target":"external:drawio","kind":"requires"},{"source":"artifact:marianfoo-btp-drawio-skill","target":"artifact:miyasuta-claude-drawio-btp-diagram","kind":"lineage"},{"source":"artifact:marianfoo-btp-drawio-skill","target":"artifact:lemaiwo-btp-drawio-skill","kind":"lineage"},{"source":"artifact:marianfoo-custom-llm-client","target":"external:nodejs","kind":"requires"},{"source":"artifact:marianfoo-custom-llm-client","target":"external:langgraph","kind":"requires"},{"source":"artifact:marianfoo-custom-llm-client","target":"artifact:btp-ai-core","kind":"requires","requirement":"conditional","condition":"LLM_PROVIDER is set to sap-ai-core; the README lists Azure OpenAI, the OpenAI API and Ollama as the other providers"},{"source":"artifact:marianfoo-fiori-table-maintenance","target":"artifact:cap-js-community-odata-v2-adapter","kind":"requires"},{"source":"artifact:marianfoo-llm-benchmark-abap-code-generation","target":"artifact:btp-ai-core","kind":"requires","requirement":"conditional","condition":"the model being benchmarked is SAP's sap--abap-1"},{"source":"artifact:marianfoo-open-rfc","target":"artifact:btp-connectivity","kind":"requires","requirement":"conditional","role":"connectivity-proxy","condition":"BTP Connectivity SOCKS5/TCP routing for a direct explicit-user connection is used"},{"source":"artifact:marianfoo-open-rfc","target":"artifact:sap-cds-rfc","kind":"alternative_to"},{"source":"artifact:marianfoo-sap-api-policy-skill","target":"artifact:marianfoo-sap-api-hub-mcp","kind":"requires","requirement":"conditional","role":"evidence-source","condition":"an assessment is to reach the skill's high confidence level"},{"source":"artifact:marianfoo-sap-api-policy-skill","target":"artifact:marianfoo-sap-note-search-mcp","kind":"requires","requirement":"conditional","role":"evidence-source","condition":"an assessment is to reach the skill's high confidence level"},{"source":"artifact:marianfoo-sap-api-policy-skill","target":"artifact:marianfoo-mcp-sap-docs","kind":"requires","requirement":"conditional","role":"evidence-source","condition":"the assessment rests on SAP Help, Architecture Center or released-object status"},{"source":"artifact:marianfoo-sap-api-policy-skill","target":"artifact:marianfoo-sap-roadmap-mcp","kind":"requires","requirement":"conditional","role":"evidence-source","condition":"the question is whether a replacement API is planned"},{"source":"artifact:marianfoo-sap-api-policy-skill","target":"artifact:arc-mcp-arc-1","kind":"requires","requirement":"conditional","role":"evidence-source","condition":"the scenario involves a live system's release state or a custom API"},{"source":"artifact:marianfoo-sap-api-policy-skill","target":"external:playwright","kind":"requires","requirement":"required","role":"browser-automation"},{"source":"artifact:marianfoo-sap-mcp-auth","target":"external:playwright","kind":"requires","requirement":"required"},{"source":"artifact:marianfoo-ui5-cc-dayjs","target":"external:dayjs","kind":"requires"},{"source":"artifact:marianfoo-ui5-fe-mockserver-tutorial","target":"artifact:marianfoo-ui5-call-action","kind":"requires","requirement":"required"},{"source":"artifact:marianfoo-werkbank","target":"external:goose","kind":"requires"},{"source":"artifact:marianfoo-werkbank","target":"external:nodejs","kind":"requires"},{"source":"artifact:marianfoo-werkbank","target":"external:openrouter","kind":"requires"},{"source":"artifact:marianfoo-ztoad","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:mario-andreschak-mcp-abap-adt-api","target":"artifact:mario-andreschak-mcp-abap-adt","kind":"alternative_to"},{"source":"artifact:mariodefelipe-datasphere-plugin","target":"artifact:mariodefelipe-sap-datasphere-mcp","kind":"requires"},{"source":"artifact:mariodefelipe-datasphere-plugin","target":"artifact:btp-datasphere","kind":"requires","requirement":"required","role":"target-system"},{"source":"artifact:mariodefelipe-sap-bdc-mcp-server","target":"artifact:btp-business-data-cloud","kind":"requires"},{"source":"artifact:mariodefelipe-sap-bdc-mcp-server","target":"external:databricks","kind":"requires"},{"source":"artifact:mariokernich-abapconf2026-custom-entities","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:mariokernich-odapu-abap","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:mariokernich-odapu-abap","target":"artifact:btp-abap-environment","kind":"requires","requirement":"conditional","role":"runtime","condition":"deployed on SAP BTP rather than on-premise"},{"source":"artifact:mariokernich-odapu-abap","target":"external:sap-s4hana","kind":"requires","requirement":"required","role":"target-system"},{"source":"artifact:martinpankraz-az-private-linky-cap","target":"artifact:btp-destination","kind":"requires","requirement":"required"},{"source":"artifact:matt1as-claude-abap-skills","target":"artifact:btp-abap-environment","kind":"requires","requirement":"conditional","role":"target-system","condition":"target system is SAP BTP ABAP Environment"},{"source":"artifact:matt1as-claude-abap-skills","target":"external:sap-s4hana","kind":"requires","requirement":"conditional","role":"target-system","condition":"target system is S/4HANA on-prem in the ABAP Cloud development model"},{"source":"artifact:matt1as-claude-abap-skills","target":"artifact:arc-mcp-arc-1","kind":"requires","requirement":"conditional","role":"source-read","condition":"a read-capable MCP server is wanted for review, refactor and clean-core-check skills"},{"source":"artifact:matt1as-claude-abap-skills","target":"artifact:sap-adt-mcp-server","kind":"requires","requirement":"required","role":"system-access"},{"source":"artifact:mauriciolauffer-openui5-model-json-crud","target":"artifact:openui5-core","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:mauriciolauffer-openui5-model-odata-v2-odatapromise","target":"artifact:openui5-core","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:mauriciolauffer-openui5-password","target":"artifact:openui5-core","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:mauriciolauffer-openui5-smart-mockserver","target":"artifact:openui5-core","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:mauriciolauffer-openui5-tour","target":"artifact:openui5-core","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:mauriciolauffer-openui5-validator","target":"artifact:openui5-core","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:mauriciolauffer-openui5-validator","target":"external:ajv","kind":"requires","requirement":"required","role":"validation-engine"},{"source":"artifact:mauriciolauffer-sap-cap-validator-plugin","target":"external:ajv","kind":"requires","requirement":"required"},{"source":"artifact:maxi1555-ui5-middleware-oidc","target":"artifact:sap-ui5-cli","kind":"requires","requirement":"required"},{"source":"artifact:mdjoerg-mqba","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:mfigueir-sap-power","target":"artifact:sap-ui5-cli","kind":"requires","requirement":"conditional","role":"tooling","condition":"UI5 projects"},{"source":"artifact:mfigueir-sap-power","target":"artifact:sap-cds-dk","kind":"requires","requirement":"conditional","role":"tooling","condition":"CAP development"},{"source":"artifact:mi8y-cap-agents-aicore-vectorstore","target":"artifact:btp-ai-core","kind":"requires","requirement":"required"},{"source":"artifact:mi8y-cap-agents-sdm-backend","target":"artifact:btp-document-management-integration","kind":"requires","requirement":"required","role":"document-repository"},{"source":"artifact:mi8y-cap-agents-sdm-backend","target":"external:deepagents","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:mi8y-cap-agents-sdm-reports-assistant","target":"artifact:mi8y-cap-agents-sdm-backend","kind":"requires","requirement":"required","role":"filesystem-backend"},{"source":"artifact:mi8y-cap-agents-sdm-reports-assistant","target":"artifact:cap-js-agents","kind":"requires","requirement":"required","role":"agent-framework"},{"source":"artifact:mi8y-cap-agents-sdm-reports-assistant","target":"external:deepagents","kind":"requires","requirement":"required","role":"agent-harness"},{"source":"artifact:mi8y-cap-agents-sdm-reports-assistant","target":"artifact:btp-document-management-integration","kind":"requires","requirement":"required","role":"document-repository"},{"source":"artifact:mi8y-cap-agents-sdm-reports-assistant","target":"artifact:btp-ai-core","kind":"requires","requirement":"required","role":"model-runtime"},{"source":"artifact:mi8y-cap-agents-sdm-reports-assistant","target":"artifact:btp-destination","kind":"requires","requirement":"required","role":"destinations"},{"source":"artifact:mi8y-cap-agents-sdm-reports-assistant","target":"artifact:btp-authorization-and-trust-management","kind":"requires","requirement":"required","role":"authentication"},{"source":"artifact:mi8y-cap-agents-sdm-reports-assistant","target":"artifact:btp-html5-application-repository","kind":"requires","requirement":"required","role":"ui-hosting"},{"source":"artifact:mikezaschka-cds-data-federation","target":"artifact:cds-caching","kind":"requires"},{"source":"artifact:mikezaschka-cds-data-federation","target":"artifact:mikezaschka-cds-data-pipeline","kind":"requires"},{"source":"artifact:mikezaschka-cds-data-federation","target":"artifact:cap-js-sqlite","kind":"requires"},{"source":"artifact:mikezaschka-cds-dbm","target":"artifact:btp-postgresql-hyperscaler","kind":"requires"},{"source":"artifact:miyasuta-attachment-reuse-controls-sample","target":"artifact:cap-js-attachments","kind":"requires"},{"source":"artifact:miyasuta-attachment-reuse-controls-sample","target":"artifact:miyasuta-ui5-upload-controls","kind":"requires"},{"source":"artifact:miyasuta-auth-samples","target":"artifact:btp-authorization-and-trust-management","kind":"requires","requirement":"required"},{"source":"artifact:miyasuta-auth-samples","target":"artifact:btp-destination","kind":"requires","requirement":"required"},{"source":"artifact:miyasuta-auth-transport","target":"artifact:btp-authorization-and-trust-management","kind":"requires","requirement":"required"},{"source":"artifact:miyasuta-auth-transport","target":"artifact:sap-approuter","kind":"requires","requirement":"required"},{"source":"artifact:miyasuta-auth-transport","target":"artifact:btp-destination","kind":"requires","requirement":"required"},{"source":"artifact:miyasuta-auth-transport","target":"artifact:btp-hana-cloud","kind":"requires","requirement":"required"},{"source":"artifact:miyasuta-auth-transport2","target":"artifact:btp-authorization-and-trust-management","kind":"requires","requirement":"required"},{"source":"artifact:miyasuta-auth-transport2","target":"artifact:miyasuta-auth-transport","kind":"alternative_to"},{"source":"artifact:miyasuta-blog-bookshop","target":"artifact:cap-js-community-odata-v2-adapter","kind":"requires","requirement":"required"},{"source":"artifact:miyasuta-blog-bookshop","target":"artifact:sap-approuter","kind":"requires","requirement":"required"},{"source":"artifact:miyasuta-blog-bookshop","target":"artifact:btp-html5-application-repository","kind":"requires","requirement":"required"},{"source":"artifact:miyasuta-blog-bookshop","target":"artifact:btp-authorization-and-trust-management","kind":"requires","requirement":"required"},{"source":"artifact:miyasuta-blog-bookshop","target":"artifact:btp-cloud-portal","kind":"requires","requirement":"required"},{"source":"artifact:miyasuta-blog-cap-chart","target":"artifact:cap-js-community-odata-v2-adapter","kind":"requires","requirement":"required"},{"source":"artifact:miyasuta-btp-ui5-show-userinfo","target":"artifact:sap-approuter","kind":"requires","requirement":"conditional","condition":"the User API endpoints are read; the launchpad shell service path needs no router"},{"source":"artifact:miyasuta-btp-user-role-request","target":"artifact:btp-build-process-automation","kind":"requires","requirement":"required"},{"source":"artifact:miyasuta-cap-bp-rag","target":"artifact:btp-hana-cloud","kind":"requires","requirement":"required"},{"source":"artifact:miyasuta-cap-cds-typer","target":"artifact:cap-js-cds-typer","kind":"requires","requirement":"required"},{"source":"artifact:miyasuta-cap-embedding-function","target":"artifact:btp-hana-cloud","kind":"requires","requirement":"required"},{"source":"artifact:miyasuta-cap-embedding-function","target":"artifact:cap-js-hana","kind":"requires","requirement":"required"},{"source":"artifact:miyasuta-cap-external-northwind","target":"artifact:btp-destination","kind":"requires","requirement":"required"},{"source":"artifact:miyasuta-cap-oauth-destination","target":"artifact:btp-destination","kind":"requires"},{"source":"artifact:miyasuta-cap-openai","target":"artifact:btp-destination","kind":"requires"},{"source":"artifact:miyasuta-cap-openapi","target":"artifact:btp-destination","kind":"requires"},{"source":"artifact:miyasuta-cap-openapi","target":"artifact:btp-authorization-and-trust-management","kind":"requires"},{"source":"artifact:miyasuta-cap-principal-propagation","target":"artifact:btp-destination","kind":"requires"},{"source":"artifact:miyasuta-cap-principal-propagation","target":"artifact:btp-connectivity","kind":"requires"},{"source":"artifact:miyasuta-cap-principal-propagation","target":"artifact:sap-approuter","kind":"requires"},{"source":"artifact:miyasuta-cap-redis","target":"artifact:btp-redis","kind":"requires"},{"source":"artifact:miyasuta-cap-redis","target":"artifact:sap-approuter","kind":"requires"},{"source":"artifact:miyasuta-cap-redis","target":"artifact:btp-html5-application-repository","kind":"requires"},{"source":"artifact:miyasuta-cap-reuse-html5","target":"artifact:btp-html5-application-repository","kind":"requires"},{"source":"artifact:miyasuta-cap-reuse-html5","target":"artifact:btp-destination","kind":"requires"},{"source":"artifact:miyasuta-cap-rfc","target":"artifact:sap-cds-rfc","kind":"requires"},{"source":"artifact:miyasuta-cap-rfc","target":"artifact:btp-destination","kind":"requires"},{"source":"artifact:miyasuta-cap-rfc","target":"artifact:btp-connectivity","kind":"requires"},{"source":"artifact:miyasuta-cap-ui","target":"artifact:btp-html5-application-repository","kind":"requires"},{"source":"artifact:miyasuta-cap-ui","target":"artifact:btp-destination","kind":"requires"},{"source":"artifact:miyasuta-cds-feature-softdelete","target":"artifact:miyasuta-cds-softdelete-plugin","kind":"alternative_to"},{"source":"artifact:miyasuta-claude-drawio-btp-diagram","target":"external:drawio","kind":"requires","requirement":"required"},{"source":"artifact:miyasuta-generator-ui5-library-af-deploy","target":"artifact:btp-html5-application-repository","kind":"requires"},{"source":"artifact:muhammad-abdullah333-sap-mcp-bridge","target":"artifact:sap-adt","kind":"requires"},{"source":"artifact:muhammad-abdullah333-sap-mcp-bridge","target":"external:nodejs","kind":"requires"},{"source":"artifact:murattahtaciii-abap-architect","target":"external:eclipse","kind":"requires","requirement":"required","role":"host-ide"},{"source":"artifact:murattahtaciii-abap-architect","target":"artifact:sap-adt-eclipse","kind":"requires","requirement":"conditional","role":"adt-client","condition":"Create DDIC, and inserting generated code into the ADT ABAP editor"},{"source":"artifact:neoimpulse-cap-js-mcp","target":"artifact:cap-js-mcp","kind":"alternative_to"},{"source":"artifact:neoimpulse-cap-js-mcp","target":"artifact:cap-js-mcp-server","kind":"lineage"},{"source":"artifact:neoimpulse-cap-js-notifications","target":"artifact:cap-js-notifications","kind":"alternative_to"},{"source":"artifact:neoimpulse-cap-js-notifications","target":"artifact:cap-js-notifications","kind":"lineage"},{"source":"artifact:odatano-core-mcp","target":"artifact:odatano-core","kind":"requires"},{"source":"artifact:odatano-nightgate-mcp","target":"artifact:odatano-nightgate","kind":"requires"},{"source":"artifact:oisee-odata-mcp-go","target":"artifact:oisee-odata-mcp","kind":"alternative_to"},{"source":"artifact:oisee-odata-mcp-go","target":"artifact:oisee-odata-mcp","kind":"lineage"},{"source":"artifact:oisee-open-steamgate","target":"artifact:abaplint-transpiler","kind":"requires","requirement":"required"},{"source":"artifact:oisee-open-steamgate","target":"external:sqlite","kind":"requires","requirement":"conditional","role":"database","condition":"the SQLite backend is used, which is the default"},{"source":"artifact:oisee-open-steamgate","target":"external:postgresql","kind":"requires","requirement":"conditional","role":"database","condition":"the PostgreSQL backend is chosen"},{"source":"artifact:oisee-open-steamgate","target":"artifact:sap-hana","kind":"requires","requirement":"conditional","role":"database","condition":"`STG_DB=hana` selects HANA as the backend"},{"source":"artifact:oisee-open-steamgate","target":"external:docker","kind":"requires","requirement":"conditional","condition":"it is started as a container rather than from the clone, a binary or the browser build"},{"source":"artifact:oisee-open-steamgate","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"conditional","condition":"objects are moved between this and a real ABAP system"},{"source":"artifact:oisee-vibing-steampunk","target":"artifact:sap-adt","kind":"requires"},{"source":"artifact:oisee-zvdb","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:open-abap-open-abap-core","target":"artifact:abaplint-transpiler","kind":"requires","requirement":"required"},{"source":"artifact:open-abap-open-abap-core","target":"external:nodejs","kind":"requires"},{"source":"artifact:open-abap-open-abap-lock","target":"external:postgresql","kind":"requires","requirement":"required"},{"source":"artifact:open-abap-open-abap-odata","target":"external:nodejs","kind":"requires","requirement":"conditional","condition":"it is run locally, outside an ABAP system"},{"source":"artifact:pacroy-abap-fluentd","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:pacroy-abap-prometheus","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:patimweb-pi-cap-bestpractices","target":"artifact:capire-skills","kind":"requires"},{"source":"artifact:peterlangner-zrss","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:pulseshift-ui5-lib-visualization","target":"artifact:openui5-core","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:pulseshift-ui5-lib-visualization","target":"external:c3js","kind":"requires","requirement":"required","role":"charting-engine"},{"source":"artifact:quadrio-cds-dbm","target":"artifact:mikezaschka-cds-dbm","kind":"alternative_to"},{"source":"artifact:qualiture-basenvsync","target":"artifact:btp-business-application-studio","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:qualiture-ui5-task-check-eocp","target":"artifact:sap-ui5-cli","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:rahulsethi-sap-datasphere-mcp","target":"artifact:mariodefelipe-sap-datasphere-mcp","kind":"alternative_to"},{"source":"artifact:rayatus-abapgit-commitlint","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:rdisomma-ui5x","target":"artifact:openui5-core","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:rdisomma-ui5x","target":"artifact:ui5-community-ui5-task-zipper","kind":"requires","requirement":"conditional","role":"packaging","condition":"the application is packaged as an archive for Cloud Foundry"},{"source":"artifact:rizing-cds-extension","target":"artifact:sap-cds","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:robertriedel-pod2-config-skill","target":"external:sap-digital-manufacturing","kind":"requires","requirement":"required","role":"target-system"},{"source":"artifact:romankorim-sap-mcp-server","target":"external:nodejs","kind":"requires","requirement":"conditional","condition":"the RFC tools are used"},{"source":"artifact:romankorim-sap-mcp-server","target":"artifact:marianfoo-open-rfc","kind":"requires","requirement":"required","role":"rfc-protocol"},{"source":"artifact:salvatorelaspata-cap-plugin-adobe-forms","target":"artifact:btp-destination","kind":"requires"},{"source":"artifact:sanoberrehman-cap-mcp-bridge","target":"artifact:gavdi-cap-mcp","kind":"alternative_to"},{"source":"artifact:sanoberrehman-cap-mcp-bridge","target":"artifact:cap-js-mcp","kind":"alternative_to"},{"source":"artifact:sap-abap-atc-cr-cv-s4hc","target":"external:github","kind":"requires","requirement":"required"},{"source":"artifact:sap-abap-to-json","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:sap-adt-eclipse","target":"artifact:sap-adt","kind":"requires"},{"source":"artifact:sap-adt-vscode","target":"artifact:sap-joule-for-developers","kind":"requires"},{"source":"artifact:sap-aicore-skills","target":"artifact:btp-ai-core","kind":"requires","requirement":"required"},{"source":"artifact:sap-ams","target":"artifact:btp-cloud-identity-services","kind":"requires","requirement":"required"},{"source":"artifact:sap-approuter","target":"artifact:btp-authorization-and-trust-management","kind":"requires"},{"source":"artifact:sap-approuter","target":"artifact:btp-cloud-identity-services","kind":"requires"},{"source":"artifact:sap-approuter","target":"artifact:btp-destination","kind":"requires"},{"source":"artifact:sap-approuter","target":"artifact:btp-connectivity","kind":"requires"},{"source":"artifact:sap-approuter","target":"artifact:btp-html5-application-repository","kind":"requires"},{"source":"artifact:sap-approuter","target":"artifact:btp-application-frontend","kind":"alternative_to"},{"source":"artifact:sap-archive-digital-manufacturing-test-automation-samples","target":"external:tricentis-test-automation-for-sap","kind":"requires","requirement":"required","role":"test-automation-environment"},{"source":"artifact:sap-automation-pilot-agent-skills","target":"artifact:btp-automation-pilot","kind":"requires","requirement":"required","role":"target-service"},{"source":"artifact:sap-btp-setup-automator","target":"external:docker","kind":"requires","requirement":"required"},{"source":"artifact:sap-cds","target":"artifact:sap-cloud-sdk-http-client","kind":"requires","requirement":"conditional","role":"destination-http-client","condition":"A remote service call needs on-premise connectivity or an authentication type the native fetch client does not support; used by default whenever the package is installed."},{"source":"artifact:sap-cds","target":"artifact:sap-cloud-sdk-http-client","kind":"requires","requirement":"conditional","role":"destination-http-client","condition":"A remote service call needs on-premise connectivity or an authentication type the native fetch client does not support; used by default whenever the package is installed."},{"source":"artifact:sap-cloud-connector","target":"external:jdk","kind":"requires"},{"source":"artifact:sap-cloud-sdk-connectivity","target":"artifact:btp-destination","kind":"requires"},{"source":"artifact:sap-cloud-sdk-connectivity","target":"artifact:btp-connectivity","kind":"requires"},{"source":"artifact:sap-cloud-sdk-http-client","target":"artifact:btp-destination","kind":"requires"},{"source":"artifact:sap-code-pal-for-abap-cloud","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:sap-code-pal-for-abap","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:sap-hdi-deploy","target":"artifact:btp-hana-cloud","kind":"requires"},{"source":"artifact:sap-joule-studio-classic","target":"artifact:btp-ai-core","kind":"requires"},{"source":"artifact:sap-joule-studio-cli","target":"artifact:sap-cds-dk","kind":"requires"},{"source":"artifact:sap-joule-work-dev-cli","target":"artifact:sap-cds-dk","kind":"requires"},{"source":"artifact:sap-joule-work-dev-cli","target":"artifact:sap-joule-studio","kind":"requires","requirement":"required","role":"backend"},{"source":"artifact:sap-joule","target":"artifact:btp-cloud-identity-services","kind":"requires"},{"source":"artifact:sap-leanix-ai-plugins","target":"artifact:sap-leanix-mcp-server","kind":"requires"},{"source":"artifact:sap-leanix-mcp-server","target":"external:sap-leanix","kind":"requires","requirement":"required","role":"data-source"},{"source":"artifact:sap-russia-zrs-abap-source-scan","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-abap-platform-jak","target":"artifact:sap-samples-abap-platform-yy","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-abap-platform-jak","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-abap-platform-refscen-flight-soap-client","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-abap-platform-refscen-flight-soap-server","target":"external:sap-s4hana","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-abap-platform-reuse-services","target":"artifact:btp-forms-service-by-adobe","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-abap-platform-yy","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-ai-core-samples","target":"artifact:btp-ai-core","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-ai-core-samples","target":"external:docker","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-ai-enabled-integrations-codejam","target":"artifact:btp-integration-suite","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-ai-enabled-integrations-codejam","target":"artifact:btp-ai-core","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-aicore-genai-samples","target":"artifact:btp-ai-core","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-aicore-multioutput-regression-restaurant-inspections","target":"artifact:btp-ai-core","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-aicore-multioutput-regression-restaurant-inspections","target":"artifact:btp-ai-launchpad","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-aicore-multioutput-regression-restaurant-inspections","target":"artifact:btp-object-store","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-analytics-cloud-rpt15-prediction-demo","target":"artifact:btp-ai-core","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-analytics-cloud-rpt15-prediction-demo","target":"artifact:btp-datasphere","kind":"requires","requirement":"conditional","condition":"the requirement names SAP Datasphere or SAP HANA Cloud; this is the Datasphere half of that choice"},{"source":"artifact:sap-samples-analytics-cloud-rpt15-prediction-demo","target":"artifact:btp-hana-cloud","kind":"requires","requirement":"conditional","condition":"the requirement names SAP Datasphere or SAP HANA Cloud; this is the HANA Cloud half of that choice"},{"source":"artifact:sap-samples-analytics-cloud-rpt15-prediction-demo","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-analytics-cloud-scim-api-samples","target":"artifact:btp-analytics-cloud","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-automation-pilot-examples","target":"artifact:btp-automation-pilot","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-a2a-dispute-resolution","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-abap-cna","target":"artifact:btp-event-mesh","kind":"requires"},{"source":"artifact:sap-samples-btp-admin-guide-samples","target":"external:terraform","kind":"requires","requirement":"conditional","condition":"the samples are run with Terraform; the README names Terraform or OpenTofu as the two ways to run them, and the graph holds no entry for OpenTofu"},{"source":"artifact:sap-samples-btp-ai-bp-access-to-generative-ai-models-cap","target":"artifact:btp-ai-core","kind":"requires"},{"source":"artifact:sap-samples-btp-ai-bp-content-filtering-cap","target":"artifact:btp-ai-core","kind":"requires"},{"source":"artifact:sap-samples-btp-ai-bp-data-masking-cap","target":"artifact:btp-ai-core","kind":"requires"},{"source":"artifact:sap-samples-btp-ai-bp-prompt-registry-cap","target":"artifact:btp-ai-core","kind":"requires"},{"source":"artifact:sap-samples-btp-ai-bp-prompt-templating-cap","target":"artifact:btp-ai-core","kind":"requires"},{"source":"artifact:sap-samples-btp-ai-bp-vector-rag-embedding-cap","target":"artifact:btp-ai-core","kind":"requires"},{"source":"artifact:sap-samples-btp-ai-bp-vector-rag-embedding-cap","target":"artifact:btp-hana-cloud","kind":"requires"},{"source":"artifact:sap-samples-btp-ai-bp-vector-rag-query-cap","target":"artifact:btp-ai-core","kind":"requires"},{"source":"artifact:sap-samples-btp-ai-bp-vector-rag-query-cap","target":"artifact:btp-hana-cloud","kind":"requires"},{"source":"artifact:sap-samples-btp-ai-core-consumption-monitor","target":"artifact:btp-hana-cloud","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-ai-core-consumption-monitor","target":"artifact:btp-authorization-and-trust-management","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-ai-core-consumption-monitor","target":"artifact:btp-usage-data-management","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-ai-core-consumption-monitor","target":"artifact:btp-destination","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-ai-core-consumption-monitor","target":"artifact:btp-html5-application-repository","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-ai-core-consumption-monitor","target":"artifact:btp-job-scheduling","kind":"requires","requirement":"conditional","condition":"the scheduler resource is uncommented in mta.yaml; the requirements table marks the service Optional (Recommended) and the default deployment has no schedule"},{"source":"artifact:sap-samples-btp-ai-core-consumption-monitor","target":"artifact:btp-alert-notification","kind":"requires","requirement":"conditional","condition":"notifications are routed through SAP Alert Notification service; the requirements table marks the service Optional"},{"source":"artifact:sap-samples-btp-ai-core-consumption-monitor","target":"artifact:btp-cloud-management","kind":"requires","requirement":"conditional","condition":"subaccounts are discovered from the account hierarchy; the requirements table marks the service Optional and the application boots in manual mode without it"},{"source":"artifact:sap-samples-btp-ai-core-usage-monitor","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-ai-core-usage-monitor","target":"artifact:btp-ai-core","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-ai-core-usage-monitor","target":"artifact:btp-usage-data-management","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-ai-core-usage-monitor","target":"artifact:btp-authorization-and-trust-management","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-ai-core-usage-monitor","target":"artifact:btp-alert-notification","kind":"requires","requirement":"conditional","condition":"ENABLE_ANS is set to true; the prerequisite asks for one notification channel, an SMTP server or this service"},{"source":"artifact:sap-samples-btp-cloud-connector-setup-automation","target":"artifact:sap-cloud-connector","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-cloud-connector-setup-automation","target":"external:nodejs","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-edge-integration-cell-on-azure","target":"artifact:btp-integration-suite","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-edge-integration-cell-on-azure","target":"external:postgresql","kind":"requires","requirement":"conditional","condition":"a high availability setup; the requirement is marked Optional; Required for HA"},{"source":"artifact:sap-samples-btp-edge-integration-cell-on-azure","target":"external:redis","kind":"requires","requirement":"conditional","condition":"a high availability setup; the requirement is marked Optional; Required for HA"},{"source":"artifact:sap-samples-btp-edge-integration-cell-on-azure","target":"artifact:btp-postgresql-hyperscaler","kind":"available_via"},{"source":"artifact:sap-samples-btp-edge-integration-cell-on-azure","target":"artifact:btp-redis","kind":"available_via"},{"source":"artifact:sap-samples-btp-gen-ai-hub-sdk-samples","target":"artifact:btp-ai-core","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-gen-ai-hub-sdk-samples","target":"artifact:btp-ai-launchpad","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-hello-world-fiori","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-hello-world-fiori","target":"artifact:btp-business-application-studio","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-kyma-helloworld","target":"artifact:btp-kyma-runtime","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-launchpad-ui-samples","target":"external:nodejs","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-neo-java-app-migration","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-private-link-approuter","target":"artifact:sap-approuter","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-private-link-approuter","target":"artifact:btp-private-link-service","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-private-link-approuter","target":"artifact:btp-cloud-integration","kind":"requires","requirement":"conditional","condition":"the Cloud Integration scenarios; the frontend-extension scenario uses SAP Build Work Zone, standard edition instead"},{"source":"artifact:sap-samples-btp-private-link-approuter","target":"artifact:btp-build-work-zone-standard","kind":"requires","requirement":"conditional","condition":"the frontend-extension scenario; the other two scenarios run with SAP Cloud Integration"},{"source":"artifact:sap-samples-btp-private-link-approuter","target":"external:sap-s4hana","kind":"requires","requirement":"conditional","condition":"the two SAP S/4HANA scenarios; the third reaches Azure Blob Storage instead"},{"source":"artifact:sap-samples-btp-resource-consumption-monitor","target":"artifact:btp-hana-cloud","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-resource-consumption-monitor","target":"artifact:btp-build-work-zone-standard","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-resource-consumption-monitor","target":"artifact:btp-business-application-studio","kind":"requires","requirement":"conditional","condition":"the backend is built in Business Application Studio; the README also allows Visual Studio Code or another IDE with NodeJs, ts-node, @sap/cds-dk and mbt installed"},{"source":"artifact:sap-samples-btp-resource-consumption-monitor","target":"artifact:btp-usage-data-management","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-resource-consumption-monitor","target":"artifact:btp-authorization-and-trust-management","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-resource-consumption-monitor","target":"artifact:btp-destination","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-resource-consumption-monitor","target":"artifact:btp-html5-application-repository","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-resource-consumption-monitor","target":"artifact:btp-job-scheduling","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-resource-consumption-monitor","target":"artifact:btp-alert-notification","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-resource-consumption-monitor","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"conditional","condition":"the Cloud Foundry deployment; the backend can be deployed to Kyma instead"},{"source":"artifact:sap-samples-btp-resource-consumption-monitor","target":"artifact:btp-kyma-runtime","kind":"requires","requirement":"conditional","condition":"the Kyma deployment, new from v2.1.0 onwards; the backend can be deployed to Cloud Foundry instead"},{"source":"artifact:sap-samples-btp-resource-consumption-monitor","target":"artifact:btp-analytics-cloud","kind":"requires","requirement":"conditional","condition":"the SAC content is activated; the README lists it as optional but recommended as an add-on"},{"source":"artifact:sap-samples-btp-s4hana-nocode-extension","target":"artifact:btp-build-apps","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-s4hana-nocode-extension","target":"artifact:btp-html5-application-repository","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-s4hana-nocode-extension","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-s4hana-nocode-extension","target":"external:sap-s4hana","kind":"requires","requirement":"conditional","condition":"a real landscape, cloud or on-premise; the mission also sets up a mock server for readers without a system"},{"source":"artifact:sap-samples-btp-s4hana-nocode-extension","target":"artifact:btp-build-work-zone-standard","kind":"requires","requirement":"conditional","condition":"the application is exposed through a Work Zone site; the mission also shows it stand-alone"},{"source":"artifact:sap-samples-btp-sourcing-decision-board","target":"artifact:btp-ai-core","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-sourcing-decision-board","target":"external:sqlite","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-sourcing-decision-board","target":"external:nodejs","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-sourcing-decision-board","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"conditional","condition":"the application is deployed to SAP BTP; the quick start also runs it locally with python server.py"},{"source":"artifact:sap-samples-btp-spend-analysis","target":"artifact:btp-integration-suite","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-spend-analysis","target":"artifact:btp-datasphere","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-spend-analysis","target":"artifact:btp-analytics-cloud","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-terraform-mooc-terra1","target":"artifact:sap-terraform-provider-btp","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-terraform-mooc-terra1","target":"external:docker","kind":"requires","requirement":"conditional","condition":"the dev container tools option described in unit 1 lesson 3 is chosen rather than a GitHub Codespace"},{"source":"artifact:sap-samples-btp-terraform-mooc-terra1","target":"external:github","kind":"requires","requirement":"conditional","condition":"the exercises are worked through in a GitHub Codespace rather than the local dev container"},{"source":"artifact:sap-samples-btp-terraform-samples","target":"artifact:sap-terraform-provider-btp","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-btp-user-management-microservice","target":"artifact:btp-authorization-and-trust-management","kind":"requires"},{"source":"artifact:sap-samples-cap-nodejs-dev-env","target":"external:docker","kind":"requires","requirement":"conditional","condition":"the container runs locally under VS Code and Docker Desktop is the container manager; the README names Podman as an alternative"},{"source":"artifact:sap-samples-cap-nodejs-dev-env","target":"external:github","kind":"requires","requirement":"conditional","condition":"the environment is a GitHub Codespace rather than a container on your own machine"},{"source":"artifact:sap-samples-cf-mta-examples","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-cf-routing-samples","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-cloud-integration-pipeline-datastore-extension-ui","target":"artifact:btp-cloud-integration","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-cloud-integration-pipeline-datastore-extension-ui","target":"external:nodejs","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-cloud-integration-pipeline-datastore-extension-ui","target":"artifact:sap-cds-dk","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-cloud-integration-pipeline-datastore-extension-ui","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"conditional","condition":"the application is deployed to SAP BTP Cloud Foundry rather than started locally with cds watch; the README also names the Cloud Foundry CLI with the MTA plugin and a SAP Build Work Zone subscription for that path"},{"source":"artifact:sap-samples-cloud-sample-webhooks","target":"artifact:sap-cloud-connector","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-codejam-code-based-agents","target":"artifact:btp-ai-core","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-codejam-code-based-agents","target":"artifact:btp-business-application-studio","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-concur-joule-ips-jobs","target":"artifact:btp-cloud-identity-services","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-connecting-systems-services-integration-suite-codejam","target":"artifact:btp-integration-suite","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-digital-manufacturing-extension-samples","target":"external:sap-digital-manufacturing","kind":"requires","requirement":"required","role":"host-product"},{"source":"artifact:sap-samples-digital-manufacturing-extension-samples","target":"artifact:btp-cloud-integration","kind":"requires","requirement":"conditional","condition":"An integration extension sample is used."},{"source":"artifact:sap-samples-digital-manufacturing-extension-samples","target":"artifact:btp-destination","kind":"requires","requirement":"conditional","condition":"The dm-custom-api in-app service extension sample is deployed."},{"source":"artifact:sap-samples-digital-manufacturing-extension-samples","target":"artifact:btp-authorization-and-trust-management","kind":"requires","requirement":"conditional","condition":"The dm-custom-api in-app service extension sample is deployed."},{"source":"artifact:sap-samples-forms-service-by-adobe-samples","target":"artifact:btp-forms-service-by-adobe","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-generative-ai-codejam","target":"artifact:btp-ai-core","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-generative-ai-codejam","target":"artifact:btp-ai-launchpad","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-hana-cf-get-started-trial","target":"artifact:btp-hana-cloud","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-hana-cli-claude-plugin","target":"external:nodejs","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-hana-cloud-modeling-learning-journey","target":"artifact:btp-hana-cloud","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-hana-graph-examples","target":"artifact:btp-hana-cloud","kind":"requires"},{"source":"artifact:sap-samples-hana-ml-py-codejam","target":"artifact:btp-hana-cloud","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-hana-ml-py-codejam","target":"artifact:btp-business-application-studio","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-hana-ml-samples","target":"artifact:sap-hana","kind":"requires"},{"source":"artifact:sap-samples-hxe-hibernate-google-app-engine","target":"artifact:sap-hana","kind":"requires"},{"source":"artifact:sap-samples-integration-suite-partner-directory-accelerator-for-pipeline-concept","target":"external:jdk","kind":"requires"},{"source":"artifact:sap-samples-joule-a2a-agent-toolkit","target":"artifact:btp-destination","kind":"requires","requirement":"required","role":"destination"},{"source":"artifact:sap-samples-joule-a2a-agent-toolkit","target":"artifact:btp-authorization-and-trust-management","kind":"requires","requirement":"conditional","role":"authentication","condition":"the agent needs OAuth2 authentication"},{"source":"artifact:sap-samples-joule-a2a-agent-toolkit","target":"artifact:sap-joule-studio-cli","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:sap-samples-joule-a2a-agent-toolkit","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"required","role":"platform"},{"source":"artifact:sap-samples-joule-a2a-agent-toolkit","target":"artifact:btp-ai-core","kind":"requires","requirement":"required","role":"model-access"},{"source":"artifact:sap-samples-joule-a2a-agent-toolkit","target":"artifact:sap-cds-dk","kind":"requires","requirement":"conditional","role":"build","condition":"the CAP framework option is used"},{"source":"artifact:sap-samples-joule-studio-setup-terraform","target":"external:terraform","kind":"requires"},{"source":"artifact:sap-samples-joule-studio-setup-terraform","target":"artifact:sap-terraform-provider-btp","kind":"requires"},{"source":"artifact:sap-samples-joule-studio-setup-terraform","target":"artifact:btp-cloud-identity-services","kind":"requires"},{"source":"artifact:sap-samples-joule-studio-setup-terraform","target":"external:github","kind":"requires"},{"source":"artifact:sap-samples-liteinventorymanagement","target":"artifact:btp-postgresql-hyperscaler","kind":"requires"},{"source":"artifact:sap-samples-liteinventorymanagement","target":"artifact:btp-application-logging","kind":"requires"},{"source":"artifact:sap-samples-liteinventorymanagement","target":"artifact:btp-job-scheduling","kind":"requires"},{"source":"artifact:sap-samples-liteinventorymanagement","target":"artifact:btp-cloud-foundry-runtime","kind":"requires"},{"source":"artifact:sap-samples-partner-reference-application-extension","target":"artifact:sap-samples-partner-reference-application","kind":"requires"},{"source":"artifact:sap-samples-private-link-aws-services","target":"artifact:btp-private-link-service","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-private-link-aws-services","target":"external:jdk","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-s4hana-avc-ui-extension-template","target":"external:sap-s4hana","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-s4hana-avc-ui-extension-template","target":"external:nodejs","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-s4hana-avc-ui-extension-template","target":"artifact:sap-ui5-cli","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-s4hana-hana-audit-policies","target":"external:sap-s4hana","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-s4hana-hana-audit-policies","target":"artifact:sap-hana","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-sap-btp-ai-best-practices","target":"artifact:btp-ai-core","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-sap-genai-hub-with-sap-hana-cloud-vector-engine","target":"artifact:btp-hana-cloud","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-sap-rpt-samples","target":"artifact:btp-ai-core","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-slp-supplier-validation","target":"artifact:btp-postgresql-hyperscaler","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-slp-supplier-validation","target":"artifact:btp-application-logging","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-slp-supplier-validation","target":"artifact:btp-job-scheduling","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-slp-supplier-validation","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"required"},{"source":"artifact:sap-samples-smartrecruiters-ai-recruiting-custom-agent","target":"artifact:btp-ai-core","kind":"requires","requirement":"conditional","condition":"the agent's conversational answers; without SAP AI Core it falls back to keyword-based intent detection and template responses"},{"source":"artifact:sap-samples-tailspendmanagement","target":"artifact:btp-postgresql-hyperscaler","kind":"requires"},{"source":"artifact:sap-samples-tailspendmanagement","target":"artifact:btp-application-logging","kind":"requires"},{"source":"artifact:sap-samples-tailspendmanagement","target":"artifact:btp-job-scheduling","kind":"requires"},{"source":"artifact:sap-samples-tailspendmanagement","target":"artifact:btp-cloud-foundry-runtime","kind":"requires"},{"source":"artifact:sap-samples-teched2022-xp281","target":"artifact:btp-business-application-studio","kind":"requires"},{"source":"artifact:sap-samples-teched2022-xp281","target":"artifact:btp-alert-notification","kind":"requires"},{"source":"artifact:sap-samples-teched2022-xp281","target":"artifact:btp-automation-pilot","kind":"requires"},{"source":"artifact:sap-samples-teched2022-xp281","target":"artifact:btp-hana-cloud","kind":"requires"},{"source":"artifact:sap-samples-teched2023-da263","target":"artifact:btp-hana-cloud","kind":"requires"},{"source":"artifact:sap-samples-teched2023-da263","target":"artifact:btp-business-application-studio","kind":"requires"},{"source":"artifact:sap-samples-teched2023-dt187v","target":"artifact:btp-abap-environment","kind":"requires"},{"source":"artifact:sap-samples-teched2023-dt187v","target":"artifact:sap-adt-eclipse","kind":"requires"},{"source":"artifact:sap-samples-teched2023-xp185v","target":"artifact:btp-cloud-identity-services","kind":"requires"},{"source":"artifact:sap-samples-teched2024-in280","target":"artifact:btp-cloud-integration","kind":"requires"},{"source":"artifact:sap-samples-teched2024-xp280","target":"external:terraform","kind":"requires"},{"source":"artifact:sap-samples-teched2024-xp280","target":"artifact:sap-terraform-provider-btp","kind":"requires"},{"source":"artifact:sap-samples-teched2024-xp280","target":"external:docker","kind":"requires","requirement":"conditional","condition":"the recommended dev container tools option is used"},{"source":"artifact:sap-samples-teched2025-ad162","target":"artifact:sap-adt-eclipse","kind":"requires"},{"source":"artifact:sap-samples-teched2025-ad162","target":"artifact:btp-ai-core","kind":"requires"},{"source":"artifact:sap-samples-teched2025-ad162","target":"artifact:sap-samples-abap-platform-refscen-flight","kind":"requires"},{"source":"artifact:sap-samples-teched2025-ai160","target":"artifact:btp-ai-core","kind":"requires"},{"source":"artifact:sap-samples-teched2025-ai161","target":"artifact:btp-ai-launchpad","kind":"requires"},{"source":"artifact:sap-samples-teched2025-ai161","target":"artifact:btp-ai-core","kind":"requires"},{"source":"artifact:sap-samples-teched2025-ai163","target":"artifact:sap-joule-studio","kind":"requires"},{"source":"artifact:sap-samples-teched2025-ai163","target":"artifact:btp-ai-core","kind":"requires"},{"source":"artifact:sap-samples-teched2025-ai163","target":"artifact:btp-destination","kind":"requires"},{"source":"artifact:sap-samples-teched2025-ai165","target":"artifact:sap-joule-studio","kind":"requires"},{"source":"artifact:sap-samples-teched2025-ai165","target":"external:nodejs","kind":"requires"},{"source":"artifact:sap-samples-teched2025-cs261","target":"external:sap-cloud-alm","kind":"requires"},{"source":"artifact:sap-samples-teched2025-cs261","target":"artifact:btp-cloud-logging","kind":"requires"},{"source":"artifact:sap-samples-teched2025-da261","target":"artifact:btp-hana-cloud","kind":"requires"},{"source":"artifact:sap-samples-teched2025-da261","target":"artifact:btp-business-application-studio","kind":"requires"},{"source":"artifact:sap-samples-teched2025-da265","target":"artifact:btp-analytics-cloud","kind":"requires"},{"source":"artifact:sap-samples-teched2025-da265","target":"artifact:sap-joule-studio","kind":"requires"},{"source":"artifact:sap-samples-teched2025-da265","target":"artifact:btp-business-data-cloud","kind":"requires"},{"source":"artifact:sap-samples-teched2025-da265","target":"artifact:btp-datasphere","kind":"requires"},{"source":"artifact:sap-samples-teched2025-da266","target":"external:databricks","kind":"requires"},{"source":"artifact:sap-samples-teched2025-da266","target":"artifact:btp-business-data-cloud","kind":"requires"},{"source":"artifact:sap-samples-teched2025-da266","target":"artifact:btp-ai-core","kind":"requires"},{"source":"artifact:sap-samples-teched2025-da267","target":"artifact:btp-analytics-cloud","kind":"requires"},{"source":"artifact:sap-samples-teched2025-da267","target":"artifact:btp-datasphere","kind":"requires"},{"source":"artifact:sap-samples-teched2025-in161","target":"artifact:btp-integration-suite","kind":"requires"},{"source":"artifact:sap-samples-teched2025-in162","target":"artifact:btp-advanced-event-mesh","kind":"requires"},{"source":"artifact:sap-samples-teched2025-in162","target":"artifact:btp-integration-suite","kind":"requires"},{"source":"artifact:sap-samples-teched2025-in163","target":"artifact:btp-integration-suite","kind":"requires"},{"source":"artifact:sap-samples-teched2025-in163","target":"artifact:btp-advanced-event-mesh","kind":"requires"},{"source":"artifact:sap-samples-teched2025-xp261","target":"artifact:btp-cloud-identity-services","kind":"requires"},{"source":"artifact:sap-samples-teched2025-xp261","target":"external:sap-successfactors","kind":"requires"},{"source":"artifact:sap-samples-teched2025-xp263","target":"external:terraform","kind":"requires"},{"source":"artifact:sap-samples-teched2025-xp264","target":"artifact:btp-kyma-runtime","kind":"requires"},{"source":"artifact:sap-samples-teched2025-xp264","target":"artifact:btp-cloud-logging","kind":"requires"},{"source":"artifact:sap-samples-teched2025-xp265","target":"artifact:btp-cloud-foundry-runtime","kind":"requires"},{"source":"artifact:sap-samples-teched2025-xp265","target":"artifact:btp-cloud-logging","kind":"requires"},{"source":"artifact:sap-samples-teched2025-xp265","target":"external:sap-cloud-alm","kind":"requires"},{"source":"artifact:sap-samples-teched2025-xp267","target":"artifact:btp-automation-pilot","kind":"requires"},{"source":"artifact:sap-samples-teched2025-xp267","target":"external:sap-cloud-alm","kind":"requires"},{"source":"artifact:sap-samples-teched2025-xp267","target":"artifact:btp-ai-core","kind":"requires"},{"source":"artifact:sap-samples-ui5con-2026-a11y-hands-on","target":"external:nodejs","kind":"requires"},{"source":"artifact:sap-samples-ui5con-2026-chrome-built-in-ai","target":"external:nodejs","kind":"requires"},{"source":"artifact:sap-samples-ui5con-2026-fiori-building-blocks","target":"artifact:btp-business-application-studio","kind":"requires","requirement":"conditional","condition":"SAP Business Application Studio is the chosen environment; the README names a local installation of VS Code, Git and the latest SAP Fiori tools as the alternative."},{"source":"artifact:sap-samples-wdf2025-fiori-innov-day-building-blocks","target":"artifact:btp-business-application-studio","kind":"requires"},{"source":"artifact:sap-samples-xsa-cap-migration-using-basextn","target":"artifact:sap-cloud-connector","kind":"requires"},{"source":"artifact:sap-samples-xsa-cap-migration-using-basextn","target":"artifact:btp-hana-cloud","kind":"requires"},{"source":"artifact:sap-samples-xsa-cap-migration-using-basextn","target":"artifact:btp-business-application-studio","kind":"requires","requirement":"conditional","condition":"SAP Business Application Studio is the chosen platform; the README also names SAP Build, which its service-layer conversion requires, and Visual Studio Code in vscode.md."},{"source":"artifact:sap-samples-xsa-cap-migration","target":"artifact:sap-cds-dk","kind":"requires"},{"source":"artifact:sap-samples-xsa-cap-migration","target":"artifact:sap-cds-compiler","kind":"requires"},{"source":"artifact:sap-samples-xsa-cap-migration","target":"artifact:btp-hana-cloud","kind":"requires"},{"source":"artifact:sap-samples-xsa-cap-migration","target":"artifact:sap-hdi-deploy","kind":"requires","requirement":"conditional","condition":"the deployments are done with the HDI Deployer module; the guide names an MTA deployment as the alternative."},{"source":"artifact:sap-samples-xsc-cap-migration","target":"artifact:sap-cloud-connector","kind":"requires"},{"source":"artifact:sap-samples-xsc-cap-migration","target":"artifact:btp-hana-cloud","kind":"requires"},{"source":"artifact:sap-samples-xsc-cap-migration","target":"artifact:btp-business-application-studio","kind":"requires","requirement":"conditional","condition":"SAP Business Application Studio is the chosen platform; the README also names SAP Build, which its service-layer conversion requires, and Visual Studio Code in vscode.md."},{"source":"artifact:sap-samples-xsc-to-native-hana-cloud","target":"artifact:sap-cloud-connector","kind":"requires"},{"source":"artifact:sap-samples-xsc-to-native-hana-cloud","target":"artifact:btp-hana-cloud","kind":"requires"},{"source":"artifact:sap-samples-xsc-to-native-hana-cloud","target":"artifact:btp-business-application-studio","kind":"requires","requirement":"conditional","condition":"SAP Business Application Studio is the chosen platform; the Requirements list also names SAP Build."},{"source":"artifact:sap-samples-xsc-xsa-migration","target":"artifact:sap-cloud-connector","kind":"requires"},{"source":"artifact:sap-samples-xsc-xsa-migration","target":"artifact:btp-business-application-studio","kind":"requires"},{"source":"artifact:sap-terraform-provider-btp","target":"external:terraform","kind":"requires","requirement":"required"},{"source":"artifact:sap-ux-cds-odata-language-server-extension","target":"artifact:sap-vscode-cds","kind":"requires","requirement":"required"},{"source":"artifact:sap-vscode-ui5-language-assistant","target":"artifact:sap-cds","kind":"requires","requirement":"conditional","condition":"the workspace is a CAP project"},{"source":"artifact:sap-xssec","target":"artifact:btp-authorization-and-trust-management","kind":"requires"},{"source":"artifact:sap-xssec","target":"artifact:btp-cloud-identity-services","kind":"requires"},{"source":"artifact:sap2moose-sap2moose","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"conditional","role":"installation","condition":"installing the coding in a local system to develop it, in package Z2MSE; the extractor itself is installed by pasting z_moose_extractor.abap into a new program"},{"source":"artifact:sapmentors-cds-pg","target":"external:postgresql","kind":"requires"},{"source":"artifact:sapmentors-cds-pg","target":"artifact:btp-postgresql-hyperscaler","kind":"available_via"},{"source":"artifact:sapmentors-cds-scp-api","target":"artifact:btp-destination","kind":"requires","requirement":"required"},{"source":"artifact:sapmentors-cds-scp-api","target":"artifact:btp-connectivity","kind":"requires","requirement":"conditional","condition":"the destination is an on-premise one reached through the Cloud Connector"},{"source":"artifact:sapmentors-cds-scp-api","target":"external:axios","kind":"requires","requirement":"required"},{"source":"artifact:saptarishi-cds-plugin-llm","target":"artifact:btp-ai-core","kind":"requires","requirement":"conditional","role":"model-provider","condition":"The llm-genai-hub kind is configured; the other ten kinds reach their own provider with their own key."},{"source":"artifact:saptarishi-cds-plugin-vector-hana","target":"artifact:btp-hana-cloud","kind":"requires","requirement":"conditional","role":"vector-store","condition":"The HanaVectorStore backend is used; the SQLite backend runs without it."},{"source":"artifact:saptools-bruno","target":"artifact:saptools-cf-xsuaa","kind":"requires","requirement":"required"},{"source":"artifact:saptools-bruno","target":"artifact:saptools-cf-sync","kind":"requires","requirement":"required"},{"source":"artifact:saptools-bruno","target":"external:nodejs","kind":"requires","requirement":"required"},{"source":"artifact:saptools-cf-debugger","target":"external:nodejs","kind":"requires","requirement":"required"},{"source":"artifact:saptools-cf-debugger","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"required"},{"source":"artifact:saptools-cf-explorer","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"required"},{"source":"artifact:saptools-cf-function-trace","target":"artifact:saptools-cf-inspector","kind":"requires","requirement":"required"},{"source":"artifact:saptools-cf-function-trace","target":"external:nodejs","kind":"requires","requirement":"required"},{"source":"artifact:saptools-cf-hana","target":"artifact:btp-hana-cloud","kind":"requires","requirement":"required"},{"source":"artifact:saptools-cf-hana","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"required"},{"source":"artifact:saptools-cf-hana","target":"external:nodejs","kind":"requires","requirement":"required"},{"source":"artifact:saptools-cf-inspector","target":"artifact:saptools-cf-debugger","kind":"requires","requirement":"required"},{"source":"artifact:saptools-cf-inspector","target":"external:nodejs","kind":"requires","requirement":"required"},{"source":"artifact:saptools-cf-live-trace","target":"artifact:saptools-cf-inspector","kind":"requires","requirement":"required"},{"source":"artifact:saptools-cf-live-trace","target":"external:nodejs","kind":"requires","requirement":"required"},{"source":"artifact:saptools-cf-live-trace","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"required"},{"source":"artifact:saptools-cf-logs","target":"external:nodejs","kind":"requires"},{"source":"artifact:saptools-cf-metrics","target":"artifact:btp-cloud-logging","kind":"requires"},{"source":"artifact:saptools-cf-otel","target":"artifact:btp-cloud-logging","kind":"requires"},{"source":"artifact:saptools-cf-sync","target":"artifact:btp-cloud-foundry-runtime","kind":"requires","requirement":"required"},{"source":"artifact:saptools-cf-sync","target":"external:nodejs","kind":"requires","requirement":"required"},{"source":"artifact:saptools-cf-tail","target":"artifact:saptools-cf-logs","kind":"requires"},{"source":"artifact:saptools-cf-tail","target":"external:nodejs","kind":"requires"},{"source":"artifact:saptools-cf-xsuaa","target":"artifact:btp-authorization-and-trust-management","kind":"requires","requirement":"required"},{"source":"artifact:saptools-cf-xsuaa","target":"artifact:saptools-cf-sync","kind":"requires","requirement":"required"},{"source":"artifact:saptools-cf-xsuaa","target":"external:nodejs","kind":"requires","requirement":"required"},{"source":"artifact:saptools-sqltools","target":"artifact:btp-hana-cloud","kind":"requires","requirement":"required"},{"source":"artifact:saptools-sqltools","target":"external:nodejs","kind":"requires","requirement":"required"},{"source":"artifact:satiroglu-kaev","target":"artifact:ui5-linter","kind":"requires","requirement":"required"},{"source":"artifact:sbcgua-abap-gui-boilerplate","target":"artifact:sbcgua-abap-mustache","kind":"requires","requirement":"conditional","condition":"the ZGUIBP_EXAMPLE_MSTSH example program is compiled"},{"source":"artifact:sbcgua-abap-gui-boilerplate","target":"artifact:abapgit-abapgit","kind":"lineage"},{"source":"artifact:sbcgua-ajson","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:sbcgua-mockup-loader","target":"artifact:sbcgua-text2tab","kind":"requires","requirement":"required"},{"source":"artifact:sbcgua-mockup-loader","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:secondsky-sap-skills","target":"artifact:cap-js-mcp-server","kind":"requires","requirement":"conditional","condition":"the sap-cap-capire plugin is used in a client that activates the MCP server its .mcp.json registers; in a client that does not, the README says that file is a connection recipe to configure by hand"},{"source":"artifact:secondsky-sap-skills","target":"artifact:ui5-mcp-server","kind":"requires","requirement":"conditional","condition":"the sapui5 plugin is used in a client that activates the MCP server its .mcp.json registers; in a client that does not, the README says that file is a connection recipe to configure by hand"},{"source":"artifact:secondsky-sap-skills","target":"artifact:sap-ux-fiori-mcp-server","kind":"requires","requirement":"conditional","condition":"the sap-fiori-tools plugin is used in a client that activates the MCP server its .mcp.json registers; in a client that does not, the README says that file is a connection recipe to configure by hand"},{"source":"artifact:secondsky-sap-skills","target":"artifact:hatrigt-hana-mcp-server","kind":"requires","requirement":"conditional","condition":"the sap-hana-cli plugin is used in a client that activates the MCP server its .mcp.json registers; in a client that does not, the README says that file is a connection recipe to configure by hand"},{"source":"artifact:secondsky-sap-skills","target":"artifact:mariodefelipe-sap-datasphere-mcp","kind":"requires","requirement":"conditional","condition":"the sap-datasphere plugin is used in a client that activates the MCP server its .mcp.json registers; in a client that does not, the README says that file is a connection recipe to configure by hand"},{"source":"artifact:shahid-la-cds-db-nlquery-mcp","target":"artifact:sap-cds","kind":"requires","requirement":"required","role":"cap-runtime"},{"source":"artifact:silvius1996-claude-sap-kit","target":"artifact:arc-mcp-arc-1","kind":"requires","requirement":"required"},{"source":"artifact:silvius1996-claude-sap-kit","target":"external:sap-s4hana","kind":"requires","requirement":"conditional","role":"runtime-system","condition":"the SAP system is S/4HANA (on-premise or private cloud edition), as an alternative to ECC 6.0 EHP8"},{"source":"artifact:silvius1996-claude-sap-kit","target":"external:sap-erp","kind":"requires","requirement":"conditional","role":"runtime-system","condition":"the SAP system is ECC 6.0 EHP8, as an alternative to S/4HANA"},{"source":"artifact:skybuffer-ai-mcp-server","target":"external:abap-platform","kind":"requires","requirement":"required","role":"runtime"},{"source":"artifact:sleibach-cap-collaborative-draft","target":"artifact:cap-js-community-websocket","kind":"requires","requirement":"conditional","role":"presence-relay","condition":"Real-time presence, participant avatars and field-lock indicators in the Fiori elements UI."},{"source":"artifact:sleibach-cap-companion","target":"artifact:sap-cds","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:sleibach-cap-companion","target":"external:sap-companion","kind":"requires","requirement":"required","role":"help-runtime"},{"source":"artifact:sleibach-cap-companion","target":"artifact:sap-approuter","kind":"requires","requirement":"conditional","role":"routing","condition":"the Fiori application is deployed rather than run locally with cds watch"},{"source":"artifact:sleibach-cap-mcp-plugin","target":"artifact:cap-js-mcp","kind":"alternative_to"},{"source":"artifact:sleibach-cap-mcp-plugin","target":"artifact:gavdi-cap-mcp","kind":"alternative_to"},{"source":"artifact:sleibach-cap-ui-telemetry","target":"artifact:btp-cloud-logging","kind":"requires","requirement":"conditional","role":"log-sink","condition":"The custom fields of the FESR and error records are to be indexed, which is what the README names the binding for."},{"source":"artifact:sonnyfrenzel-rgb-clean-core-io","target":"external:google-gemini","kind":"requires","requirement":"conditional","condition":"the account's five free analysis runs and first starter-example runs are used up"},{"source":"artifact:sonnyfrenzel-rgb-clean-core-io","target":"artifact:sap-abap-atc-cr-cv-s4hc","kind":"requires","requirement":"required","role":"grading-source"},{"source":"artifact:soontao-cds-mysql","target":"artifact:cap-js-hana","kind":"alternative_to"},{"source":"artifact:soontao-cds-nats","target":"external:nats","kind":"requires"},{"source":"artifact:spreadsheetimporter-sample-full-btp","target":"artifact:spreadsheetimporter-ui5-cc-spreadsheetimporter","kind":"requires","requirement":"required"},{"source":"artifact:spreadsheetimporter-sample-odata-api-upload","target":"artifact:spreadsheetimporter-ui5-cc-spreadsheetimporter","kind":"requires","requirement":"required"},{"source":"artifact:spreadsheetimporter-ui5-task-btp-manifest","target":"artifact:spreadsheetimporter-ui5-cc-spreadsheetimporter","kind":"requires","requirement":"required"},{"source":"artifact:striezl-variscan","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:tiagobalmeida-openui5-camera","target":"artifact:openui5-core","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:tklein1801-cap-js-attachments","target":"artifact:btp-object-store","kind":"requires","requirement":"conditional","role":"attachment-storage","condition":"SAP Object Store storage is selected."},{"source":"artifact:tklein1801-cap-js-attachments","target":"artifact:btp-malware-scanning","kind":"requires","requirement":"conditional","role":"attachment-scanning","condition":"Malware scanning is enabled."},{"source":"artifact:tklein1801-cap-js-attachments","target":"artifact:cap-js-attachments","kind":"lineage"},{"source":"artifact:tobiashofmann-adt-bundle-builder","target":"artifact:sap-adt-eclipse","kind":"requires","requirement":"required"},{"source":"artifact:tobiashofmann-adt-bundle-builder","target":"external:eclipse","kind":"requires","requirement":"required"},{"source":"artifact:tobiashofmann-adt-bundle-builder","target":"external:nodejs","kind":"requires","requirement":"required"},{"source":"artifact:tobiashofmann-off-stack-abap","target":"artifact:abaplint-abaplint","kind":"requires","requirement":"required"},{"source":"artifact:tobiashofmann-off-stack-abap","target":"external:nodejs","kind":"requires","requirement":"required"},{"source":"artifact:tobiashofmann-pam-mcp-server","target":"external:sap-product-availability-matrix","kind":"requires","requirement":"required"},{"source":"artifact:tobiashofmann-sap-support-radar","target":"external:sap-product-availability-matrix","kind":"requires","requirement":"required"},{"source":"artifact:tobiashofmann-sap-support-radar","target":"artifact:openui5-core","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:ui5-community-create-easy-ui5","target":"artifact:ui5-community-generator-easy-ui5","kind":"requires"},{"source":"artifact:ui5-community-create-wdi5","target":"artifact:ui5-community-wdi5","kind":"requires"},{"source":"artifact:ui5-community-dev-approuter","target":"artifact:sap-approuter","kind":"requires"},{"source":"artifact:ui5-community-generator-ui5-library","target":"artifact:ui5-community-generator-easy-ui5","kind":"requires","requirement":"conditional","condition":"run through Easy-UI5 rather than standalone as `yo ./generator-ui5-library`"},{"source":"artifact:ui5-community-generator-ui5-project","target":"artifact:ui5-community-generator-easy-ui5","kind":"requires","requirement":"conditional","condition":"run through Easy-UI5 rather than from a clone, as the README's debugging section does with `yo ./generators/project`"},{"source":"artifact:ui5-community-generator-ui5-ts-app-fcl","target":"artifact:ui5-community-generator-easy-ui5","kind":"requires","requirement":"conditional","condition":"run through Easy-UI5 rather than standalone as `yo ./generator-ui5-ts-app-fcl`"},{"source":"artifact:ui5-community-generator-ui5-ts-library","target":"artifact:ui5-community-generator-easy-ui5","kind":"requires","requirement":"conditional","condition":"run through Easy-UI5 rather than standalone as `yo ./generator-ui5-ts-library`"},{"source":"artifact:ui5-community-generator-ui5-wdi5","target":"artifact:ui5-community-create-wdi5","kind":"requires"},{"source":"artifact:ui5-community-generator-ui5-wdi5","target":"artifact:ui5-community-generator-easy-ui5","kind":"requires","requirement":"conditional","condition":"run as `yo easy-ui5 wdi5` rather than from the UI5 JS app or UI5 TS app generator, which the README says have it integrated"},{"source":"artifact:ui5-community-jsx-runtime-helloworld","target":"artifact:ui5-community-jsx-runtime","kind":"requires","requirement":"required","role":"consumed-library"},{"source":"artifact:ui5-community-jsx-runtime-showcase","target":"artifact:ui5-community-jsx-runtime","kind":"requires","requirement":"required","role":"demonstrated-library"},{"source":"artifact:ui5-community-jsx-runtime","target":"artifact:ui5-community-ui5-tooling-transpile","kind":"requires","requirement":"required","role":"transpiler"},{"source":"artifact:ui5-community-jsx-runtime","target":"external:babel-plugin-transform-react-jsx","kind":"requires","requirement":"required","role":"jsx-transform"},{"source":"artifact:ui5-community-jsx-runtime","target":"artifact:openui5-core","kind":"requires","requirement":"required","role":"framework"},{"source":"artifact:ui5-community-karma-ui5-transpile","target":"artifact:ui5-community-ui5-tooling-transpile","kind":"requires"},{"source":"artifact:ui5-community-showcase-approuter","target":"artifact:ui5-community-dev-approuter","kind":"requires","requirement":"required","role":"demonstrated-tool"},{"source":"artifact:ui5-community-showcase-approuter","target":"artifact:sap-approuter","kind":"requires","requirement":"required"},{"source":"artifact:ui5-community-showcase-ui5-bookshop-viewer","target":"artifact:ui5-community-ui5-middleware-cap","kind":"requires","requirement":"required","role":"demonstrated-tool"},{"source":"artifact:ui5-community-showcase-ui5-bookshop-viewer","target":"artifact:ui5-community-showcase-cds-bookshop","kind":"requires","requirement":"required"},{"source":"artifact:ui5-community-showcase-ui5-tsapp-webc","target":"artifact:ui5-webcomponents","kind":"requires","requirement":"required"},{"source":"artifact:ui5-community-ui5-cc-chart","target":"artifact:ui5-community-ui5-tooling-modules","kind":"requires"},{"source":"artifact:ui5-community-ui5-middleware-approuter","target":"artifact:sap-approuter","kind":"requires"},{"source":"artifact:ui5-community-ui5-middleware-cap","target":"artifact:sap-cds","kind":"requires","requirement":"required"},{"source":"artifact:ui5-community-ui5-middleware-cap","target":"artifact:sap-ui5-cli","kind":"requires","requirement":"required"},{"source":"artifact:ui5-community-ui5-middleware-cap","target":"artifact:ui5-community-cds-plugin-ui5","kind":"alternative_to"},{"source":"artifact:ui5-community-ui5-webcomponents-bundle","target":"artifact:ui5-webcomponents","kind":"requires","requirement":"required"},{"source":"artifact:ui5-middleware-code-coverage","target":"artifact:sap-ui5-cli","kind":"requires","requirement":"required"},{"source":"artifact:vaibhavgoel-github-1986-abap-adt-cli","target":"external:sap-s4hana","kind":"requires","requirement":"required","role":"target-system"},{"source":"artifact:valdirmendesdev-abap-json-encoder-decoder","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:vcd94xt10z-forsap-s4hana-private-simulator","target":"artifact:cap-js-community-odata-v2-adapter","kind":"requires"},{"source":"artifact:victorizbitskiy-zconcurrency-api","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:vlutsas-dst","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required","role":"installation"},{"source":"artifact:vneecious-sap-cap-sdm-plugin","target":"artifact:btp-document-management-integration","kind":"requires","requirement":"required","role":"attachment-storage"},{"source":"artifact:watson-developer-cloud-abap-sdk-nwas","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:weiserman-rap-skills","target":"artifact:btp-abap-environment","kind":"requires","requirement":"conditional","role":"target-system","condition":"main branch (BTP managed, the default)"},{"source":"artifact:weiserman-rap-skills","target":"artifact:oisee-vibing-steampunk","kind":"requires","requirement":"required","role":"mcp-server"},{"source":"artifact:wozjac-abap-sencha","target":"artifact:dominikpanzer-cacamber-bdd-for-abap","kind":"alternative_to"},{"source":"artifact:wozjac-abap-sencha","target":"artifact:abapify-assert","kind":"alternative_to"},{"source":"artifact:xbergun-cap-mock-generator","target":"artifact:mauriciolauffer-cap-js-mockdata","kind":"alternative_to"},{"source":"artifact:xexer-abap-ccm","target":"artifact:sap-cloud-connector","kind":"requires","requirement":"conditional","condition":"the Level A and Key User object numbers are extracted from an on-premise system"},{"source":"artifact:xexer-cloudification-repository-viewer","target":"artifact:sap-abap-atc-cr-cv-s4hc","kind":"requires","requirement":"required"},{"source":"artifact:xexer-my-ide-actions","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"artifact:xexer-my-ide-actions","target":"artifact:sap-adt-eclipse","kind":"requires","requirement":"required"},{"source":"artifact:xinitrc86-adash-services","target":"artifact:larshp-abap-swagger","kind":"requires","requirement":"required"},{"source":"artifact:xinitrc86-adash-services","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:yannick-thirion-klystron","target":"external:abap-platform","kind":"requires","requirement":"required","role":"runtime"},{"source":"artifact:yassinbahri-pyrfc-mcp","target":"external:sap-nw-rfc-sdk","kind":"requires","requirement":"conditional","condition":"a real SAP system is called; demo mode replaces the SAP transport with a synthetic backend"},{"source":"artifact:yassinbahri-pyrfc-mcp","target":"external:pyrfc","kind":"requires","requirement":"conditional","condition":"a real SAP system is called; demo mode replaces the SAP transport with a synthetic backend"},{"source":"artifact:yassinbahri-sap-knowledge-pipeline","target":"external:fastembed","kind":"requires","requirement":"conditional","condition":"the optional local embedding path is installed with the `[fastembed]` extra; the library itself computes no embeddings"},{"source":"artifact:yassinbahri-sap-knowledge-pipeline","target":"external:qdrant","kind":"requires","requirement":"conditional","condition":"the optional local index is used as the sink; the README states it is intended for development and smaller indexes"},{"source":"artifact:ysichov-abap-ai-code-tools","target":"artifact:ysichov-abap-ai-code","kind":"requires"},{"source":"artifact:ysichov-abap-ai-code","target":"artifact:abapgit-abapgit","kind":"requires"},{"source":"artifact:ysichov-ace","target":"artifact:ysichov-smart-debugger","kind":"lineage"},{"source":"artifact:ysichov-smart-debugger","target":"artifact:ysichov-abap-ai-code","kind":"requires"},{"source":"artifact:ysichov-vertex","target":"artifact:ysichov-simple-data-explorer","kind":"requires"},{"source":"artifact:ysichov-vertex","target":"artifact:ysichov-ave","kind":"requires"},{"source":"artifact:ysichov-vertex","target":"artifact:ysichov-ace","kind":"requires"},{"source":"artifact:ysichov-vertex","target":"artifact:sap-adt","kind":"requires"},{"source":"artifact:ysichov-vertex","target":"artifact:sap-adt-eclipse","kind":"requires"},{"source":"artifact:zedwin-ztct","target":"artifact:abapgit-abapgit","kind":"requires","requirement":"required"},{"source":"content:050-clean-core-measurement-preview","target":"capability:abap-cloud-readiness","kind":"explains"},{"source":"content:051-abap-cleaner-in-vs-code-installation-and-guide","target":"capability:abap-clean-code","kind":"explains"},{"source":"content:052-10-minutes-from-start-to-launchpad","target":"capability:data-modelling","kind":"explains"},{"source":"content:052-10-minutes-from-start-to-launchpad","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:a-25x-faster-mta-yaml-build-for-cap-nodejs","target":"capability:deployment","kind":"explains"},{"source":"content:a-cap-plugin-for-flexible-number-range-management","target":"artifact:abdulbasitg-cds-numberrange-plugin","kind":"explains"},{"source":"content:a-cap-plugin-for-flexible-number-range-management","target":"capability:data-modelling","kind":"explains"},{"source":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-1","target":"artifact:mikezaschka-cap-ui5-gpt-chat","kind":"explains"},{"source":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-1","target":"capability:llm-integration","kind":"explains"},{"source":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-2","target":"artifact:mikezaschka-cap-ui5-gpt-chat","kind":"explains"},{"source":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-2","target":"capability:llm-integration","kind":"explains"},{"source":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-3","target":"artifact:mikezaschka-cap-ui5-gpt-chat","kind":"explains"},{"source":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-3","target":"capability:llm-integration","kind":"explains"},{"source":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-3","target":"capability:ui5-typescript","kind":"explains"},{"source":"content:a-clearer-view-of-your-sap-integrations-under-the-new-api-policy","target":"artifact:marianfoo-sap-api-policy-skill","kind":"explains"},{"source":"content:a-cross-application-fiori-app-to-print-adobe-forms","target":"capability:document-output","kind":"explains"},{"source":"content:a-fiori-launchpad-sandbox-for-all-your-cap-based-projects-overview","target":"artifact:geert-janklaps-cds-launchpad-plugin","kind":"explains"},{"source":"content:a-fiori-launchpad-sandbox-for-all-your-cap-based-projects-overview","target":"capability:local-development","kind":"explains"},{"source":"content:a-fiori-launchpad-sandbox-sample-project-setup","target":"artifact:geert-janklaps-cds-launchpad-plugin","kind":"explains"},{"source":"content:a-fiori-launchpad-sandbox-sample-project-setup","target":"capability:local-development","kind":"explains"},{"source":"content:a-guide-to-cds-metadata-extensions-fiori-app-generation-and-sap-ui5-controller-e","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:a-guide-to-cds-metadata-extensions-fiori-app-generation-and-sap-ui5-controller-e","target":"capability:odata","kind":"explains"},{"source":"content:a-handy-custom-report-to-scan-sap-cds-views-for-usage-of-search-strings","target":"capability:code-search","kind":"explains"},{"source":"content:a-major-hana-cli-version-built-with-the-help-of-ai","target":"capability:agent-guidance","kind":"explains"},{"source":"content:a-method-to-create-an-adobe-form-attachment-for-a-work-item-using-the-class-conc","target":"capability:document-output","kind":"explains"},{"source":"content:a-method-to-create-an-adobe-form-attachment-for-a-work-item-using-the-class-conc","target":"capability:attachments","kind":"explains"},{"source":"content:a-modern-workflow-for-sap-cloud-integration-with-cap-and-azure-devops","target":"capability:workflow-integration","kind":"explains"},{"source":"content:a-modern-workflow-for-sap-cloud-integration-with-cap-and-azure-devops","target":"capability:deployment","kind":"explains"},{"source":"content:a-natural-choice-sap-aif-can-now-expose-events-to-advanced-event-mesh-to-power-y","target":"capability:event-mesh","kind":"explains"},{"source":"content:a-practical-real-time-cti-widget-for-sap-sales-cloud-v2","target":"capability:websocket","kind":"explains"},{"source":"content:a-simple-example-of-a-sap-rap-application-based-on-legacy-api-without-uuid-keys","target":"capability:abap-transactional-model","kind":"explains"},{"source":"content:a-simple-example-of-a-sap-rap-application-based-on-legacy-api-without-uuid-keys","target":"capability:draft-handling","kind":"explains"},{"source":"content:abap-and-agentic-ai-the-hidden-problem-in-real-projects","target":"capability:agent-code-access","kind":"explains"},{"source":"content:abap-and-agentic-ai-the-hidden-problem-in-real-projects","target":"capability:tool-governance","kind":"explains"},{"source":"content:abap-cloud-logger","target":"capability:logging","kind":"explains"},{"source":"content:abap-code-to-wait-for-the-end-of-inbound-bgrfc-type-q-units","target":"capability:async-processing","kind":"explains"},{"source":"content:abap-create-dump","target":"capability:debugging","kind":"explains"},{"source":"content:abap-development-automation-with-arc-1-and-github-workflows","target":"artifact:arc-mcp-arc-1","kind":"explains"},{"source":"content:abap-development-automation-with-arc-1-and-github-workflows","target":"capability:abap-code-review","kind":"explains"},{"source":"content:abap-development-automation-with-arc-1-and-github-workflows","target":"capability:abap-static-analysis","kind":"explains"},{"source":"content:abap-development-tools-for-visual-studio-code-is-now-available-on-the-vs-code-ma","target":"capability:editor-support","kind":"explains"},{"source":"content:abap-development-tools-for-visual-studio-code-is-now-available-on-the-vs-code-ma","target":"capability:mcp-servers","kind":"explains"},{"source":"content:abap-development-tools-for-visual-studio-code-is-now-available-on-the-vs-code-ma","target":"capability:agent-guidance","kind":"explains"},{"source":"content:abap-development-tools-for-visual-studio-code-patch-1-0-1-released","target":"capability:agent-guidance","kind":"explains"},{"source":"content:abap-development-tools-for-visual-studio-code-version-1-1-released","target":"artifact:sap-adt-mcp-server","kind":"explains"},{"source":"content:abap-development-tools-for-visual-studio-code-version-1-1-released","target":"capability:agent-code-access","kind":"explains"},{"source":"content:abap-development-under-the-clean-core-paradigm-from-bapis-to-bo-and-cds","target":"capability:abap-cloud-readiness","kind":"explains"},{"source":"content:abap-in-practice-creating-a-setup-app","target":"capability:abap-transactional-model","kind":"explains"},{"source":"content:abap-mcp-let-ai-do-real-development-in-your-sap-system","target":"capability:agent-code-access","kind":"explains"},{"source":"content:abap-mcp-let-ai-do-real-development-in-your-sap-system","target":"capability:tool-governance","kind":"explains"},{"source":"content:abap-mcp-let-ai-do-real-development-in-your-sap-system","target":"artifact:abap-adt-api","kind":"explains"},{"source":"content:abap-mcp-let-ai-do-real-development-in-your-sap-system","target":"artifact:marianfoo-abap-docs","kind":"explains"},{"source":"content:abap-s-parallel-processing-frameworks-practical-guide-to-performance-tuning-of-m","target":"capability:parallel-processing","kind":"explains"},{"source":"content:ac-agentic-ai-and-ai-agents","target":"capability:agent-tooling","kind":"explains"},{"source":"content:ac-agentic-ai-and-ai-agents","target":"capability:mcp-servers","kind":"explains"},{"source":"content:ac-agentic-ai-and-ai-agents","target":"capability:tool-governance","kind":"explains"},{"source":"content:ac-agentic-ai-and-ai-agents","target":"capability:authentication","kind":"explains"},{"source":"content:ac-agentic-engineering-for-sap-btp-extensions","target":"capability:agent-code-access","kind":"explains"},{"source":"content:ac-agentic-engineering-for-sap-btp-extensions","target":"capability:tool-governance","kind":"explains"},{"source":"content:ac-agentic-engineering-for-sap-btp-extensions","target":"capability:agent-guidance","kind":"explains"},{"source":"content:ac-ai-native-north-star-architecture","target":"capability:agent-tooling","kind":"explains"},{"source":"content:ac-ai-native-north-star-architecture","target":"capability:mcp-servers","kind":"explains"},{"source":"content:ac-api-managed-integration","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:ac-application-to-application-integration","target":"capability:integration-flows","kind":"explains"},{"source":"content:ac-application-to-application-integration","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:ac-business-to-business-integration","target":"capability:integration-flows","kind":"explains"},{"source":"content:ac-business-to-business-integration","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:ac-connect-business-processes-with-sap-master-data-integration","target":"capability:integration-flows","kind":"explains"},{"source":"content:ac-connect-business-processes-with-sap-master-data-integration","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:ac-designing-event-driven-applications","target":"capability:event-mesh","kind":"explains"},{"source":"content:ac-devops-with-sap-btp","target":"capability:deployment","kind":"explains"},{"source":"content:ac-devops-with-sap-btp","target":"capability:ci-cd","kind":"explains"},{"source":"content:ac-edge-integration-cell-on-hyperscalers","target":"capability:integration-flows","kind":"explains"},{"source":"content:ac-edge-integration-cell-on-hyperscalers","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:ac-establish-a-central-entry-point-with-sap-build-work-zone","target":"artifact:btp-build-work-zone-standard","kind":"explains"},{"source":"content:ac-establish-a-central-entry-point-with-sap-build-work-zone","target":"artifact:btp-build-work-zone-advanced","kind":"explains"},{"source":"content:ac-establish-a-central-entry-point-with-sap-build-work-zone","target":"capability:launchpad-content","kind":"explains"},{"source":"content:ac-establish-a-central-inbox-with-sap-task-center","target":"artifact:btp-task-center","kind":"explains"},{"source":"content:ac-establish-a-central-inbox-with-sap-task-center","target":"capability:task-uis","kind":"explains"},{"source":"content:ac-explore-your-hyperscaler-data-with-sap-business-data-cloud","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:ac-explore-your-hyperscaler-data-with-sap-business-data-cloud","target":"artifact:btp-datasphere","kind":"explains"},{"source":"content:ac-explore-your-hyperscaler-data-with-sap-business-data-cloud","target":"capability:warehouse-loading","kind":"explains"},{"source":"content:ac-federated-machine-learning-with-sap-datasphere","target":"capability:predictive-models","kind":"explains"},{"source":"content:ac-federated-machine-learning-with-sap-datasphere","target":"artifact:btp-datasphere","kind":"explains"},{"source":"content:ac-generative-ai-on-sap-btp","target":"capability:llm-integration","kind":"explains"},{"source":"content:ac-generative-ai-on-sap-btp","target":"capability:retrieval-augmented-generation","kind":"explains"},{"source":"content:ac-hana-ai-toolkit-local-mcp-server","target":"capability:mcp-servers","kind":"explains"},{"source":"content:ac-hana-ai-toolkit-local-mcp-server","target":"capability:tool-governance","kind":"explains"},{"source":"content:ac-integrate-and-extend-with-sap-build-process-automation","target":"artifact:btp-build-process-automation","kind":"explains"},{"source":"content:ac-integrate-and-extend-with-sap-build-process-automation","target":"capability:process-automation","kind":"explains"},{"source":"content:ac-integrating-and-extending-joule","target":"artifact:sap-joule","kind":"explains"},{"source":"content:ac-integrating-and-extending-joule","target":"artifact:sap-joule-studio-classic","kind":"explains"},{"source":"content:ac-integrating-and-extending-joule","target":"capability:agent-tooling","kind":"explains"},{"source":"content:ac-integrating-and-extending-joule","target":"capability:authentication","kind":"explains"},{"source":"content:ac-medallion-reference-architecture-for-big-data-processing-in-sap-hana-cloud","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:ac-medallion-reference-architecture-for-big-data-processing-in-sap-hana-cloud","target":"capability:warehouse-loading","kind":"explains"},{"source":"content:ac-multi-region-ha-dr-resiliency-patterns","target":"capability:deployment","kind":"explains"},{"source":"content:ac-multitenant-saas-application-using-cap","target":"capability:multitenancy","kind":"explains"},{"source":"content:ac-multitenant-saas-application-using-cap","target":"capability:tenant-extensibility","kind":"explains"},{"source":"content:ac-sap-document-ai","target":"artifact:btp-document-ai","kind":"explains"},{"source":"content:ac-sap-document-ai","target":"capability:document-extraction","kind":"explains"},{"source":"content:ac-sap-hana-cloud-as-an-esri-geodatabase","target":"capability:multi-model-data","kind":"explains"},{"source":"content:ac-sap-hana-cloud-as-an-esri-geodatabase","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:ac-sap-iam-integration-with-sap-cloud-identity-services","target":"capability:authentication","kind":"explains"},{"source":"content:ac-sap-iam-integration-with-sap-cloud-identity-services","target":"capability:authorization","kind":"explains"},{"source":"content:ac-secure-service-consumption-across-hyperscalers","target":"capability:authentication","kind":"explains"},{"source":"content:ac-secure-service-consumption-across-hyperscalers","target":"artifact:btp-cloud-identity-services","kind":"explains"},{"source":"content:ac-secure-service-consumption-across-hyperscalers","target":"artifact:btp-destination","kind":"explains"},{"source":"content:ac-third-party-mcp-server-access-to-sap-solutions-on-btp","target":"capability:mcp-servers","kind":"explains"},{"source":"content:ac-third-party-mcp-server-access-to-sap-solutions-on-btp","target":"capability:tool-governance","kind":"explains"},{"source":"content:ac-third-party-mcp-server-access-to-sap-solutions-on-btp","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:ac-third-party-mcp-server-access-to-sap-solutions-on-btp","target":"artifact:btp-cloud-identity-services","kind":"explains"},{"source":"content:ac-transforming-enterprise-data-strategy-with-sap-business-data-cloud","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:ac-transforming-enterprise-data-strategy-with-sap-business-data-cloud","target":"capability:data-cataloguing","kind":"explains"},{"source":"content:ac-transforming-enterprise-data-strategy-with-sap-business-data-cloud","target":"capability:identity-provisioning","kind":"explains"},{"source":"content:ac-transforming-enterprise-data-strategy-with-sap-business-data-cloud","target":"capability:predictive-models","kind":"explains"},{"source":"content:ac-transitioning-architectures-from-sap-netweaver","target":"capability:abap-cloud-readiness","kind":"explains"},{"source":"content:accelerating-your-analytics-with-delta-table-replication-into-sap-hana-cloud","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:adaptation-project-sap-fiori","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:adapting-sap-joule-for-purchase-order-creation-from-an-existing-purchase-requisi","target":"capability:agent-tooling","kind":"explains"},{"source":"content:adapting-sap-joule-for-purchase-order-creation-from-an-existing-purchase-requisi","target":"artifact:sap-joule-studio-classic","kind":"explains"},{"source":"content:add-useful-extensions-to-dev-spaces-in-bas","target":"capability:editor-support","kind":"explains"},{"source":"content:add-useful-extensions-to-dev-spaces-in-bas","target":"capability:seed-data","kind":"explains"},{"source":"content:adding-a-custom-action-button-with-an-icon-to-a-fiori-elements-list-report","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:adding-a-shell-plugin-to-a-fiori-cap-application","target":"capability:deployment","kind":"explains"},{"source":"content:adding-a-swagger-ui-to-your-cap-nodejs-service","target":"capability:openapi","kind":"explains"},{"source":"content:adding-a-swagger-ui-to-your-cap-nodejs-service","target":"artifact:chgeo-cds-swagger-ui-express","kind":"explains"},{"source":"content:adding-custom-metrics-to-a-cap-application-using-cap-js-telementry-plugin-and-sa","target":"capability:telemetry","kind":"explains"},{"source":"content:adding-immutable-blockchain-proofs-to-sap-with-cap","target":"capability:odata","kind":"explains"},{"source":"content:agentic-ai-on-btp-a-multi-agent-app-with-pydantic-ai","target":"capability:mcp-servers","kind":"explains"},{"source":"content:agentic-ai-on-btp-a-multi-agent-app-with-pydantic-ai","target":"capability:agent-tooling","kind":"explains"},{"source":"content:agentic-ai-on-btp-a-multi-agent-app-with-pydantic-ai","target":"capability:llm-integration","kind":"explains"},{"source":"content:agentic-ai-on-btp-a-single-agent-with-langgraph","target":"capability:mcp-servers","kind":"explains"},{"source":"content:agentic-ai-on-btp-a-single-agent-with-langgraph","target":"capability:agent-tooling","kind":"explains"},{"source":"content:agentic-ai-on-btp-a-single-agent-with-langgraph","target":"capability:llm-integration","kind":"explains"},{"source":"content:agentic-ai-on-btp-a-single-agent-with-langgraph","target":"capability:authorization","kind":"explains"},{"source":"content:ai-powered-user-experience-with-sap-cap-ai","target":"capability:llm-integration","kind":"explains"},{"source":"content:ai-powered-user-experience-with-sap-cap-ai","target":"artifact:cap-js-ai","kind":"explains"},{"source":"content:an-innovative-language-exchange-app-with-build-apps-cap-kyma-and-openai","target":"capability:llm-integration","kind":"explains"},{"source":"content:an-innovative-language-exchange-app-with-build-apps-cap-kyma-and-openai","target":"capability:reference-apps","kind":"explains"},{"source":"content:an-introduction-to-cds-graphical-modeler-for-bas","target":"capability:editor-support","kind":"explains"},{"source":"content:api-composition-seamless-enterprise-data-access-for-developers-and-ai-agents","target":"artifact:btp-api-management","kind":"explains"},{"source":"content:api-composition-seamless-enterprise-data-access-for-developers-and-ai-agents","target":"artifact:btp-api-composition","kind":"explains"},{"source":"content:api-composition-seamless-enterprise-data-access-for-developers-and-ai-agents","target":"capability:mcp-servers","kind":"explains"},{"source":"content:arc-1-1-0-one-deployment-multiple-sap-systems","target":"artifact:arc-mcp-arc-1","kind":"explains"},{"source":"content:arc-1-on-sap-btp-secure-abap-agentic-development-beyond-the-laptop","target":"artifact:arc-mcp-arc-1","kind":"explains"},{"source":"content:arc-1-on-sap-btp-secure-abap-agentic-development-beyond-the-laptop","target":"capability:tool-governance","kind":"explains"},{"source":"content:arc-1-with-copilot-studio-sap-system-context-beyond-developers","target":"artifact:arc-mcp-arc-1","kind":"explains"},{"source":"content:arc-1-with-copilot-studio-sap-system-context-beyond-developers","target":"capability:agent-code-access","kind":"explains"},{"source":"content:arc-1-with-joule-studio-bringing-real-abap-system-context-into-joule","target":"artifact:arc-mcp-arc-1","kind":"explains"},{"source":"content:arc-1-with-joule-studio-bringing-real-abap-system-context-into-joule","target":"artifact:sap-joule-studio-classic","kind":"explains"},{"source":"content:arc-1-with-joule-studio-bringing-real-abap-system-context-into-joule","target":"capability:abap-cloud-readiness","kind":"explains"},{"source":"content:architecting-multiple-s4hana-backends-with-principal-propagation-part-1","target":"capability:destinations","kind":"explains"},{"source":"content:architecting-multiple-s4hana-backends-with-principal-propagation-part-1","target":"capability:authentication","kind":"explains"},{"source":"content:architecting-multiple-s4hana-backends-with-principal-propagation-part-2","target":"capability:destinations","kind":"explains"},{"source":"content:architecting-multiple-s4hana-backends-with-principal-propagation-part-2","target":"capability:authentication","kind":"explains"},{"source":"content:architecting-multiple-s4hana-backends-with-principal-propagation-part-3","target":"capability:destinations","kind":"explains"},{"source":"content:architecting-multiple-s4hana-backends-with-principal-propagation-part-3","target":"capability:authentication","kind":"explains"},{"source":"content:architecting-saas-resilience-against-s4hana-variance","target":"capability:multitenancy","kind":"explains"},{"source":"content:architecting-saas-resilience-against-s4hana-variance","target":"capability:destinations","kind":"explains"},{"source":"content:attachment-upload-and-download-with-uploadsetwithtable","target":"capability:attachments","kind":"explains"},{"source":"content:authorization-management-service-in-sap-cloud-identity-service","target":"capability:authorization","kind":"explains"},{"source":"content:authorization-management-with-opensearch-s-document-level-security-sap-cloud-log","target":"artifact:btp-cloud-logging","kind":"explains"},{"source":"content:authorization-management-with-opensearch-s-document-level-security-sap-cloud-log","target":"capability:authorization","kind":"explains"},{"source":"content:automate-btp-custom-domain-certificates-using-lets-encrypt","target":"capability:async-processing","kind":"explains"},{"source":"content:automate-btp-custom-domain-certificates-using-lets-encrypt","target":"capability:reference-apps","kind":"explains"},{"source":"content:automate-recurring-data-updates-in-sap-hana-cloud","target":"capability:job-scheduling","kind":"explains"},{"source":"content:automate-recurring-data-updates-in-sap-hana-cloud","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:automate-your-job-postings-using-generative-ai-and-sbpa","target":"capability:workflow-integration","kind":"explains"},{"source":"content:automate-your-job-postings-using-generative-ai-and-sbpa","target":"capability:llm-integration","kind":"explains"},{"source":"content:automating-iflow-documentation-with-sap-integration-suite-and-gemini-ai","target":"capability:integration-flows","kind":"explains"},{"source":"content:automating-iflow-documentation-with-sap-integration-suite-and-gemini-ai","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:automating-user-offboarding-in-sap-btp-across-multiple-subaccounts-with-powershe","target":"capability:identity-provisioning","kind":"explains"},{"source":"content:autonomous-diagnostics-on-kyma-unplugged-goose-litellm-kro-sap-ai-core-in-produc","target":"capability:llm-integration","kind":"explains"},{"source":"content:autonomous-diagnostics-on-kyma-unplugged-goose-litellm-kro-sap-ai-core-in-produc","target":"capability:telemetry","kind":"explains"},{"source":"content:autonomous-diagnostics-on-kyma-unplugged-goose-litellm-kro-sap-ai-core-in-produc","target":"capability:deployment","kind":"explains"},{"source":"content:avoid-design-time-cap-server-restarts-with-local-data-files","target":"capability:local-development","kind":"explains"},{"source":"content:avoid-design-time-cap-server-restarts-with-local-data-files","target":"capability:seed-data","kind":"explains"},{"source":"content:avoiding-data-loss-when-loading-initial-data-with-csv-files","target":"capability:seed-data","kind":"explains"},{"source":"content:aws-mail-configuration-for-sap-abap-systems","target":"capability:notifications","kind":"explains"},{"source":"content:banking-sentinel-a-multi-agent-credit-risk-copilot","target":"capability:agent-tooling","kind":"explains"},{"source":"content:banking-sentinel-a-multi-agent-credit-risk-copilot","target":"capability:llm-integration","kind":"explains"},{"source":"content:basic-code-s-of-abap","target":"capability:error-handling","kind":"explains"},{"source":"content:basic-code-s-of-abap","target":"capability:document-output","kind":"explains"},{"source":"content:batch-file-pickup-and-dynamic-zip-creation-in-sap-integration-suite","target":"capability:integration-flows","kind":"explains"},{"source":"content:before-you-upgrade-s4hana-static-ui5-checks-with-mcp","target":"artifact:marianfoo-mcp-sap-docs","kind":"explains"},{"source":"content:before-you-upgrade-s4hana-static-ui5-checks-with-mcp","target":"artifact:ui5-mcp-server","kind":"explains"},{"source":"content:before-you-upgrade-s4hana-static-ui5-checks-with-mcp","target":"capability:linting","kind":"explains"},{"source":"content:beginners-guide-to-advanced-event-mesh","target":"capability:event-mesh","kind":"explains"},{"source":"content:beginners-guide-to-advanced-event-mesh","target":"capability:async-processing","kind":"explains"},{"source":"content:beginners-guide-to-advanced-event-mesh","target":"capability:error-handling","kind":"explains"},{"source":"content:beginners-guide-to-advanced-event-mesh","target":"artifact:btp-advanced-event-mesh","kind":"explains"},{"source":"content:behavior-illegal-statement-dump-technical-workarounds","target":"capability:abap-transactional-model","kind":"explains"},{"source":"content:beyond-basic-ai-error-handling-in-sap-cpi-a-rules-first-architecture-with-hana-c","target":"capability:integration-flows","kind":"explains"},{"source":"content:beyond-basic-ai-error-handling-in-sap-cpi-a-rules-first-architecture-with-hana-c","target":"capability:llm-integration","kind":"explains"},{"source":"content:beyond-basic-ai-error-handling-in-sap-cpi-a-rules-first-architecture-with-hana-c","target":"capability:data-masking","kind":"explains"},{"source":"content:beyond-read-text-decoding-sapscript-long-texts-stxl-with-sqlscript-in-cds-amdp","target":"capability:data-modelling","kind":"explains"},{"source":"content:beyond-rest-exploring-graphql-api-integration-in-sap-btp-integration-suite","target":"capability:integration-flows","kind":"explains"},{"source":"content:beyond-rest-exploring-graphql-api-integration-in-sap-btp-integration-suite","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:bo-interface-apis-an-alternative-to-bapis-and-traditional-fms","target":"capability:abap-transactional-model","kind":"explains"},{"source":"content:boosting-performance-in-cap-with-cds-caching","target":"artifact:cds-caching","kind":"explains"},{"source":"content:btp-ai-bp-access-to-generative-ai-models","target":"capability:llm-integration","kind":"explains"},{"source":"content:btp-ai-bp-agentic-ai-security-governance","target":"capability:tool-governance","kind":"explains"},{"source":"content:btp-ai-bp-content-filtering","target":"capability:content-filtering","kind":"explains"},{"source":"content:btp-ai-bp-content-filtering","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:btp-ai-bp-custom-joule-skills","target":"artifact:sap-joule-studio-classic","kind":"explains"},{"source":"content:btp-ai-bp-data-masking","target":"capability:data-masking","kind":"explains"},{"source":"content:btp-ai-bp-data-masking","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:btp-ai-bp-document-grounding","target":"capability:retrieval-augmented-generation","kind":"explains"},{"source":"content:btp-ai-bp-document-grounding","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:btp-ai-bp-joule-agent-builder","target":"capability:agent-tooling","kind":"explains"},{"source":"content:btp-ai-bp-joule-agent-builder","target":"artifact:sap-joule-studio-classic","kind":"explains"},{"source":"content:btp-ai-bp-mcp","target":"capability:mcp-servers","kind":"explains"},{"source":"content:btp-ai-bp-mcp","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:btp-ai-bp-pro-code-ai-agents","target":"capability:agent-tooling","kind":"explains"},{"source":"content:btp-ai-bp-prompt-templating","target":"capability:prompt-management","kind":"explains"},{"source":"content:btp-ai-bp-prompt-templating","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:btp-ai-bp-vector-rag-vs-graph-rag","target":"capability:retrieval-augmented-generation","kind":"explains"},{"source":"content:btp-audit-log-mcp-server-security-monitoring-with-ai-assistants","target":"capability:mcp-servers","kind":"explains"},{"source":"content:btp-audit-log-mcp-server-security-monitoring-with-ai-assistants","target":"capability:audit-logging","kind":"explains"},{"source":"content:btp-audit-log-mcp-server-security-monitoring-with-ai-assistants","target":"artifact:lemaiwo-odata-mcp-proxy","kind":"explains"},{"source":"content:btp-audit-log-mcp-server-security-monitoring-with-ai-assistants","target":"artifact:btp-audit-log","kind":"explains"},{"source":"content:btp-authorization-object","target":"capability:authorization","kind":"explains"},{"source":"content:btp-cap-custom-plugin-to-separate-generic-change-log-capture-logic","target":"capability:change-tracking","kind":"explains"},{"source":"content:btp-cap-custom-plugin-to-separate-generic-change-log-capture-logic","target":"capability:plugin-authoring","kind":"explains"},{"source":"content:btp-cloud-foundry-mcp-server-managing-cf-environments-with-ai","target":"capability:mcp-servers","kind":"explains"},{"source":"content:btp-launchpad-sapui5-cpi-iflow","target":"capability:destinations","kind":"explains"},{"source":"content:btp-launchpad-sapui5-cpi-iflow","target":"capability:deployment","kind":"explains"},{"source":"content:btp-restriction-type","target":"capability:authorization","kind":"explains"},{"source":"content:btp-sapcap-quirky-nuggets-n01-n02","target":"capability:input-validation","kind":"explains"},{"source":"content:btp-sapcap-quirky-nuggets-n01-n02","target":"capability:data-modelling","kind":"explains"},{"source":"content:btp-sapcap-quirky-nuggets-n03-n04","target":"capability:odata","kind":"explains"},{"source":"content:btp-sapcap-quirky-nuggets-n03-n04","target":"capability:deployment","kind":"explains"},{"source":"content:btp-sapcap-quirky-nuggets-n05-n06","target":"capability:health-checks","kind":"explains"},{"source":"content:btp-sapcap-quirky-nuggets-n05-n06","target":"capability:service-integration","kind":"explains"},{"source":"content:build-a-btp-cap-app-with-fiori-integration-part-2","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:build-a-btp-cap-app-with-fiori-integration-part-2","target":"capability:deployment","kind":"explains"},{"source":"content:build-an-overview-page-with-hana-cloud-and-cap-service-annotations","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:build-and-deploy-a-cap-nodejs-api-with-fiori-elements-and-a-managed-approuter","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:build-and-deploy-a-cap-nodejs-api-with-fiori-elements-and-a-managed-approuter","target":"capability:deployment","kind":"explains"},{"source":"content:build-configure-and-deploy-cap-projects-to-the-cloud","target":"capability:deployment","kind":"explains"},{"source":"content:build-solutions-for-sap-cloud-erp-with-confidence","target":"capability:reference-apps","kind":"explains"},{"source":"content:build-solutions-for-sap-cloud-erp-with-confidence","target":"capability:multitenancy","kind":"explains"},{"source":"content:build-your-ai-agent-prototype-for-free-using-sap-cap-langchain-and-ollama-cloud","target":"capability:llm-integration","kind":"explains"},{"source":"content:build-your-ai-agent-prototype-for-free-using-sap-cap-langchain-and-ollama-cloud","target":"capability:agent-tooling","kind":"explains"},{"source":"content:building-a-cap-app-with-fiori-part-1-environment-and-hana-cloud","target":"capability:database-connectors","kind":"explains"},{"source":"content:building-a-cap-service-with-cds-mcp-and-cline","target":"capability:agent-code-access","kind":"explains"},{"source":"content:building-a-cap-service-with-cds-mcp-and-cline","target":"capability:agent-guidance","kind":"explains"},{"source":"content:building-a-genai-inventory-assistant-with-cap-rag-and-a-vector-database","target":"capability:retrieval-augmented-generation","kind":"explains"},{"source":"content:building-a-pro-code-agent-on-sap-btp-part-2-the-agent-langgraph-genai-hub","target":"capability:agent-tooling","kind":"explains"},{"source":"content:building-a-pro-code-agent-on-sap-btp-part-2-the-agent-langgraph-genai-hub","target":"capability:llm-integration","kind":"explains"},{"source":"content:building-a-pro-code-agent-on-sap-btp-part-3-joule-integration-via-a2a","target":"capability:authentication","kind":"explains"},{"source":"content:building-a-pro-code-agent-on-sap-btp-part-3-joule-integration-via-a2a","target":"capability:deployment","kind":"explains"},{"source":"content:building-a-pro-code-agent-on-sap-btp-part-3-joule-integration-via-a2a","target":"capability:agent-tooling","kind":"explains"},{"source":"content:building-a-real-time-currency-conversion-iflow-using-sap-cloud-integration-cpi","target":"capability:integration-flows","kind":"explains"},{"source":"content:building-a-real-time-currency-conversion-iflow-using-sap-cloud-integration-cpi","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:building-a-real-time-currency-conversion-iflow-using-sap-cloud-integration-cpi","target":"capability:error-handling","kind":"explains"},{"source":"content:building-a-real-time-currency-conversion-iflow-using-sap-cloud-integration-cpi","target":"capability:notifications","kind":"explains"},{"source":"content:building-a-saas-multitenant-cap-application-without-a-database","target":"capability:multitenancy","kind":"explains"},{"source":"content:building-an-analytical-list-page-with-cap-odata-v4","target":"capability:analytical-queries","kind":"explains"},{"source":"content:building-an-analytical-list-page-with-cap-odata-v4","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:building-an-analytical-list-page-with-cap-odata-v4","target":"artifact:miyasuta-cap-alp","kind":"explains"},{"source":"content:building-an-enterprise-application-with-fiori-elements-and-cap-part-1","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:building-an-enterprise-application-with-fiori-elements-and-cap-part-1","target":"capability:data-modelling","kind":"explains"},{"source":"content:building-an-enterprise-application-with-fiori-elements-and-cap-part-2","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:building-an-enterprise-application-with-fiori-elements-and-cap-part-3","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:building-an-enterprise-ready-sap-ai-agent-with-open-source","target":"capability:agent-code-access","kind":"explains"},{"source":"content:building-an-enterprise-ready-sap-ai-agent-with-open-source","target":"artifact:marianfoo-mcp-sap-docs","kind":"explains"},{"source":"content:building-an-enterprise-ready-sap-ai-agent-with-open-source","target":"artifact:oisee-vibing-steampunk","kind":"explains"},{"source":"content:building-an-enterprise-ready-sap-ai-agent-with-open-source","target":"capability:tool-governance","kind":"explains"},{"source":"content:building-an-llm-agent-in-cap-java-with-spring-ai","target":"capability:agent-tooling","kind":"explains"},{"source":"content:building-an-llm-agent-in-cap-java-with-spring-ai","target":"capability:llm-integration","kind":"explains"},{"source":"content:building-an-llm-agent-using-cap","target":"capability:agent-tooling","kind":"explains"},{"source":"content:building-an-llm-agent-using-cap","target":"capability:llm-integration","kind":"explains"},{"source":"content:building-an-s4hana-cloud-extension-with-cap-cloud-sdk-and-fiori-elements-part-1","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:building-an-s4hana-cloud-extension-with-cap-cloud-sdk-and-fiori-elements-part-1","target":"capability:destinations","kind":"explains"},{"source":"content:building-an-s4hana-cloud-extension-with-cap-cloud-sdk-and-fiori-elements-part-2","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:building-an-s4hana-cloud-extension-with-cap-cloud-sdk-and-fiori-elements-part-2","target":"capability:destinations","kind":"explains"},{"source":"content:building-an-sap-btp-agent-architecture-from-scratch-python-cap-hana","target":"capability:search","kind":"explains"},{"source":"content:building-an-sap-btp-agent-architecture-from-scratch-python-cap-hana","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:building-an-sap-btp-agent-architecture-from-scratch-python-cap-hana","target":"artifact:sap-cds-dk","kind":"explains"},{"source":"content:building-and-consuming-an-mcp-server-in-sap-integration-suite-connecting-it-to-c","target":"capability:mcp-servers","kind":"explains"},{"source":"content:building-and-consuming-an-mcp-server-in-sap-integration-suite-connecting-it-to-c","target":"capability:authorization","kind":"explains"},{"source":"content:building-and-consuming-an-mcp-server-in-sap-integration-suite-connecting-it-to-c","target":"capability:openapi","kind":"explains"},{"source":"content:building-custom-authentication-in-sap-cap","target":"capability:authentication","kind":"explains"},{"source":"content:building-custom-joule-skills-via-rfc-guide-for-sap-s-4hana-and-ecc-integration","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:building-custom-joule-skills-via-rfc-guide-for-sap-s-4hana-and-ecc-integration","target":"capability:destinations","kind":"explains"},{"source":"content:building-custom-joule-skills-via-rfc-guide-for-sap-s-4hana-and-ecc-integration","target":"artifact:sap-joule-studio-classic","kind":"explains"},{"source":"content:building-durable-ai-agents-cds-langgraph-persistence","target":"artifact:mi8y-cds-langgraph-persistence","kind":"explains"},{"source":"content:building-durable-ai-agents-cds-langgraph-persistence","target":"capability:agent-tooling","kind":"explains"},{"source":"content:building-mcp-servers-with-sap-integration-suite","target":"capability:mcp-servers","kind":"explains"},{"source":"content:building-mcp-servers-with-sap-integration-suite","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:building-mcp-servers-with-sap-integration-suite","target":"capability:tool-governance","kind":"explains"},{"source":"content:building-saas-products-on-sap-btp","target":"capability:multitenancy","kind":"explains"},{"source":"content:building-secure-sapui5-applications-best-practices-for-developers","target":"capability:linting","kind":"explains"},{"source":"content:building-secure-sapui5-applications-best-practices-for-developers","target":"capability:input-validation","kind":"explains"},{"source":"content:by-passing-function-modules-in-aunits","target":"capability:abap-unit-testing","kind":"explains"},{"source":"content:calculating-ibp-technical-week-key-figure-date-in-s-4hana-using-cds-view","target":"capability:data-modelling","kind":"explains"},{"source":"content:call-a-remote-odata-api-from-a-local-cap-java-project","target":"capability:destinations","kind":"explains"},{"source":"content:call-a-remote-odata-api-from-a-local-cap-java-project","target":"capability:local-development","kind":"explains"},{"source":"content:call-bapi-in-custom-entity-through-rap","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:calling-bound-and-unbound-cap-actions-from-a-fiori-elements-app","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:calling-bound-and-unbound-cap-actions-from-a-fiori-elements-app","target":"capability:odata","kind":"explains"},{"source":"content:calling-claude-from-abap-how-i-wired-sap-ai-core-into-a-real-business-scenario","target":"capability:llm-integration","kind":"explains"},{"source":"content:calling-the-sales-order-a2x-odata-v2-api-from-btp-using-a-service-consumption-mo","target":"capability:http-clients","kind":"explains"},{"source":"content:calling-the-sales-order-a2x-odata-v4-api-from-btp-using-a-service-consumption-mo","target":"capability:http-clients","kind":"explains"},{"source":"content:cap-application-with-successfactors-and-hana-cloud","target":"capability:database-connectors","kind":"explains"},{"source":"content:cap-application-with-successfactors-and-hana-cloud","target":"capability:destinations","kind":"explains"},{"source":"content:cap-backend-development-with-productivity-tools-hana-cloud-edition","target":"capability:database-connectors","kind":"explains"},{"source":"content:cap-cds-and-fiori-practical-commands","target":"capability:generators","kind":"explains"},{"source":"content:cap-cds-and-fiori-practical-commands","target":"capability:local-development","kind":"explains"},{"source":"content:cap-cds-cdl-csn-and-jq-finding-associations","target":"capability:data-modelling","kind":"explains"},{"source":"content:cap-cds-cdl-csn-and-jq-finding-associations","target":"capability:metadata-publishing","kind":"explains"},{"source":"content:cap-consume-external-service-part-1","target":"capability:service-integration","kind":"explains"},{"source":"content:cap-consume-external-service-part-1","target":"capability:seed-data","kind":"explains"},{"source":"content:cap-consume-external-service-part-3","target":"capability:destinations","kind":"explains"},{"source":"content:cap-cors-and-custom-headers","target":"capability:frontend-boundary","kind":"explains"},{"source":"content:cap-deep-insert-4-consume-remote-service","target":"capability:destinations","kind":"explains"},{"source":"content:cap-deep-insert-4-consume-remote-service","target":"capability:odata","kind":"explains"},{"source":"content:cap-deep-insert-5-consume-remote-service-with-cloud-sdk","target":"capability:destinations","kind":"explains"},{"source":"content:cap-deep-insert-5-consume-remote-service-with-cloud-sdk","target":"capability:odata","kind":"explains"},{"source":"content:cap-developers-call-to-action-for-sap-note-3747787","target":"artifact:sap-cds","kind":"explains"},{"source":"content:cap-dynamically-hide-ui-facets-in-fiori-elements","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:cap-for-nodejs","target":"capability:authorization","kind":"explains"},{"source":"content:cap-for-nodejs","target":"capability:authentication","kind":"explains"},{"source":"content:cap-for-nodejs","target":"capability:local-development","kind":"explains"},{"source":"content:cap-foundry-engineering-sap-cap-applications-from-business-intent-with-guardrail","target":"capability:database-connectors","kind":"explains"},{"source":"content:cap-foundry-engineering-sap-cap-applications-from-business-intent-with-guardrail","target":"capability:destinations","kind":"explains"},{"source":"content:cap-foundry-engineering-sap-cap-applications-from-business-intent-with-guardrail","target":"capability:draft-handling","kind":"explains"},{"source":"content:cap-foundry-engineering-sap-cap-applications-from-business-intent-with-guardrail","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:cap-foundry-engineering-sap-cap-applications-from-business-intent-with-guardrail","target":"capability:attachments","kind":"explains"},{"source":"content:cap-foundry-engineering-sap-cap-applications-from-business-intent-with-guardrail","target":"capability:malware-scanning","kind":"explains"},{"source":"content:cap-full-stack-testing-with-bdd-flavour","target":"capability:testing","kind":"explains"},{"source":"content:cap-full-stack-testing-with-bdd-flavour","target":"artifact:cap-js-community-cds-cucumber","kind":"explains"},{"source":"content:cap-graphql-as-new-protocol","target":"capability:graphql","kind":"explains"},{"source":"content:cap-graphql-as-new-protocol","target":"artifact:cap-js-graphql","kind":"explains"},{"source":"content:cap-heaven-not-yet-but-you-can-see-it-from-here","target":"artifact:sap-cds","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-1-the-mcp-adapter","target":"artifact:cap-js-mcp","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-1-the-mcp-adapter","target":"capability:mcp-servers","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-2-more-on-the-mcp-adapter","target":"artifact:cap-js-mcp","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-2-more-on-the-mcp-adapter","target":"capability:mcp-servers","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-3-from-mcp-to-a2a","target":"artifact:cap-js-mcp","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-3-from-mcp-to-a2a","target":"artifact:cap-js-agents","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-3-from-mcp-to-a2a","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-3-from-mcp-to-a2a","target":"capability:mcp-servers","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-3-from-mcp-to-a2a","target":"capability:agent-tooling","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-3-from-mcp-to-a2a","target":"capability:llm-integration","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-4-more-on-agents","target":"artifact:cap-js-agents","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-4-more-on-agents","target":"capability:agent-tooling","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-5-agents-wrap-up","target":"artifact:cap-js-agents","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-5-agents-wrap-up","target":"artifact:cap-js-telemetry","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-5-agents-wrap-up","target":"artifact:capire-xtravels","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-5-agents-wrap-up","target":"capability:agent-tooling","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-5-agents-wrap-up","target":"capability:telemetry","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-5-agents-wrap-up","target":"capability:llm-integration","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-6-vector-embeddings","target":"artifact:capire-incidents-app","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-6-vector-embeddings","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-6-vector-embeddings","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-6-vector-embeddings","target":"capability:retrieval-augmented-generation","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-7-vector-embeddings-wrap-up","target":"artifact:cap-js-ai","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-7-vector-embeddings-wrap-up","target":"artifact:cap-js-hana","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-7-vector-embeddings-wrap-up","target":"artifact:cap-js-mcp","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-7-vector-embeddings-wrap-up","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-7-vector-embeddings-wrap-up","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-7-vector-embeddings-wrap-up","target":"artifact:sap-cds-dk","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-7-vector-embeddings-wrap-up","target":"capability:retrieval-augmented-generation","kind":"explains"},{"source":"content:cap-in-the-age-of-ai-7-vector-embeddings-wrap-up","target":"capability:mcp-servers","kind":"explains"},{"source":"content:cap-in-the-age-of-ai","target":"artifact:cap-js-mcp","kind":"explains"},{"source":"content:cap-in-the-age-of-ai","target":"artifact:cap-js-agents","kind":"explains"},{"source":"content:cap-in-the-age-of-ai","target":"capability:mcp-servers","kind":"explains"},{"source":"content:cap-in-the-age-of-ai","target":"capability:agent-tooling","kind":"explains"},{"source":"content:cap-in-the-age-of-ai","target":"capability:retrieval-augmented-generation","kind":"explains"},{"source":"content:cap-initializr-generate-sap-cap-projects-in-seconds","target":"capability:generators","kind":"explains"},{"source":"content:cap-is-important-because-its-not-important","target":"artifact:sap-cds","kind":"explains"},{"source":"content:cap-java-implementation-for-authorization-management-service","target":"capability:authorization","kind":"explains"},{"source":"content:cap-java-nodejs-mixed-mono-multitenant-saas-with-shared-database","target":"capability:multitenancy","kind":"explains"},{"source":"content:cap-java-nodejs-mixed-mono-multitenant-saas-with-shared-database","target":"artifact:sap-cds-mtxs","kind":"explains"},{"source":"content:cap-java-with-amazon-aurora-postgresql","target":"capability:database-connectors","kind":"explains"},{"source":"content:cap-java-with-azure-cosmos-db-for-postgresql","target":"capability:database-connectors","kind":"explains"},{"source":"content:cap-just-got-faster-whats-new-in-cds-caching-1-0","target":"artifact:cds-caching","kind":"explains"},{"source":"content:cap-lessons-learned-run-a-cap-app-using-sqlite-on-cloud-foundry","target":"capability:database-connectors","kind":"explains"},{"source":"content:cap-lessons-learned-run-a-cap-app-using-sqlite-on-cloud-foundry","target":"capability:deployment","kind":"explains"},{"source":"content:cap-lessons-learned-sqlite-is-single-threaded-hana-is-not","target":"capability:database-connectors","kind":"explains"},{"source":"content:cap-lessons-learned-sqlite-is-single-threaded-hana-is-not","target":"capability:local-development","kind":"explains"},{"source":"content:cap-mcp-adapter-guide","target":"capability:mcp-servers","kind":"explains"},{"source":"content:cap-mcp-adapter-guide","target":"artifact:cap-js-mcp","kind":"explains"},{"source":"content:cap-mcp-adapter-guide","target":"artifact:cap-java-cds-adapter-mcp","kind":"explains"},{"source":"content:cap-multitenancy-with-work-zone","target":"capability:multitenancy","kind":"explains"},{"source":"content:cap-node-js-expert-session-6-the-mcp-adapter","target":"artifact:cap-js-mcp","kind":"explains"},{"source":"content:cap-node-js-expert-session-6-the-mcp-adapter","target":"capability:mcp-servers","kind":"explains"},{"source":"content:cap-now-supports-reactjs-with-working-demo-ui5-web-components","target":"capability:generators","kind":"explains"},{"source":"content:cap-on-kyma-deploy-your-cap-apps-to-btp-kyma-runtime","target":"capability:deployment","kind":"explains"},{"source":"content:cap-operator-on-kyma-part-2-runtime-architecture-and-cost","target":"capability:deployment","kind":"explains"},{"source":"content:cap-operator-on-kyma-part-2-runtime-architecture-and-cost","target":"capability:multitenancy","kind":"explains"},{"source":"content:cap-postgresql-local-debugging-using-docker-part-2","target":"capability:database-connectors","kind":"explains"},{"source":"content:cap-postgresql-local-debugging-using-docker-part-2","target":"capability:local-development","kind":"explains"},{"source":"content:cap-rap-or-both-stop-hiding-behind-it-depends","target":"artifact:sap-cds","kind":"explains"},{"source":"content:cap-service-to-fetch-create-sales-order-in-s4-hana-public-cloud","target":"capability:service-integration","kind":"explains"},{"source":"content:cap-service-to-fetch-create-sales-order-in-s4-hana-public-cloud","target":"capability:destinations","kind":"explains"},{"source":"content:cap-specifying-the-queues-to-be-consumed-from-sap-event-mesh","target":"capability:event-mesh","kind":"explains"},{"source":"content:cap-techbytes-input-validation","target":"capability:input-validation","kind":"explains"},{"source":"content:cap-techbytes-input-validation","target":"capability:data-modelling","kind":"explains"},{"source":"content:cap-typescript-fiori-typescript-and-live-reload-initial-setup","target":"capability:typescript-patterns","kind":"explains"},{"source":"content:cap-typescript-fiori-typescript-and-live-reload-initial-setup","target":"capability:local-development","kind":"explains"},{"source":"content:cap-unit-testing-using-mocha-and-chai","target":"capability:testing","kind":"explains"},{"source":"content:cap-websockets","target":"capability:websocket","kind":"explains"},{"source":"content:cap-with-fiori-elements-actions-on-list-report-and-object-page-part-1","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:cap-with-fiori-elements-actions-on-list-report-and-object-page-part-2","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:cap-with-fiori-elements-configure-multiple-views-on-list-report-tables","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:cap-with-fiori-elements-side-effects-custom-actions-dynamic-expressions","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:cap-with-local-app-previews","target":"capability:local-development","kind":"explains"},{"source":"content:cap-with-mongodb","target":"artifact:krish469-sap-cap-mongodb","kind":"explains"},{"source":"content:cap-with-mongodb","target":"capability:database-connectors","kind":"explains"},{"source":"content:cap-with-postgresql-db-alternate-to-hana-cloud-part-1","target":"capability:database-connectors","kind":"explains"},{"source":"content:capm-basics-part-2","target":"capability:generators","kind":"explains"},{"source":"content:capm-basics-part-2","target":"capability:database-connectors","kind":"explains"},{"source":"content:capm-basics-part-2","target":"capability:deployment","kind":"explains"},{"source":"content:capm-basics-part-2","target":"capability:authentication","kind":"explains"},{"source":"content:capm-basics-part-4","target":"capability:local-development","kind":"explains"},{"source":"content:capm-basics-part-4","target":"capability:authorization","kind":"explains"},{"source":"content:capm-basics-part-4","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:capm-basics-part-4","target":"capability:generators","kind":"explains"},{"source":"content:capm-basics-part-4","target":"capability:deployment","kind":"explains"},{"source":"content:capturing-background-job-errors-in-sap-using-the-application-log-slg0-slg1","target":"capability:logging","kind":"explains"},{"source":"content:capval-a-project-is-born","target":"artifact:mertsap-capval","kind":"explains"},{"source":"content:capval-a-project-is-born","target":"capability:input-validation","kind":"explains"},{"source":"content:case-insensitive-filters-in-fiori-elements-with-a-cap-backend","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:case-insensitive-filters-in-fiori-elements-with-a-cap-backend","target":"capability:search","kind":"explains"},{"source":"content:ccm-calculate-key-figures","target":"capability:abap-cloud-readiness","kind":"explains"},{"source":"content:cds-deploy-to-sqlite-in-memory-database","target":"capability:database-connectors","kind":"explains"},{"source":"content:cds-launchpad-plugin-supercharged","target":"artifact:geert-janklaps-cds-launchpad-plugin","kind":"explains"},{"source":"content:cds-launchpad-plugin-supercharged","target":"capability:local-development","kind":"explains"},{"source":"content:cds-toon-ai-protocol-adapter-cutting-token-costs","target":"artifact:geertjanklaps-cds-toon-ai-protocol-adapter","kind":"explains"},{"source":"content:cds-toon-ai-protocol-adapter-cutting-token-costs","target":"capability:llm-integration","kind":"explains"},{"source":"content:cds-ts-dispatcher-simplifying-sap-cap-typescript-development","target":"artifact:dxfrontier-cds-ts-dispatcher","kind":"explains"},{"source":"content:cds-ts-dispatcher-simplifying-sap-cap-typescript-development","target":"capability:typescript-patterns","kind":"explains"},{"source":"content:cds-ts-repository-simplify-cap-entity-persistence","target":"artifact:dxfrontier-cds-ts-repository","kind":"explains"},{"source":"content:cds-ts-repository-simplify-cap-entity-persistence","target":"capability:typescript-patterns","kind":"explains"},{"source":"content:centralized-error-handling-in-sap-cloud-integration","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:cf-create-app-end-to-end-apps-deployed-to-cloud-foundry","target":"capability:generators","kind":"explains"},{"source":"content:cf-create-app-end-to-end-apps-deployed-to-cloud-foundry","target":"capability:deployment","kind":"explains"},{"source":"content:ci-cd-for-hana-cloud-with-cds-add-pipeline","target":"capability:ci-cd","kind":"explains"},{"source":"content:ci-cd-for-hana-cloud-with-cds-add-pipeline","target":"capability:database-connectors","kind":"explains"},{"source":"content:claude-code-via-mcp-poor-man-s-joule-or-a-practical-tool","target":"capability:agent-code-access","kind":"explains"},{"source":"content:claude-code-via-mcp-poor-man-s-joule-or-a-practical-tool","target":"artifact:oisee-vibing-steampunk","kind":"explains"},{"source":"content:claude-code-via-mcp-poor-man-s-joule-or-a-practical-tool","target":"capability:agent-guidance","kind":"explains"},{"source":"content:claude-ported-abap-functions-to-new-api","target":"capability:abap-source-control","kind":"explains"},{"source":"content:claude-ported-abap-functions-to-new-api","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:claude-ported-abap-functions-to-new-api","target":"capability:agent-code-access","kind":"explains"},{"source":"content:clean-core-by-design-event-enablement-cockpit-as-a-core-integration-enabler-in-s","target":"capability:event-mesh","kind":"explains"},{"source":"content:clean-core-index","target":"capability:abap-cloud-readiness","kind":"explains"},{"source":"content:clean-core-maturity-and-the-new-extensibility-levels","target":"capability:abap-extensibility","kind":"explains"},{"source":"content:clean-core","target":"capability:abap-extensibility","kind":"explains"},{"source":"content:cloud-integration-activating-enterprise-messaging-capabilities-for-jms-queue-cf","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:cloud-integration-with-document-ai","target":"capability:document-extraction","kind":"explains"},{"source":"content:cloud-integration-with-document-ai","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:cloud-integration-with-document-ai","target":"artifact:btp-document-ai","kind":"explains"},{"source":"content:cloud-native-with-abap-cloud-the-transactional-outbox-pattern","target":"capability:async-processing","kind":"explains"},{"source":"content:combine-power-automate-microsoft-teams-approvals-and-an-sap-cloud-application-pr","target":"capability:task-uis","kind":"explains"},{"source":"content:communicate-from-a-java-application-to-abap-via-websocket-rfc-using-jco-migratio","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:communicate-from-a-java-application-to-abap-via-websocket-rfc-using-jco-migratio","target":"capability:websocket","kind":"explains"},{"source":"content:completing-the-b2b-migration-into-sap-integration-suite-vision","target":"capability:trading-partner-agreements","kind":"explains"},{"source":"content:completing-the-b2b-migration-into-sap-integration-suite-vision","target":"capability:b2b-message-mapping","kind":"explains"},{"source":"content:computed-field-example-in-cap","target":"capability:data-modelling","kind":"explains"},{"source":"content:configure-journal-entry-posting-approval-from-store-template-in-build-process-au","target":"capability:destinations","kind":"explains"},{"source":"content:configure-journal-entry-posting-approval-from-store-template-in-build-process-au","target":"capability:task-uis","kind":"explains"},{"source":"content:configure-journal-entry-posting-approval-from-store-template-in-build-process-au","target":"capability:attachments","kind":"explains"},{"source":"content:configuring-sap-cloud-integration-for-an-ibp-to-s-4hana-on-prem-private-cloud-in","target":"capability:destinations","kind":"explains"},{"source":"content:configuring-sap-cloud-integration-for-an-ibp-to-s-4hana-on-prem-private-cloud-in","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:connect-a-cap-application-to-hana-cloud-in-another-account-without-hdi","target":"capability:database-connectors","kind":"explains"},{"source":"content:connect-sap-cap-nodejs-to-private-postgresql-using-cloud-connector","target":"capability:database-connectors","kind":"explains"},{"source":"content:connect-sap-cap-nodejs-to-private-postgresql-using-cloud-connector","target":"capability:destinations","kind":"explains"},{"source":"content:connect-to-a-public-cloud-api-in-nodejs-via-authorisation-code","target":"capability:destinations","kind":"explains"},{"source":"content:connect-to-a-public-cloud-api-in-nodejs-via-authorisation-code","target":"capability:authentication","kind":"explains"},{"source":"content:connecting-a-custom-mcp-server-to-joule-work-desktop-a-seamless-and-secure-authe","target":"capability:mcp-servers","kind":"explains"},{"source":"content:connecting-a-custom-mcp-server-to-joule-work-desktop-a-seamless-and-secure-authe","target":"capability:authentication","kind":"explains"},{"source":"content:connecting-a-custom-mcp-server-to-joule-work-desktop-a-seamless-and-secure-authe","target":"capability:authorization","kind":"explains"},{"source":"content:connecting-sap-integration-suite-with-sap-document-ai-and-sap-business-ai","target":"capability:document-extraction","kind":"explains"},{"source":"content:connecting-sap-integration-suite-with-sap-document-ai-and-sap-business-ai","target":"capability:llm-integration","kind":"explains"},{"source":"content:connecting-sap-integration-suite-with-sap-document-ai-and-sap-business-ai","target":"capability:integration-flows","kind":"explains"},{"source":"content:connecting-sap-integration-suite-with-slack-a-hands-on-guide-with-open-connector","target":"capability:error-handling","kind":"explains"},{"source":"content:connecting-sap-integration-suite-with-slack-a-hands-on-guide-with-open-connector","target":"capability:notifications","kind":"explains"},{"source":"content:connecting-sap-s-4hana-on-prem-directly-to-advanced-event-mesh-using-cloud-conne","target":"capability:event-mesh","kind":"explains"},{"source":"content:connecting-sap-s-4hana-on-prem-directly-to-advanced-event-mesh-using-cloud-conne","target":"artifact:sap-cloud-connector","kind":"explains"},{"source":"content:connecting-two-sap-cap-projects-without-duplicating-your-data","target":"capability:hana-native-artifacts","kind":"explains"},{"source":"content:connectivity-between-a-local-cap-runtime-and-on-premise-systems","target":"capability:destinations","kind":"explains"},{"source":"content:connectivity-between-a-local-cap-runtime-and-on-premise-systems","target":"capability:local-development","kind":"explains"},{"source":"content:consume-abap-rfc-function-modules-in-cap","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:consume-sap-document-management-using-cap-js-sdm","target":"artifact:cap-js-sdm","kind":"explains"},{"source":"content:consume-sap-document-management-using-cap-js-sdm","target":"capability:attachments","kind":"explains"},{"source":"content:consuming-data-from-sap-datasphere-in-cap-applications","target":"capability:destinations","kind":"explains"},{"source":"content:consuming-sap-build-apis-with-cloud-sdk-in-a-cap-application","target":"capability:workflow-integration","kind":"explains"},{"source":"content:control-visibility-of-crud-and-custom-actions-based-on-authorization","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:control-visibility-of-crud-and-custom-actions-based-on-authorization","target":"capability:authorization","kind":"explains"},{"source":"content:create-a-business-service-using-cds-nodejs-sqlite-and-odata","target":"capability:database-connectors","kind":"explains"},{"source":"content:create-a-business-service-using-cds-nodejs-sqlite-and-odata","target":"capability:odata","kind":"explains"},{"source":"content:create-a-cap-application-with-hana-cloud-and-deploy-to-cloud-foundry","target":"capability:database-connectors","kind":"explains"},{"source":"content:create-a-cap-application-with-hana-cloud-and-deploy-to-cloud-foundry","target":"capability:deployment","kind":"explains"},{"source":"content:create-a-fiori-elements-ui-for-cap-nodejs-applications-in-bas","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:create-a-fiori-list-report-with-object-page-using-a-capm-nodejs-service","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:create-an-api-to-run-a-hana-cloud-stored-procedure-in-cloud-foundry","target":"capability:database-connectors","kind":"explains"},{"source":"content:create-cds-views-and-expose-them-through-odata-in-capm","target":"capability:data-modelling","kind":"explains"},{"source":"content:create-cds-views-and-expose-them-through-odata-in-capm","target":"capability:odata","kind":"explains"},{"source":"content:create-your-first-cap-plugin","target":"capability:plugin-authoring","kind":"explains"},{"source":"content:create-your-first-cap-plugin","target":"artifact:lemaiwo-cds-plugin-handlers","kind":"explains"},{"source":"content:create-your-first-cap-plugin","target":"artifact:lemaiwo-ui5-cap-serverside-rendering-plugin","kind":"explains"},{"source":"content:create-your-first-cap-plugin","target":"artifact:spreadsheetimporter-cds-spreadsheetimporter-plugin","kind":"explains"},{"source":"content:creating-a-custom-f4-help-for-currency-fields-in-abap-using-f4if-int-table-value","target":"capability:abap-classic-ui","kind":"explains"},{"source":"content:creating-a-hybrid-cap-nodejs-profile-with-postgresql-from-bas","target":"capability:local-development","kind":"explains"},{"source":"content:creating-a-hybrid-cap-nodejs-profile-with-postgresql-from-bas","target":"capability:database-connectors","kind":"explains"},{"source":"content:creating-a-meal-generator-application-with-sap-build-and-cap","target":"capability:llm-integration","kind":"explains"},{"source":"content:creating-an-arc-1-btp-diagram-with-codex-and-a-drawio-skill","target":"artifact:marianfoo-btp-drawio-skill","kind":"explains"},{"source":"content:creating-an-arc-1-btp-diagram-with-codex-and-a-drawio-skill","target":"capability:architecture-diagrams","kind":"explains"},{"source":"content:creating-an-sap-sd-billing-document-using-a-bapi-in-sap-build-and-accessing-it-t","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:creating-an-sap-sd-billing-document-using-a-bapi-in-sap-build-and-accessing-it-t","target":"capability:destinations","kind":"explains"},{"source":"content:creating-and-deploying-a-cap-application-with-hana-part-1","target":"capability:database-connectors","kind":"explains"},{"source":"content:creating-and-deploying-a-cap-application-with-hana-part-1","target":"capability:deployment","kind":"explains"},{"source":"content:creating-and-deploying-a-cap-application-with-postgresql-hyperscaler","target":"capability:database-connectors","kind":"explains"},{"source":"content:creating-and-deploying-a-cap-application-with-postgresql-hyperscaler","target":"capability:deployment","kind":"explains"},{"source":"content:creating-material-master-data-in-sap-s-4hana-using-rap-and-eml","target":"capability:abap-transactional-model","kind":"explains"},{"source":"content:creating-material-master-data-in-sap-s-4hana-using-rap-and-eml","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:creating-new-services-using-the-cds-graphical-modeler","target":"capability:editor-support","kind":"explains"},{"source":"content:creating-structured-types-enums-and-named-aspects-in-the-graphical-modeler","target":"capability:editor-support","kind":"explains"},{"source":"content:creating-structured-types-enums-and-named-aspects-in-the-graphical-modeler","target":"capability:data-modelling","kind":"explains"},{"source":"content:custom-form-with-custom-data-source-in-sap-public-cloud-grow-with-sap","target":"capability:document-output","kind":"explains"},{"source":"content:custom-functions-in-odata-v4-in-cap","target":"capability:odata","kind":"explains"},{"source":"content:custom-handlers-for-draft-enabled-entities-in-sap-cap","target":"capability:draft-handling","kind":"explains"},{"source":"content:custom-joule-agent-for-sap-ariba-slp-building-an-ai-agent-for-supplier-registrat","target":"capability:agent-tooling","kind":"explains"},{"source":"content:debug-a-cap-app-with-ui5-typescript-ui-component-with-vs-code","target":"capability:debugging","kind":"explains"},{"source":"content:debug-a-cap-app-with-ui5-typescript-ui-component-with-vs-code","target":"capability:ui5-typescript","kind":"explains"},{"source":"content:debugging-in-abap-development-tool-part-1","target":"capability:debugging","kind":"explains"},{"source":"content:decision-logic-modernization-in-sap-integrations-using-sap-rpt-1-for-intelligent","target":"capability:predictive-models","kind":"explains"},{"source":"content:declarative-programming-in-cap-less-code-more-value","target":"artifact:sap-cds","kind":"explains"},{"source":"content:declarative-programming-in-cap-less-code-more-value","target":"capability:input-validation","kind":"explains"},{"source":"content:deep-insert-in-cap-using-composition-and-fiori-elements","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:deep-insert-in-cap-using-composition-and-fiori-elements","target":"capability:data-modelling","kind":"explains"},{"source":"content:dependency-injection-and-di-containers-on-cap-nodejs","target":"capability:typescript-patterns","kind":"explains"},{"source":"content:deploy-and-run-the-incident-management-application-in-the-sap-btp-kyma-runtime-w","target":"capability:deployment","kind":"explains"},{"source":"content:deploying-a-cap-app-with-fiori-app-standalone-html5-repo-host","target":"capability:deployment","kind":"explains"},{"source":"content:deploying-a-cap-app-with-fiori-app-standalone-html5-repo-host","target":"capability:generators","kind":"explains"},{"source":"content:deploying-a-cap-application-to-kyma-and-connecting-an-ios-app","target":"capability:deployment","kind":"explains"},{"source":"content:deploying-cap-services-with-the-in-memory-sqlite-database","target":"capability:database-connectors","kind":"explains"},{"source":"content:deploying-cap-services-with-the-in-memory-sqlite-database","target":"capability:deployment","kind":"explains"},{"source":"content:deploying-the-ui-of-an-mta-app-with-application-frontend-service","target":"capability:deployment","kind":"explains"},{"source":"content:deploying-your-first-cap-project-in-sap-cloud","target":"capability:deployment","kind":"explains"},{"source":"content:designing-multi-tenant-solutions-on-btp-architecture-and-prototype","target":"capability:multitenancy","kind":"explains"},{"source":"content:designing-scalable-integration-flows-in-sap-btp-using-pallets-and-adapters","target":"capability:integration-flows","kind":"explains"},{"source":"content:develop-a-full-stack-business-application-with-sap-cloud-application-programming","target":"capability:data-modelling","kind":"explains"},{"source":"content:develop-a-full-stack-business-application-with-sap-cloud-application-programming","target":"capability:metadata-publishing","kind":"explains"},{"source":"content:develop-and-deploy-a-html-angular-vue-react-app-on-sap-btp-access-s-4-op-part-ii","target":"capability:destinations","kind":"explains"},{"source":"content:develop-cap-project-with-lazyvim-in-docker","target":"capability:editor-support","kind":"explains"},{"source":"content:develop-cap-project-with-lazyvim-in-docker","target":"capability:local-development","kind":"explains"},{"source":"content:develop-sap-cap-apps-inside-a-vs-code-docker-container","target":"capability:local-development","kind":"explains"},{"source":"content:developing-a-fiori-elements-app-with-cap-and-fiori-tools","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:developing-a-fiori-elements-application-using-cap","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:developing-a-fiori-elements-list-report-and-object-page-on-a-cap-odata-service","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:developing-a-shell-plugin-for-work-zone-custom-notifications","target":"capability:notifications","kind":"explains"},{"source":"content:developing-business-services-with-cloud-application-programming-cap-model-in-sap","target":"capability:data-modelling","kind":"explains"},{"source":"content:developing-business-services-with-cloud-application-programming-cap-model-in-sap","target":"capability:authorization","kind":"explains"},{"source":"content:developing-cap-applications-in-sap-business-application-studio","target":"capability:editor-support","kind":"explains"},{"source":"content:developing-mobile-apps-with-sap-build","target":"capability:mobile-apps","kind":"explains"},{"source":"content:developing-mobile-apps-with-sap-build","target":"capability:destinations","kind":"explains"},{"source":"content:devtoberfest-2026-aba-32-business-ai-abap-cloud","target":"artifact:sap-abap-ai-sdk","kind":"explains"},{"source":"content:devtoberfest-2026-aba-32-business-ai-abap-cloud","target":"artifact:sap-joule","kind":"explains"},{"source":"content:devtoberfest-2026-aba-32-business-ai-abap-cloud","target":"capability:llm-integration","kind":"explains"},{"source":"content:devtoberfest-2026-aba-33-embedded-analytics-abap-cloud","target":"artifact:abap-cds","kind":"explains"},{"source":"content:devtoberfest-2026-aba-33-embedded-analytics-abap-cloud","target":"capability:analytic-modelling","kind":"explains"},{"source":"content:devtoberfest-2026-aba-44-abap-ai-sdk-islm","target":"artifact:sap-abap-ai-sdk","kind":"explains"},{"source":"content:devtoberfest-2026-aba-44-abap-ai-sdk-islm","target":"capability:llm-integration","kind":"explains"},{"source":"content:devtoberfest-2026-abap-development-tools-for-vs-code","target":"artifact:sap-adt-vscode","kind":"explains"},{"source":"content:devtoberfest-2026-abap-development-tools-for-vs-code","target":"artifact:sap-adt-mcp-server","kind":"explains"},{"source":"content:devtoberfest-2026-abap-environment-partner-solutions-certification","target":"artifact:btp-abap-environment","kind":"explains"},{"source":"content:devtoberfest-2026-abap-environment-partner-solutions-certification","target":"capability:abap-static-analysis","kind":"explains"},{"source":"content:devtoberfest-2026-agentic-development-with-sapui5","target":"artifact:ui5-plugins-coding-agents","kind":"explains"},{"source":"content:devtoberfest-2026-agentic-development-with-sapui5","target":"artifact:ui5-mcp-server","kind":"explains"},{"source":"content:devtoberfest-2026-agentic-development-with-sapui5","target":"capability:agent-guidance","kind":"explains"},{"source":"content:devtoberfest-2026-agentic-enterprise-automation-integration-suite-joule-studio","target":"artifact:sap-joule-studio","kind":"explains"},{"source":"content:devtoberfest-2026-agentic-loop-with-joule-for-developers-and-adt-mcp-server","target":"artifact:sap-adt-mcp-server","kind":"explains"},{"source":"content:devtoberfest-2026-agentic-loop-with-joule-for-developers-and-adt-mcp-server","target":"artifact:sap-joule-for-developers","kind":"explains"},{"source":"content:devtoberfest-2026-agentic-loop-with-joule-for-developers-and-adt-mcp-server","target":"artifact:sap-adt-vscode","kind":"explains"},{"source":"content:devtoberfest-2026-agentic-loop-with-joule-for-developers-and-adt-mcp-server","target":"artifact:sap-adt-eclipse","kind":"explains"},{"source":"content:devtoberfest-2026-agentic-ui-extensibility","target":"capability:ui5-flexibility","kind":"explains"},{"source":"content:devtoberfest-2026-agentic-workflows-n8n-joule-studio","target":"artifact:sap-joule-studio","kind":"explains"},{"source":"content:devtoberfest-2026-agentic-workflows-n8n-joule-studio","target":"artifact:btp-task-center","kind":"explains"},{"source":"content:devtoberfest-2026-agentic-workflows-n8n-joule-studio","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:devtoberfest-2026-ai-assisted-cap-development","target":"artifact:cap-js-mcp-server","kind":"explains"},{"source":"content:devtoberfest-2026-ai-assisted-cap-development","target":"artifact:capire-skills","kind":"explains"},{"source":"content:devtoberfest-2026-ai-assisted-cap-development","target":"capability:agent-guidance","kind":"explains"},{"source":"content:devtoberfest-2026-ai-assisted-sap-development-with-mcp","target":"artifact:ui5-mcp-server","kind":"explains"},{"source":"content:devtoberfest-2026-ai-assisted-sap-development-with-mcp","target":"artifact:marianfoo-mcp-sap-docs","kind":"explains"},{"source":"content:devtoberfest-2026-ai-assisted-sap-development-with-mcp","target":"artifact:arc-mcp-arc-1","kind":"explains"},{"source":"content:devtoberfest-2026-ai-assisted-sap-development-with-mcp","target":"capability:agent-code-access","kind":"explains"},{"source":"content:devtoberfest-2026-ai-assisted-sap-development-with-mcp","target":"capability:documentation","kind":"explains"},{"source":"content:devtoberfest-2026-ai-in-abap-with-islm","target":"artifact:sap-abap-ai-sdk","kind":"explains"},{"source":"content:devtoberfest-2026-ai-in-abap-with-islm","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:devtoberfest-2026-ai-in-abap-with-islm","target":"capability:llm-integration","kind":"explains"},{"source":"content:devtoberfest-2026-ai-in-abap-with-islm","target":"capability:retrieval-augmented-generation","kind":"explains"},{"source":"content:devtoberfest-2026-ai21-multiple-models","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:devtoberfest-2026-ai21-multiple-models","target":"capability:prompt-management","kind":"explains"},{"source":"content:devtoberfest-2026-ai21-multiple-models","target":"capability:agent-evals","kind":"explains"},{"source":"content:devtoberfest-2026-ai21-multiple-models","target":"capability:llm-integration","kind":"explains"},{"source":"content:devtoberfest-2026-ai22-joule-work-desktop-brain","target":"artifact:sap-joule-work","kind":"explains"},{"source":"content:devtoberfest-2026-ai22-joule-work-desktop-brain","target":"capability:agent-workspaces","kind":"explains"},{"source":"content:devtoberfest-2026-bridging-python-and-sap-hana-sqlalchemy-hana","target":"artifact:sap-hana","kind":"explains"},{"source":"content:devtoberfest-2026-bridging-python-and-sap-hana-sqlalchemy-hana","target":"capability:database-connectors","kind":"explains"},{"source":"content:devtoberfest-2026-cap-cds-oyster-extensibility","target":"artifact:sap-cds-oyster","kind":"explains"},{"source":"content:devtoberfest-2026-cap-cds-oyster-extensibility","target":"artifact:sap-cds-mtxs","kind":"explains"},{"source":"content:devtoberfest-2026-cap-cds-oyster-extensibility","target":"capability:tenant-extensibility","kind":"explains"},{"source":"content:devtoberfest-2026-cap-level-data-federation","target":"capability:replication","kind":"explains"},{"source":"content:devtoberfest-2026-cap-level-data-federation","target":"artifact:cap-js-cds-federation-synonyms","kind":"explains"},{"source":"content:devtoberfest-2026-cap-level-data-federation","target":"artifact:capire-xflights","kind":"explains"},{"source":"content:devtoberfest-2026-cap-level-data-federation","target":"artifact:capire-xtravels","kind":"explains"},{"source":"content:devtoberfest-2026-cap-mcp-ui5-webmcp","target":"artifact:cap-js-mcp","kind":"explains"},{"source":"content:devtoberfest-2026-cap-mcp-ui5-webmcp","target":"capability:mcp-servers","kind":"explains"},{"source":"content:devtoberfest-2026-cap-the-road-ahead","target":"artifact:sap-cds","kind":"explains"},{"source":"content:devtoberfest-2026-cap-the-road-ahead","target":"artifact:cap-js-mcp","kind":"explains"},{"source":"content:devtoberfest-2026-cap-the-road-ahead","target":"artifact:cap-js-ai","kind":"explains"},{"source":"content:devtoberfest-2026-cap-the-road-ahead","target":"capability:mcp-servers","kind":"explains"},{"source":"content:devtoberfest-2026-cap-the-road-ahead","target":"capability:audit-logging","kind":"explains"},{"source":"content:devtoberfest-2026-cap-the-road-ahead","target":"capability:change-tracking","kind":"explains"},{"source":"content:devtoberfest-2026-cap-the-road-ahead","target":"capability:agent-tooling","kind":"explains"},{"source":"content:devtoberfest-2026-cds-associations-and-joins","target":"artifact:abap-cds","kind":"explains"},{"source":"content:devtoberfest-2026-cds-associations-and-joins","target":"capability:data-modelling","kind":"explains"},{"source":"content:devtoberfest-2026-cloud-integration-chamber-of-horrors","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:devtoberfest-2026-cloud-integration-chamber-of-horrors","target":"capability:integration-flows","kind":"explains"},{"source":"content:devtoberfest-2026-code-based-ai-agents-baip","target":"capability:agent-tooling","kind":"explains"},{"source":"content:devtoberfest-2026-code-based-ai-agents-baip","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:devtoberfest-2026-code-based-ai-agents-baip","target":"artifact:lemaiwo-cap-agent-ui5-webui","kind":"explains"},{"source":"content:devtoberfest-2026-daniel-hutzel-brain","target":"capability:mcp-servers","kind":"explains"},{"source":"content:devtoberfest-2026-daniel-hutzel-brain","target":"capability:plugin-authoring","kind":"explains"},{"source":"content:devtoberfest-2026-daniel-hutzel-brain","target":"capability:agent-tooling","kind":"explains"},{"source":"content:devtoberfest-2026-daniel-hutzel-brain","target":"capability:agent-guidance","kind":"explains"},{"source":"content:devtoberfest-2026-dat-11-knowledge-graph-hana-cloud","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:devtoberfest-2026-dat-11-knowledge-graph-hana-cloud","target":"capability:multi-model-data","kind":"explains"},{"source":"content:devtoberfest-2026-dat-12-ai-agents-hana-embedded-ml","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:devtoberfest-2026-dat-12-ai-agents-hana-embedded-ml","target":"capability:agent-tooling","kind":"explains"},{"source":"content:devtoberfest-2026-dat-13-bw-modernization-bdc","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:devtoberfest-2026-dat-13-bw-modernization-bdc","target":"artifact:btp-datasphere","kind":"explains"},{"source":"content:devtoberfest-2026-dat-13-bw-modernization-bdc","target":"capability:warehouse-loading","kind":"explains"},{"source":"content:devtoberfest-2026-dat-31-bdc-contextualize-and-reason","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:devtoberfest-2026-dat-31-bdc-contextualize-and-reason","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:devtoberfest-2026-dat-31-bdc-contextualize-and-reason","target":"artifact:sap-joule","kind":"explains"},{"source":"content:devtoberfest-2026-dat-31-bdc-contextualize-and-reason","target":"capability:data-cataloguing","kind":"explains"},{"source":"content:devtoberfest-2026-dat-31-bdc-contextualize-and-reason","target":"capability:multi-model-data","kind":"explains"},{"source":"content:devtoberfest-2026-dat-41-data-product-governance-bdc","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:devtoberfest-2026-dat-41-data-product-governance-bdc","target":"capability:data-cataloguing","kind":"explains"},{"source":"content:devtoberfest-2026-developers-sap-com-in-your-dev-environment","target":"artifact:sap-developers-mcp","kind":"explains"},{"source":"content:devtoberfest-2026-developers-sap-com-in-your-dev-environment","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:devtoberfest-2026-developers-sap-com-in-your-dev-environment","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:devtoberfest-2026-developers-sap-com-in-your-dev-environment","target":"capability:documentation","kind":"explains"},{"source":"content:devtoberfest-2026-dry-cap-plugins","target":"capability:plugin-authoring","kind":"explains"},{"source":"content:devtoberfest-2026-ecc-to-cap-starter-kit","target":"capability:service-integration","kind":"explains"},{"source":"content:devtoberfest-2026-ecc-to-cap-starter-kit","target":"artifact:btp-destination","kind":"explains"},{"source":"content:devtoberfest-2026-ecc-to-cap-starter-kit","target":"artifact:btp-business-application-studio","kind":"explains"},{"source":"content:devtoberfest-2026-errors-in-bapis-or-rap-bos","target":"artifact:brandeis-consulting-abap-prc","kind":"explains"},{"source":"content:devtoberfest-2026-errors-in-bapis-or-rap-bos","target":"capability:error-handling","kind":"explains"},{"source":"content:devtoberfest-2026-event-driven-intelligence","target":"capability:event-mesh","kind":"explains"},{"source":"content:devtoberfest-2026-event-driven-intelligence","target":"artifact:btp-advanced-event-mesh","kind":"explains"},{"source":"content:devtoberfest-2026-fiori-elements-adt-vscode-ui-33","target":"artifact:sap-ux-fiori-mcp-server","kind":"explains"},{"source":"content:devtoberfest-2026-fiori-elements-adt-vscode-ui-33","target":"artifact:sap-adt-vscode","kind":"explains"},{"source":"content:devtoberfest-2026-fiori-elements-adt-vscode-ui-33","target":"artifact:sap-adt-mcp-server","kind":"explains"},{"source":"content:devtoberfest-2026-fiori-elements-adt-vscode-ui-33","target":"capability:agent-guidance","kind":"explains"},{"source":"content:devtoberfest-2026-from-apis-to-agent-tools-mcp-gateway","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:devtoberfest-2026-from-apis-to-agent-tools-mcp-gateway","target":"capability:mcp-servers","kind":"explains"},{"source":"content:devtoberfest-2026-from-apis-to-agent-tools-mcp-gateway","target":"capability:tool-governance","kind":"explains"},{"source":"content:devtoberfest-2026-hana-data-lake-files","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:devtoberfest-2026-hana-data-lake-files","target":"capability:object-storage","kind":"explains"},{"source":"content:devtoberfest-2026-how-to-build-application-jobs-abap-environment","target":"capability:async-processing","kind":"explains"},{"source":"content:devtoberfest-2026-how-to-build-application-jobs-abap-environment","target":"artifact:btp-abap-environment","kind":"explains"},{"source":"content:devtoberfest-2026-inbox-to-quotation-react-cap","target":"capability:frontend-boundary","kind":"explains"},{"source":"content:devtoberfest-2026-inbox-to-quotation-react-cap","target":"capability:websocket","kind":"explains"},{"source":"content:devtoberfest-2026-int-12-ai-adapter-credit-checks","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:devtoberfest-2026-int-12-ai-adapter-credit-checks","target":"capability:integration-flows","kind":"explains"},{"source":"content:devtoberfest-2026-int-13-joule-desktop-mcp-gateway","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:devtoberfest-2026-int-13-joule-desktop-mcp-gateway","target":"artifact:sap-joule-work","kind":"explains"},{"source":"content:devtoberfest-2026-int-13-joule-desktop-mcp-gateway","target":"capability:mcp-servers","kind":"explains"},{"source":"content:devtoberfest-2026-int-21-mcp-gateway-in-practice","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:devtoberfest-2026-int-21-mcp-gateway-in-practice","target":"artifact:btp-api-management","kind":"explains"},{"source":"content:devtoberfest-2026-int-21-mcp-gateway-in-practice","target":"capability:agent-systems-access","kind":"explains"},{"source":"content:devtoberfest-2026-int-31-agentic-ai-integration-suite","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:devtoberfest-2026-int-31-agentic-ai-integration-suite","target":"artifact:btp-api-management","kind":"explains"},{"source":"content:devtoberfest-2026-int-31-agentic-ai-integration-suite","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:devtoberfest-2026-int-31-agentic-ai-integration-suite","target":"capability:mcp-servers","kind":"explains"},{"source":"content:devtoberfest-2026-int-31-agentic-ai-integration-suite","target":"capability:tool-governance","kind":"explains"},{"source":"content:devtoberfest-2026-int-41-edge-integration-cell","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:devtoberfest-2026-int-41-edge-integration-cell","target":"artifact:sap-cloud-connector","kind":"explains"},{"source":"content:devtoberfest-2026-int-41-edge-integration-cell","target":"capability:integration-flows","kind":"explains"},{"source":"content:devtoberfest-2026-int-43-event-studio","target":"artifact:btp-advanced-event-mesh","kind":"explains"},{"source":"content:devtoberfest-2026-int-43-event-studio","target":"capability:event-mesh","kind":"explains"},{"source":"content:devtoberfest-2026-int23-agent-calls-sap","target":"artifact:btp-api-management","kind":"explains"},{"source":"content:devtoberfest-2026-int23-agent-calls-sap","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:devtoberfest-2026-int23-agent-calls-sap","target":"artifact:sap-joule-work","kind":"explains"},{"source":"content:devtoberfest-2026-int23-agent-calls-sap","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:devtoberfest-2026-int23-agent-calls-sap","target":"capability:mcp-servers","kind":"explains"},{"source":"content:devtoberfest-2026-int23-agent-calls-sap","target":"capability:rate-limiting","kind":"explains"},{"source":"content:devtoberfest-2026-intent-to-arcade-joulebert","target":"artifact:sap-joule-studio","kind":"explains"},{"source":"content:devtoberfest-2026-intent-to-arcade-joulebert","target":"artifact:sap-joule-work-dev-cli","kind":"explains"},{"source":"content:devtoberfest-2026-joule-work-agentic-thinking","target":"artifact:sap-joule-work","kind":"explains"},{"source":"content:devtoberfest-2026-joule-work-agentic-thinking","target":"artifact:sap-joule-studio","kind":"explains"},{"source":"content:devtoberfest-2026-joule-work-agentic-thinking","target":"capability:agent-workspaces","kind":"explains"},{"source":"content:devtoberfest-2026-meet-joule-studio-first-ai-agent","target":"artifact:sap-joule-studio","kind":"explains"},{"source":"content:devtoberfest-2026-meet-joule-studio-first-ai-agent","target":"capability:agent-tooling","kind":"explains"},{"source":"content:devtoberfest-2026-n8n-for-agentic-integrations","target":"capability:document-extraction","kind":"explains"},{"source":"content:devtoberfest-2026-news-from-custom-code-migration-ecc-to-s4hana","target":"artifact:sap-joule-for-developers","kind":"explains"},{"source":"content:devtoberfest-2026-news-from-custom-code-migration-ecc-to-s4hana","target":"artifact:sap-adt-mcp-server","kind":"explains"},{"source":"content:devtoberfest-2026-news-from-custom-code-migration-ecc-to-s4hana","target":"capability:abap-static-analysis","kind":"explains"},{"source":"content:devtoberfest-2026-rap-authorizations-business-users","target":"capability:authorization","kind":"explains"},{"source":"content:devtoberfest-2026-rap-authorizations-business-users","target":"artifact:abap-cds","kind":"explains"},{"source":"content:devtoberfest-2026-rap-draft-handling","target":"capability:draft-handling","kind":"explains"},{"source":"content:devtoberfest-2026-rap-draft-handling","target":"capability:odata","kind":"explains"},{"source":"content:devtoberfest-2026-rap-draft-handling","target":"artifact:sap-samples-abap-platform-refscen-flight","kind":"explains"},{"source":"content:devtoberfest-2026-rap-side-effects","target":"capability:abap-transactional-model","kind":"explains"},{"source":"content:devtoberfest-2026-rap-side-effects","target":"capability:async-processing","kind":"explains"},{"source":"content:devtoberfest-2026-real-pro-code-joule-studio","target":"artifact:sap-joule-studio","kind":"explains"},{"source":"content:devtoberfest-2026-real-pro-code-joule-studio","target":"artifact:sap-joule-work-dev-cli","kind":"explains"},{"source":"content:devtoberfest-2026-real-pro-code-joule-studio","target":"capability:agent-tooling","kind":"explains"},{"source":"content:devtoberfest-2026-real-pro-code-joule-studio","target":"capability:agent-guidance","kind":"explains"},{"source":"content:devtoberfest-2026-sap-bdc-and-ai","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:devtoberfest-2026-sap-bdc-and-ai","target":"artifact:sap-joule","kind":"explains"},{"source":"content:devtoberfest-2026-sap-bdc-and-ai","target":"artifact:sap-joule-studio","kind":"explains"},{"source":"content:devtoberfest-2026-sap-bdc-and-ai","target":"capability:data-cataloguing","kind":"explains"},{"source":"content:devtoberfest-2026-sap-customers-adopted-n8n","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:devtoberfest-2026-sap-customers-adopted-n8n","target":"capability:process-automation","kind":"explains"},{"source":"content:devtoberfest-2026-sap-themes-with-coding-agents","target":"artifact:sap-ui-theme-designer-plugins","kind":"explains"},{"source":"content:devtoberfest-2026-sap-themes-with-coding-agents","target":"capability:ui5-theming","kind":"explains"},{"source":"content:devtoberfest-2026-sap-themes-with-coding-agents","target":"capability:agent-guidance","kind":"explains"},{"source":"content:devtoberfest-2026-tabular-foundation-models","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:devtoberfest-2026-tabular-foundation-models","target":"artifact:sap-aicore-skills","kind":"explains"},{"source":"content:devtoberfest-2026-tabular-foundation-models","target":"capability:predictive-models","kind":"explains"},{"source":"content:devtoberfest-2026-tabular-predictions-tabpfn","target":"capability:predictive-models","kind":"explains"},{"source":"content:devtoberfest-2026-token-efficiency","target":"capability:agent-guidance","kind":"explains"},{"source":"content:devtoberfest-2026-ui5-views-type-safe-tsx","target":"capability:ui5-typescript","kind":"explains"},{"source":"content:devtoberfest-2026-ui5-views-type-safe-tsx","target":"artifact:ui5-community-jsx-runtime","kind":"explains"},{"source":"content:devtoberfest-2026-ui5-views-type-safe-tsx","target":"artifact:ui5-community-ui5-tooling-transpile","kind":"explains"},{"source":"content:diagrams-related-to-odata-entities-cap-ecc","target":"capability:model-visualisation","kind":"explains"},{"source":"content:discovering-fiori-elements-analytical-functions-with-sap-support-messages","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:discovering-fiori-elements-analytical-functions-with-sap-support-messages","target":"capability:analytical-queries","kind":"explains"},{"source":"content:display-of-hierarchical-data-in-sap-fiori-elements-using-cap","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:display-pdf-from-btp-forms-service-in-a-cap-sapui5-application","target":"capability:document-output","kind":"explains"},{"source":"content:distributed-resiliency-of-cap-applications-with-hana-multi-zone-replication","target":"capability:database-connectors","kind":"explains"},{"source":"content:diy-jdbc-sender-adapter-for-sap-integration-suite","target":"capability:integration-flows","kind":"explains"},{"source":"content:diy-jdbc-sender-adapter-for-sap-integration-suite","target":"capability:async-processing","kind":"explains"},{"source":"content:don-t-let-it-crash-is-this-the-new-cap-guideline","target":"capability:error-handling","kind":"explains"},{"source":"content:don-t-let-it-crash-is-this-the-new-cap-guideline","target":"artifact:sap-cds","kind":"explains"},{"source":"content:dynamic-authorisation-with-user-attributes-in-sap-cap-and-ams","target":"capability:authorization","kind":"explains"},{"source":"content:dynamic-criticality-in-cap-using-fiori-elements-and-nodejs","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:dynamic-field-control-in-cap-java-object-pages","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:dynamic-field-control-in-cap-java-object-pages","target":"artifact:miyasuta-fiori-dynamic-feature-control","kind":"explains"},{"source":"content:dynamic-odata-from-any-api-through-sap-btp-kyma","target":"capability:odata","kind":"explains"},{"source":"content:dynamic-odata-from-any-api-through-sap-btp-kyma","target":"capability:deployment","kind":"explains"},{"source":"content:e2e-sap-iot-to-sap-analytics-cloud","target":"capability:analytical-queries","kind":"explains"},{"source":"content:edge-integration-cell-design-deploy-and-manage-apis","target":"capability:openapi","kind":"explains"},{"source":"content:edge-integration-cell-design-deploy-and-manage-apis","target":"capability:rate-limiting","kind":"explains"},{"source":"content:edge-integration-cell-design-deploy-and-manage-apis","target":"artifact:btp-api-management","kind":"explains"},{"source":"content:effective-axios-error-logging-for-robust-sap-integrations","target":"capability:error-handling","kind":"explains"},{"source":"content:effective-from-june-30th-2026-xsuaa-deprecation-of-get-method-for-oauth-token-re","target":"capability:authorization","kind":"explains"},{"source":"content:effective-from-june-30th-2026-xsuaa-deprecation-of-get-method-for-oauth-token-re","target":"artifact:btp-authorization-and-trust-management","kind":"explains"},{"source":"content:efficient-data-entry-in-sap-fiori-elements-applications","target":"capability:draft-handling","kind":"explains"},{"source":"content:efficient-data-entry-in-sap-fiori-elements-applications","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:elevating-data-privacy-in-cap-genai-applications-with-cap-llm-plugin","target":"artifact:cap-llm-plugin","kind":"explains"},{"source":"content:elevating-data-privacy-in-cap-genai-applications-with-cap-llm-plugin","target":"capability:llm-integration","kind":"explains"},{"source":"content:elevating-data-privacy-in-cap-genai-applications-with-cap-llm-plugin","target":"capability:data-privacy","kind":"explains"},{"source":"content:embed-btp-attachment-reuse-ui-in-a-fiori-elements-cap-app","target":"capability:attachments","kind":"explains"},{"source":"content:empowering-your-data-analytics-with-gpt-3-and-sap-cap-integration","target":"capability:llm-integration","kind":"explains"},{"source":"content:empowering-your-data-analytics-with-gpt-3-and-sap-cap-integration","target":"capability:analytical-queries","kind":"explains"},{"source":"content:enable-app-to-app-navigation-in-bas","target":"capability:ui5-routing","kind":"explains"},{"source":"content:enabling-authorization-policies-in-ias-with-ams-and-cap","target":"capability:authorization","kind":"explains"},{"source":"content:enabling-authorization-policies-in-ias-with-ams-and-cap","target":"capability:authentication","kind":"explains"},{"source":"content:end-to-end-currency-conversion-integration-using-sap-integration-suite-sap-cpi","target":"capability:integration-flows","kind":"explains"},{"source":"content:end-to-end-currency-conversion-integration-using-sap-integration-suite-sap-cpi","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:end-to-end-error-handling-with-general-splitter-and-local-flows","target":"capability:integration-flows","kind":"explains"},{"source":"content:end-to-end-mail-adapter-setup-in-sap-cpi-using-gmail-step-by-step-guide","target":"capability:integration-flows","kind":"explains"},{"source":"content:enhancing-business-processes-with-sap-btp-ai-in-sap-integration-suite","target":"capability:llm-integration","kind":"explains"},{"source":"content:enhancing-business-processes-with-sap-btp-ai-in-sap-integration-suite","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:enhancing-business-processes-with-sap-btp-ai-in-sap-integration-suite","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:enhancing-customer-master-with-a-custom-tab-using-sap-taxi-framework-badi-se80","target":"capability:abap-extensibility","kind":"explains"},{"source":"content:enhancing-sap-business-events-with-custom-payload-fields-using-rap","target":"capability:event-mesh","kind":"explains"},{"source":"content:enhancing-standard-bapis-when-and-how-to-do-it","target":"capability:abap-extensibility","kind":"explains"},{"source":"content:enhancing-standard-cds-views-in-fiori-my-inbox","target":"capability:task-uis","kind":"explains"},{"source":"content:enhancing-unit-testing-in-cap-java-with-github-copilot","target":"capability:testing","kind":"explains"},{"source":"content:enhancing-unit-testing-in-cap-java-with-github-copilot","target":"capability:agent-guidance","kind":"explains"},{"source":"content:evaluating-saps-new-mcp-servers-ui5-cap-fiori-tools","target":"capability:agent-code-access","kind":"explains"},{"source":"content:event-driven-architecture-with-event-mesh-part-1","target":"capability:event-mesh","kind":"explains"},{"source":"content:event-driven-architecture-with-event-mesh-part-2","target":"capability:event-mesh","kind":"explains"},{"source":"content:event-driven-cap-on-kyma-with-agentic-ai-and-ui-auto-refresh","target":"capability:agent-tooling","kind":"explains"},{"source":"content:event-driven-cap-on-kyma-with-agentic-ai-and-ui-auto-refresh","target":"capability:deployment","kind":"explains"},{"source":"content:event-driven-extensions-for-sap-successfactors-on-sap-btp-connecting-the-dots","target":"capability:event-mesh","kind":"explains"},{"source":"content:event-driven-extensions-for-sap-successfactors-on-sap-btp-connecting-the-dots","target":"capability:service-integration","kind":"explains"},{"source":"content:event-driven-multi-tenant-architecture-with-cap-and-sap-event-mesh","target":"capability:event-mesh","kind":"explains"},{"source":"content:event-driven-multi-tenant-architecture-with-cap-and-sap-event-mesh","target":"capability:multitenancy","kind":"explains"},{"source":"content:event-enabling-sap-data-replication-framework-with-advanced-event-mesh-aifaem","target":"capability:event-mesh","kind":"explains"},{"source":"content:event-enabling-sap-data-replication-framework-with-advanced-event-mesh-aifaem","target":"artifact:btp-advanced-event-mesh","kind":"explains"},{"source":"content:event-mesh-amqp-the-retry-trap-nobody-warns-you-about","target":"capability:event-mesh","kind":"explains"},{"source":"content:event-mesh-amqp-the-retry-trap-nobody-warns-you-about","target":"capability:async-processing","kind":"explains"},{"source":"content:event-task-scheduling-in-cap-nodejs-alpha","target":"capability:async-processing","kind":"explains"},{"source":"content:execute-oauth2-client-credentials-protected-rest-request-from-cap","target":"capability:authentication","kind":"explains"},{"source":"content:execute-oauth2-client-credentials-protected-rest-request-from-cap","target":"capability:destinations","kind":"explains"},{"source":"content:explaining-sap-joule-for-hr-business-users-functional-consultants","target":"artifact:sap-joule","kind":"explains"},{"source":"content:explaining-sap-joule-for-hr-business-users-functional-consultants","target":"capability:identity-provisioning","kind":"explains"},{"source":"content:exploring-sap-salesforce-adapter-retry-mechanism-with-jms-queue","target":"capability:integration-flows","kind":"explains"},{"source":"content:exploring-the-typescript-ecosystem-with-cds-typer-part-1","target":"artifact:cap-js-cds-typer","kind":"explains"},{"source":"content:exploring-the-typescript-ecosystem-with-cds-typer-part-1","target":"capability:typing","kind":"explains"},{"source":"content:exploring-the-typescript-ecosystem-with-cds-typer-part-2","target":"artifact:cap-js-cds-typer","kind":"explains"},{"source":"content:exploring-the-typescript-ecosystem-with-cds-typer-part-2","target":"capability:typing","kind":"explains"},{"source":"content:expose-rfcs-as-mcp-tools-in-integration-suite","target":"capability:mcp-servers","kind":"explains"},{"source":"content:expose-rfcs-as-mcp-tools-in-integration-suite","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:expose-rfcs-as-mcp-tools-in-integration-suite","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:expose-s-4hana-cloud-odata-api-as-an-mcp-server-via-cap-node-js-2","target":"capability:mcp-servers","kind":"explains"},{"source":"content:expose-s-4hana-cloud-odata-api-as-an-mcp-server-via-cap-node-js-2","target":"artifact:cap-js-mcp","kind":"explains"},{"source":"content:expose-s-4hana-cloud-odata-api-as-an-mcp-server-via-cap-node-js","target":"capability:mcp-servers","kind":"explains"},{"source":"content:expose-s-4hana-cloud-odata-api-as-an-mcp-server-via-cap-node-js","target":"capability:destinations","kind":"explains"},{"source":"content:exposing-calculation-view-with-dynamic-client-via-odata-api","target":"capability:odata","kind":"explains"},{"source":"content:exposing-calculation-view-with-dynamic-client-via-odata-api","target":"capability:database-connectors","kind":"explains"},{"source":"content:exposing-sap-s4-onprem-data-to-external-system-odata-service-btp-destination-con","target":"capability:destinations","kind":"explains"},{"source":"content:extend-cap-validations-with-the-capval-plugin","target":"capability:input-validation","kind":"explains"},{"source":"content:extend-cap-validations-with-the-capval-plugin","target":"artifact:mertsap-capval","kind":"explains"},{"source":"content:extend-sap-successfactors-on-sap-btp-with-cap-create-the-cap-service","target":"capability:odata","kind":"explains"},{"source":"content:extend-sap-successfactors-on-sap-btp-with-cap-create-the-cap-service","target":"capability:draft-handling","kind":"explains"},{"source":"content:extend-sap-successfactors-on-sap-btp-with-cap-create-the-cap-service","target":"capability:service-integration","kind":"explains"},{"source":"content:extend-sap-successfactors-on-sap-btp-with-cap-import-sap-successfactors-odata-se","target":"capability:service-integration","kind":"explains"},{"source":"content:extend-sap-successfactors-on-sap-btp-with-cap-import-sap-successfactors-odata-se","target":"capability:destinations","kind":"explains"},{"source":"content:extend-successfactors-on-btp-with-cap-deploy-to-hana-cloud","target":"capability:database-connectors","kind":"explains"},{"source":"content:extend-successfactors-on-btp-with-cap-deploy-to-hana-cloud","target":"capability:deployment","kind":"explains"},{"source":"content:extend-successfactors-on-btp-with-cap-develop-the-fiori-elements-application","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:extend-upload-set-to-fiori-elements-and-utilize-dms","target":"capability:attachments","kind":"explains"},{"source":"content:extend-upload-set-with-table-to-fiori-elements-and-utilize-object-store","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:extend-upload-set-with-table-to-fiori-elements-and-utilize-object-store","target":"capability:attachments","kind":"explains"},{"source":"content:extending-fiori-elements-with-the-flexible-programming-model","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:extending-sap-sales-and-service-cloud-v2-using-cap","target":"capability:destinations","kind":"explains"},{"source":"content:extending-sap-sales-and-service-cloud-v2-using-cap","target":"capability:reference-apps","kind":"explains"},{"source":"content:extending-standard-s-4-hana-odata-api-s","target":"capability:odata","kind":"explains"},{"source":"content:extending-standard-s-4-hana-odata-api-s","target":"capability:abap-extensibility","kind":"explains"},{"source":"content:extensions-for-sap-build-process-automation-actions-from-cap-nodejs","target":"capability:workflow-integration","kind":"explains"},{"source":"content:extract-rev-trac-requests-by-custom-program-and-rev-trac-api","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:federating-replicating-and-caching-remote-data-in-cap-part-1","target":"artifact:mikezaschka-cds-data-federation","kind":"explains"},{"source":"content:federating-replicating-and-caching-remote-data-in-cap-part-2","target":"artifact:mikezaschka-cds-data-federation","kind":"explains"},{"source":"content:finally-an-mcp-server-for-abap","target":"artifact:marianfoo-mcp-sap-docs","kind":"explains"},{"source":"content:finally-an-mcp-server-for-abap","target":"capability:documentation","kind":"explains"},{"source":"content:fiori-elements-analytical-table-with-cap-does-it-work-with-v2-and-v4","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:fiori-elements-analytical-table-with-cap-does-it-work-with-v2-and-v4","target":"capability:analytical-queries","kind":"explains"},{"source":"content:fiori-elements-standard-app-extension-using-virtual-elements","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:first-java-cap-application","target":"capability:data-modelling","kind":"explains"},{"source":"content:first-java-cap-application","target":"capability:database-connectors","kind":"explains"},{"source":"content:first-java-cap-application","target":"capability:generators","kind":"explains"},{"source":"content:first-release-of-the-sap-fiori-mcp-server","target":"artifact:sap-ux-fiori-mcp-server","kind":"explains"},{"source":"content:first-release-of-the-sap-fiori-mcp-server","target":"capability:agent-code-access","kind":"explains"},{"source":"content:fixing-the-npm-notarget-error-for-sap-hdi-deploy","target":"capability:local-development","kind":"explains"},{"source":"content:from-application-logging-to-cloud-logging-service-innovation-guide","target":"capability:logging","kind":"explains"},{"source":"content:from-application-logging-to-cloud-logging-service-innovation-guide","target":"artifact:btp-application-logging","kind":"explains"},{"source":"content:from-application-logging-to-cloud-logging-service-innovation-guide","target":"artifact:btp-cloud-logging","kind":"explains"},{"source":"content:from-application-logging-to-cloud-logging-service-migration-guide","target":"capability:logging","kind":"explains"},{"source":"content:from-dashboard-to-conversational-ai-in-minutes-adding-mcp-to-an-existing-cap-app","target":"capability:mcp-servers","kind":"explains"},{"source":"content:from-r3-abap-to-cap-and-fiori-elements-deployment","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:from-r3-abap-to-cap-and-fiori-elements-deployment","target":"capability:deployment","kind":"explains"},{"source":"content:from-r3-abap-to-cap-and-fiori-elements-on-sap-cloud","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:from-rest-to-datasphere-a-cap-based-integration-approach","target":"capability:destinations","kind":"explains"},{"source":"content:from-sap-integration-suite-iflow-to-mcp-tools-exposing-odata-apis-to-ai-agents","target":"capability:mcp-servers","kind":"explains"},{"source":"content:from-sap-integration-suite-iflow-to-mcp-tools-exposing-odata-apis-to-ai-agents","target":"capability:authentication","kind":"explains"},{"source":"content:from-sap-integration-suite-iflow-to-mcp-tools-exposing-odata-apis-to-ai-agents","target":"capability:tool-governance","kind":"explains"},{"source":"content:from-sap-sales-and-service-cloud-v2-apis-to-ai-building-an-mcp-server-with-cap-n","target":"capability:mcp-servers","kind":"explains"},{"source":"content:from-sap-sales-and-service-cloud-v2-apis-to-ai-building-an-mcp-server-with-cap-n","target":"artifact:cap-js-mcp","kind":"explains"},{"source":"content:from-segw-and-legacy-ui5-to-rap-with-arc-1","target":"artifact:arc-mcp-arc-1","kind":"explains"},{"source":"content:from-segw-and-legacy-ui5-to-rap-with-arc-1","target":"capability:abap-transactional-model","kind":"explains"},{"source":"content:from-segw-and-legacy-ui5-to-rap-with-arc-1","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:from-segw-and-legacy-ui5-to-rap-with-arc-1","target":"artifact:ui5-mcp-server","kind":"explains"},{"source":"content:from-segw-and-legacy-ui5-to-rap-with-arc-1","target":"artifact:sap-ux-fiori-mcp-server","kind":"explains"},{"source":"content:from-segw-to-odata-publish-expose-your-cds-view-as-odata-in-s-4hana","target":"capability:odata","kind":"explains"},{"source":"content:from-segw-to-odata-publish-expose-your-cds-view-as-odata-in-s-4hana","target":"artifact:abap-cds","kind":"explains"},{"source":"content:from-seo-to-meo-designing-joule-ready-api-layers-for-sap-commerce-cloud","target":"capability:openapi","kind":"explains"},{"source":"content:from-strategy-doc-to-runtime-rule-embedding-sap-ai-standards","target":"capability:agent-guidance","kind":"explains"},{"source":"content:from-xsuaa-to-ams-policy-based-authorization-for-s4hana-extensions","target":"capability:authorization","kind":"explains"},{"source":"content:from-zero-to-fiori-building-sap-apps-with-ai-agents","target":"capability:agent-guidance","kind":"explains"},{"source":"content:full-stack-typescript-app-for-cloud-foundry-sample-repository","target":"capability:typescript-patterns","kind":"explains"},{"source":"content:full-stack-typescript-app-for-cloud-foundry-sample-repository","target":"capability:reference-apps","kind":"explains"},{"source":"content:fullstack-cap-with-hana-cloud-part-1-local-with-sqlite","target":"capability:database-connectors","kind":"explains"},{"source":"content:fullstack-cap-with-hana-cloud-part-1-local-with-sqlite","target":"capability:local-development","kind":"explains"},{"source":"content:fullstack-cap-with-hana-cloud-part-2-cds-annotations","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:fullstack-cap-with-hana-cloud-part-3-setting-up-hana-cloud","target":"capability:database-connectors","kind":"explains"},{"source":"content:fullstack-cap-with-hana-cloud-part-4-connect-and-deploy","target":"capability:database-connectors","kind":"explains"},{"source":"content:fullstack-cap-with-hana-cloud-part-4-connect-and-deploy","target":"capability:deployment","kind":"explains"},{"source":"content:fullstack-cap-with-hana-cloud-part-5-btp-destination","target":"capability:destinations","kind":"explains"},{"source":"content:fullstack-cap-with-hana-cloud-part-6-fiori-to-html5-repository","target":"capability:deployment","kind":"explains"},{"source":"content:genai-mail-insights-generative-ai-hub-for-customer-support","target":"capability:llm-integration","kind":"explains"},{"source":"content:genai-mail-insights-generative-ai-hub-for-customer-support","target":"capability:reference-apps","kind":"explains"},{"source":"content:generate-and-download-pdfs-on-the-fly-in-cap","target":"capability:document-output","kind":"explains"},{"source":"content:generating-adobe-form-using-rap-framework-odata-services","target":"capability:data-modelling","kind":"explains"},{"source":"content:generating-adobe-form-using-rap-framework-odata-services","target":"capability:odata","kind":"explains"},{"source":"content:generating-adobe-form-using-rap-framework-odata-services","target":"capability:document-output","kind":"explains"},{"source":"content:generating-pdf-on-btp-cf-using-cap-and-puppeteer","target":"capability:document-output","kind":"explains"},{"source":"content:generation-of-message-processing-logs-report-for-edi-transactions-using-sap-ci","target":"capability:integration-flows","kind":"explains"},{"source":"content:get-authenticated-user-information-with-cap-using-the-xsuaa-api","target":"capability:authorization","kind":"explains"},{"source":"content:get-familiar-with-your-first-capm-project-using-the-cds-graphical-modeler","target":"capability:editor-support","kind":"explains"},{"source":"content:getting-started-with-cap-on-postgresql-nodejs","target":"artifact:sapmentors-cds-pg","kind":"explains"},{"source":"content:getting-started-with-cap-on-postgresql-nodejs","target":"artifact:mikezaschka-cds-dbm","kind":"explains"},{"source":"content:getting-started-with-cap-on-postgresql-nodejs","target":"artifact:cap-js-postgres","kind":"explains"},{"source":"content:getting-started-with-cap-on-postgresql-nodejs","target":"capability:database-connectors","kind":"explains"},{"source":"content:getting-started-with-cds-ql-in-nodejs-for-cap-101-on-how-to-query-data","target":"artifact:sap-cds","kind":"explains"},{"source":"content:getting-started-with-sap-event-mesh-concepts-setup-and-best-practices","target":"capability:event-mesh","kind":"explains"},{"source":"content:getting-started-with-sap-event-mesh-concepts-setup-and-best-practices","target":"artifact:btp-integration-suite-event-mesh","kind":"explains"},{"source":"content:getting-started-with-unit-testing-in-cap-java","target":"capability:testing","kind":"explains"},{"source":"content:getting-your-head-into-cap-multitenancy","target":"capability:multitenancy","kind":"explains"},{"source":"content:github-copilot-vscode-my-own-sap-development-rules","target":"capability:agent-guidance","kind":"explains"},{"source":"content:give-your-ai-agent-some-tools-introducing-the-ui5-mcp-server","target":"artifact:ui5-mcp-server","kind":"explains"},{"source":"content:give-your-ai-agent-some-tools-introducing-the-ui5-mcp-server","target":"capability:agent-code-access","kind":"explains"},{"source":"content:give-your-ai-agent-some-tools-introducing-the-ui5-mcp-server","target":"capability:generators","kind":"explains"},{"source":"content:governance-at-scale-why-a-clean-core-is-what-makes-agent-governance-enforceable","target":"capability:mcp-servers","kind":"explains"},{"source":"content:governance-at-scale-why-a-clean-core-is-what-makes-agent-governance-enforceable","target":"capability:agent-tooling","kind":"explains"},{"source":"content:graph-intro-series-part-8-use-graph-with-odata-v4","target":"capability:odata","kind":"explains"},{"source":"content:graph-on-integration-suite-simplifying-multi-api-data-retrieval-with-unified-bus","target":"artifact:btp-api-management","kind":"explains"},{"source":"content:guide-to-process-automation-apis-part-i-getting-started","target":"capability:process-automation","kind":"explains"},{"source":"content:guide-to-process-automation-apis-part-i-getting-started","target":"capability:authentication","kind":"explains"},{"source":"content:hana-cloud-knowledge-graph-for-ai-driven-tender-analysis","target":"capability:retrieval-augmented-generation","kind":"explains"},{"source":"content:hana-cloud-knowledge-graph-for-ai-driven-tender-analysis","target":"capability:database-connectors","kind":"explains"},{"source":"content:hana-clouds-vector-embedding-in-cap-compared-with-openai","target":"capability:retrieval-augmented-generation","kind":"explains"},{"source":"content:hana-clouds-vector-embedding-in-cap-compared-with-openai","target":"artifact:cap-llm-plugin","kind":"explains"},{"source":"content:hana-database-migration-handling-incompatible-changes","target":"capability:schema-evolution","kind":"explains"},{"source":"content:hana-sql-notebooks-in-sap-build-business-application-studio-bas-visual-studio-co","target":"artifact:btp-business-application-studio","kind":"explains"},{"source":"content:handling-concurrent-updates-in-sap-cap-java","target":"capability:concurrency-control","kind":"explains"},{"source":"content:handling-csv-data-deployment-in-cap-hdi-without-data-loss","target":"capability:seed-data","kind":"explains"},{"source":"content:handling-file-routing-and-alerts-in-sap-cpi-based-on-file-type","target":"capability:integration-flows","kind":"explains"},{"source":"content:hands-on-with-the-cap-operator-and-the-partner-reference-application","target":"capability:reference-apps","kind":"explains"},{"source":"content:hands-on-with-the-cap-operator-and-the-partner-reference-application","target":"capability:deployment","kind":"explains"},{"source":"content:hands-on-with-the-cap-operator-and-the-partner-reference-application","target":"capability:multitenancy","kind":"explains"},{"source":"content:hello-react-and-vue-caps-new-ui-layer","target":"artifact:sap-cds","kind":"explains"},{"source":"content:hey-abap-cloud-please-let-me-save-my-data-export-to-azure-storage-please-part-4","target":"capability:destinations","kind":"explains"},{"source":"content:how-i-use-ai-for-development-and-why-context-matters","target":"capability:agent-code-access","kind":"explains"},{"source":"content:how-i-use-ai-for-development-and-why-context-matters","target":"capability:documentation","kind":"explains"},{"source":"content:how-i-use-ai-for-development-and-why-context-matters","target":"artifact:marianfoo-mcp-sap-docs","kind":"explains"},{"source":"content:how-redwood-software-and-sap-are-shaping-the-next-era-of-automation-with-joule-s","target":"capability:agent-tooling","kind":"explains"},{"source":"content:how-redwood-software-and-sap-are-shaping-the-next-era-of-automation-with-joule-s","target":"artifact:sap-joule-studio","kind":"explains"},{"source":"content:how-redwood-software-and-sap-are-shaping-the-next-era-of-automation-with-joule-s","target":"artifact:sap-joule","kind":"explains"},{"source":"content:how-to-access-hana-cloud-database-and-hdi-container-in-btp","target":"capability:database-connectors","kind":"explains"},{"source":"content:how-to-access-on-premise-odata-from-bas-in-capm-development","target":"capability:destinations","kind":"explains"},{"source":"content:how-to-access-sap-cloud-logging-service-dashboards-using-ias-saml-authentication","target":"capability:authentication","kind":"explains"},{"source":"content:how-to-access-sap-cloud-logging-service-dashboards-using-ias-saml-authentication","target":"artifact:btp-cloud-logging","kind":"explains"},{"source":"content:how-to-access-sap-cloud-logging-service-dashboards-using-ias-saml-authentication","target":"artifact:btp-cloud-identity-services","kind":"explains"},{"source":"content:how-to-add-odata-v2-adapter-proxy-to-your-cap-project","target":"capability:odata","kind":"explains"},{"source":"content:how-to-approve-reject-task-via-api-in-sap-build-process-automation","target":"artifact:btp-build-process-automation","kind":"explains"},{"source":"content:how-to-approve-reject-task-via-api-in-sap-build-process-automation","target":"capability:task-uis","kind":"explains"},{"source":"content:how-to-approve-reject-task-via-api-in-sap-build-process-automation","target":"capability:workflow-integration","kind":"explains"},{"source":"content:how-to-build-reusable-plugin-components-for-cap-java-applications","target":"capability:plugin-authoring","kind":"explains"},{"source":"content:how-to-check-fiori-apps-related-authorization-object-mass","target":"capability:authorization","kind":"explains"},{"source":"content:how-to-configure-retry-mechanism-in-sap-btp-ci-is-to-handle-only-connectivity-er","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:how-to-connect-claude-code-to-abap-with-zero-config-mcp","target":"capability:agent-code-access","kind":"explains"},{"source":"content:how-to-connect-to-remote-services-locally-in-a-cap-application","target":"capability:destinations","kind":"explains"},{"source":"content:how-to-connect-to-remote-services-locally-in-a-cap-application","target":"capability:local-development","kind":"explains"},{"source":"content:how-to-consume-ui5-custom-libraries-in-bas-or-vs-code","target":"capability:ui5-build-tooling","kind":"explains"},{"source":"content:how-to-create-a-purchase-order-through-bapi-in-the-sap-through-program-se38-t-co","target":"capability:error-handling","kind":"explains"},{"source":"content:how-to-create-an-application-job-apj-in-sap-s-4hana-abap-with-single-values-sele","target":"capability:job-scheduling","kind":"explains"},{"source":"content:how-to-create-and-expose-odata-apis","target":"capability:integration-flows","kind":"explains"},{"source":"content:how-to-deploy-a-custom-fiori-app-to-s-4hana-public-cloud-and-add-a-tile-in-sap-b","target":"capability:launchpad-content","kind":"explains"},{"source":"content:how-to-enable-sap-audit-log-viewer-service-to-collect-all-audit-logs-from-btp-se","target":"capability:audit-logging","kind":"explains"},{"source":"content:how-to-enable-sap-audit-log-viewer-service-to-collect-all-audit-logs-from-btp-se","target":"artifact:btp-audit-log","kind":"explains"},{"source":"content:how-to-extend-abap-test-cockpit-on-sap-btp-for-custom-use-cases","target":"capability:abap-static-analysis","kind":"explains"},{"source":"content:how-to-handle-usernames-global-user-ids-and-external-ids-in-your-landscape","target":"capability:identity-provisioning","kind":"explains"},{"source":"content:how-to-implement-alert-notification-service-in-cap","target":"capability:notifications","kind":"explains"},{"source":"content:how-to-implement-sap-btp-audit-log-service-in-a-cap-application","target":"capability:audit-logging","kind":"explains"},{"source":"content:how-to-implement-sap-btp-audit-log-service-in-a-cap-application","target":"artifact:cap-js-audit-logging","kind":"explains"},{"source":"content:how-to-implement-sap-change-document","target":"capability:change-tracking","kind":"explains"},{"source":"content:how-to-mass-upload-from-a-spreadsheet-file-into-an-sap-fiori-app-in-sap-btp-abap","target":"capability:data-import-export","kind":"explains"},{"source":"content:how-to-merge-two-separate-smart-forms-into-a-single-pdf-in-sap","target":"capability:document-output","kind":"explains"},{"source":"content:how-to-perform-initial-loads-from-s-4hana-to-advanced-event-mesh-with-odata-poll","target":"capability:event-mesh","kind":"explains"},{"source":"content:how-to-perform-initial-loads-from-s-4hana-to-advanced-event-mesh-with-odata-poll","target":"capability:odata","kind":"explains"},{"source":"content:how-to-perform-initial-loads-from-s-4hana-to-advanced-event-mesh-with-odata-poll","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:how-to-perform-initial-loads-from-s-4hana-to-advanced-event-mesh-with-odata-poll","target":"artifact:btp-advanced-event-mesh","kind":"explains"},{"source":"content:how-to-reduce-prompt-token-costs-using-toon","target":"capability:llm-integration","kind":"explains"},{"source":"content:how-to-rename-an-odata-v4-service","target":"capability:odata","kind":"explains"},{"source":"content:how-to-rename-an-odata-v4-service","target":"capability:metadata-publishing","kind":"explains"},{"source":"content:how-to-scan-custom-abap-for-security-issues-in-eclipse-step-by-step","target":"capability:abap-static-analysis","kind":"explains"},{"source":"content:how-to-share-tables-across-different-cap-projects","target":"artifact:miyasuta-cap-cross-container","kind":"explains"},{"source":"content:how-to-share-tables-across-different-cap-projects","target":"capability:hana-native-artifacts","kind":"explains"},{"source":"content:how-to-subscribe-or-fetch-data-from-solace-to-cpi-using-aem-adapter-part-5","target":"capability:error-handling","kind":"explains"},{"source":"content:how-to-subscribe-or-fetch-data-from-solace-to-cpi-using-aem-adapter-part-5","target":"capability:event-mesh","kind":"explains"},{"source":"content:how-to-transfer-a-file-from-the-cap-backend","target":"capability:attachments","kind":"explains"},{"source":"content:how-to-use-npm-modules-like-crypto-js-in-sapui5-using-ui5-tooling-modules","target":"artifact:ui5-community-ui5-tooling-modules","kind":"explains"},{"source":"content:how-to-use-reserved-words-as-property-names-in-your-odata-service","target":"capability:metadata-publishing","kind":"explains"},{"source":"content:how-to-use-sap-data-intelligence-with-sap-cloud-connector","target":"artifact:sap-cloud-connector","kind":"explains"},{"source":"content:how-to-use-sap-data-intelligence-with-sap-cloud-connector","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:how-we-could-potentially-have-nestjs-as-runtime-for-sap-cap","target":"capability:typescript-patterns","kind":"explains"},{"source":"content:html5-timeout-for-cap-destinations-in-mta-yaml","target":"capability:deployment","kind":"explains"},{"source":"content:html5-timeout-for-cap-destinations-in-mta-yaml","target":"capability:destinations","kind":"explains"},{"source":"content:hybrid-testing-using-postgresql-on-btp-hyperscaler-option","target":"capability:database-connectors","kind":"explains"},{"source":"content:hybrid-testing-using-postgresql-on-btp-hyperscaler-option","target":"capability:local-development","kind":"explains"},{"source":"content:identity-and-access-management-in-sap-navigating-sso-across-web-and-on-prem-land","target":"capability:authentication","kind":"explains"},{"source":"content:implementation-of-observability-using-opentelemetry-in-sap-btp","target":"capability:telemetry","kind":"explains"},{"source":"content:implementing-b2b-advisory-in-sap-integration-suite-for-custom-xml-edifact-scenar","target":"capability:trading-partner-agreements","kind":"explains"},{"source":"content:implementing-b2b-advisory-in-sap-integration-suite-for-custom-xml-edifact-scenar","target":"artifact:btp-trading-partner-management","kind":"explains"},{"source":"content:implementing-custom-audit-logging-in-cap-applications","target":"capability:audit-logging","kind":"explains"},{"source":"content:implementing-custom-audit-logging-in-cap-applications","target":"artifact:cap-js-audit-logging","kind":"explains"},{"source":"content:implementing-dynamic-subaccount-based-routing-in-sap-cap","target":"capability:destinations","kind":"explains"},{"source":"content:implementing-event-driven-architecture-in-cap-java-using-sap-event-mesh","target":"capability:event-mesh","kind":"explains"},{"source":"content:importing-an-external-data-model-using-cds-graphical-modeler-for-visual-studio-c","target":"capability:metadata-publishing","kind":"explains"},{"source":"content:importing-an-external-data-model-using-cds-graphical-modeler-for-visual-studio-c","target":"capability:editor-support","kind":"explains"},{"source":"content:importing-external-edmx-files-using-the-cds-graphical-modeler","target":"capability:metadata-publishing","kind":"explains"},{"source":"content:importing-external-edmx-files-using-the-cds-graphical-modeler","target":"capability:editor-support","kind":"explains"},{"source":"content:importing-sap-cds-common-cds-using-the-cds-graphical-modeler","target":"capability:editor-support","kind":"explains"},{"source":"content:importing-sap-cds-common-cds-using-the-cds-graphical-modeler","target":"capability:data-modelling","kind":"explains"},{"source":"content:improved-search-performance-in-sap-btp-core-sap-cloud-application-programming-mo","target":"capability:search","kind":"explains"},{"source":"content:improving-exception-handling-using-generative-ai-in-sap-cloud-integration-sap-ci","target":"capability:integration-flows","kind":"explains"},{"source":"content:improving-exception-handling-using-generative-ai-in-sap-cloud-integration-sap-ci","target":"capability:llm-integration","kind":"explains"},{"source":"content:information-map-introduction-series-graph-in-sap-integration-suite","target":"artifact:btp-api-management","kind":"explains"},{"source":"content:information-map-introduction-series-graph-in-sap-integration-suite","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:insights-of-cloud-sdk-cap-xsuaa-ssh-and-other-btp-topics-from-2021","target":"capability:authorization","kind":"explains"},{"source":"content:instance-sharing-sap-cloud-logging","target":"artifact:btp-cloud-logging","kind":"explains"},{"source":"content:integrate-cap-as-outbound-channel-for-sap-document-ai","target":"capability:document-extraction","kind":"explains"},{"source":"content:integrate-document-information-extraction-into-ui5-application","target":"capability:document-extraction","kind":"explains"},{"source":"content:integrate-sap-business-technology-platform-audit-logs-with-ibm-security-qradar","target":"capability:audit-logging","kind":"explains"},{"source":"content:integrate-sap-business-technology-platform-audit-logs-with-ibm-security-qradar","target":"artifact:btp-audit-log","kind":"explains"},{"source":"content:integrating-a-custom-ai-model-into-cap-using-ai-launchpad","target":"capability:llm-integration","kind":"explains"},{"source":"content:integrating-s4hana-invoicing-with-ksef-using-event-mesh-and-cap","target":"capability:event-mesh","kind":"explains"},{"source":"content:integrating-sap-cloud-identity-services-identity-authentication-ias-with-sap-aud","target":"capability:audit-logging","kind":"explains"},{"source":"content:integrating-sap-cloud-identity-services-identity-authentication-ias-with-sap-aud","target":"artifact:btp-audit-log","kind":"explains"},{"source":"content:integrating-sap-cloud-identity-services-identity-authentication-ias-with-sap-aud","target":"artifact:btp-cloud-identity-services","kind":"explains"},{"source":"content:integrating-sap-cpi-with-microsoft-sharepoint-part-2-creating-an-api-to-upload-f","target":"capability:integration-flows","kind":"explains"},{"source":"content:integrating-sap-document-information-extraction-with-cap","target":"capability:document-extraction","kind":"explains"},{"source":"content:integrating-using-google-cloud-storage-adapter-gcp-authentication-adapter-config","target":"capability:object-storage","kind":"explains"},{"source":"content:integration-suite-automating-email-alerts-for-failed-interfaces-in-sap-cpi","target":"capability:integration-flows","kind":"explains"},{"source":"content:integration-suite-building-an-mcp-server-for-a-sap-ci-monitoring-assistant","target":"capability:mcp-servers","kind":"explains"},{"source":"content:integration-suite-building-an-mcp-server-for-a-sap-ci-monitoring-assistant","target":"capability:openapi","kind":"explains"},{"source":"content:integration-suite-mcp-http-configuration","target":"capability:mcp-servers","kind":"explains"},{"source":"content:integration-suite-mcp-http-configuration","target":"artifact:btp-api-management","kind":"explains"},{"source":"content:integration-suite-mcp-server","target":"capability:mcp-servers","kind":"explains"},{"source":"content:integration-suite-mcp-server","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:integration-tests-in-a-cloud-foundry-java-app-using-cap","target":"capability:testing","kind":"explains"},{"source":"content:intelligent-error-handling-in-sap-cpi-using-ai-adapter","target":"capability:integration-flows","kind":"explains"},{"source":"content:introducing-arc-1-a-secure-adt-mcp-server-for-enterprise-sap-development","target":"artifact:arc-mcp-arc-1","kind":"explains"},{"source":"content:introducing-arc-1-a-secure-adt-mcp-server-for-enterprise-sap-development","target":"capability:agent-code-access","kind":"explains"},{"source":"content:introducing-arc-1-a-secure-adt-mcp-server-for-enterprise-sap-development","target":"capability:tool-governance","kind":"explains"},{"source":"content:introducing-eslint-plugin-better-cap-config","target":"artifact:mauriciolauffer-eslint-plugin-better-cap-config","kind":"explains"},{"source":"content:introducing-eslint-plugin-better-cap-config","target":"capability:linting","kind":"explains"},{"source":"content:introducing-open-rfc-calling-sap-rfc-from-nodejs-without-the-sdk","target":"artifact:marianfoo-open-rfc","kind":"explains"},{"source":"content:introducing-open-rfc-calling-sap-rfc-from-nodejs-without-the-sdk","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:introducing-open-rfc-calling-sap-rfc-from-nodejs-without-the-sdk","target":"artifact:sap-cds-rfc","kind":"explains"},{"source":"content:introducing-scim-api-for-sap-sales-service-cloud-v2-seamless-user-sync-between-s","target":"capability:identity-provisioning","kind":"explains"},{"source":"content:introducing-scim-api-for-sap-sales-service-cloud-v2-seamless-user-sync-between-s","target":"artifact:btp-identity-provisioning","kind":"explains"},{"source":"content:introducing-the-cloud-application-programming-model-cap","target":"capability:metadata-publishing","kind":"explains"},{"source":"content:introducing-the-cloud-application-programming-model-cap","target":"capability:audit-logging","kind":"explains"},{"source":"content:introducing-the-cloud-application-programming-model-cap","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:introducing-the-mcp-server-for-cap","target":"artifact:cap-js-mcp-server","kind":"explains"},{"source":"content:introducing-the-mcp-server-for-cap","target":"capability:agent-code-access","kind":"explains"},{"source":"content:invoke-openapi-documented-apis-remotely-with-cap","target":"capability:openapi","kind":"explains"},{"source":"content:invoke-openapi-documented-apis-remotely-with-cap","target":"capability:destinations","kind":"explains"},{"source":"content:invoking-business-agent-foundation-agents-from-abap-a-step-by-step-guide","target":"capability:http-clients","kind":"explains"},{"source":"content:ips-provisioning-to-abap-cloud-developer-trial","target":"artifact:btp-identity-provisioning","kind":"explains"},{"source":"content:ips-provisioning-to-abap-cloud-developer-trial","target":"capability:identity-provisioning","kind":"explains"},{"source":"content:ips-provisioning-to-abap-cloud-developer-trial","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:is-it-time-to-switch-to-odata-v4","target":"capability:odata","kind":"explains"},{"source":"content:iso-content-for-common-cap-types","target":"capability:seed-data","kind":"explains"},{"source":"content:iso-content-for-common-cap-types","target":"capability:localization","kind":"explains"},{"source":"content:joule-for-developers-with-sap-btp-abap-environment-setup-guide","target":"artifact:sap-joule-for-developers","kind":"explains"},{"source":"content:joule-studio-cap","target":"artifact:sap-joule-studio","kind":"explains"},{"source":"content:joule-studio-cap","target":"capability:generators","kind":"explains"},{"source":"content:joule-studio-cap","target":"capability:authorization","kind":"explains"},{"source":"content:joule-studio-cap","target":"capability:authentication","kind":"explains"},{"source":"content:joule-studio-cap","target":"capability:deployment","kind":"explains"},{"source":"content:keep-the-core-clean-with-rizing-cdsx","target":"capability:draft-handling","kind":"explains"},{"source":"content:keep-the-core-clean-with-rizing-cdsx","target":"artifact:rizing-cds-extension","kind":"explains"},{"source":"content:kyma-evolution-transforming-kyma-into-a-tailor-made-saas-platform","target":"capability:deployment","kind":"explains"},{"source":"content:kyma-evolution-transforming-kyma-into-a-tailor-made-saas-platform","target":"capability:multitenancy","kind":"explains"},{"source":"content:kyma-integration-with-sap-cloud-logging-part-1-introduction-and-shipping-logs","target":"capability:logging","kind":"explains"},{"source":"content:kyma-integration-with-sap-cloud-logging-part-2-let-s-ship-some-traces","target":"capability:telemetry","kind":"explains"},{"source":"content:kyma-integration-with-sap-cloud-logging-part-2-let-s-ship-some-traces","target":"artifact:btp-cloud-logging","kind":"explains"},{"source":"content:kyma-integration-with-sap-cloud-logging-part-2-let-s-ship-some-traces","target":"artifact:btp-kyma-runtime","kind":"explains"},{"source":"content:kyma-integration-with-sap-cloud-logging-part-2-let-s-ship-some-traces","target":"artifact:cap-js-telemetry","kind":"explains"},{"source":"content:leanix-adapter-for-sap-integration-suite","target":"capability:integration-flows","kind":"explains"},{"source":"content:lessons-learned-fetching-learning-history-from-successfactors-lms-using-odata-ap","target":"capability:integration-flows","kind":"explains"},{"source":"content:lessons-learned-fetching-learning-history-from-successfactors-lms-using-odata-ap","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:lets-deep-dive-into-capm-and-hana-cloud","target":"capability:database-connectors","kind":"explains"},{"source":"content:major-updates-to-the-attachments-plugin","target":"artifact:cap-js-attachments","kind":"explains"},{"source":"content:major-updates-to-the-attachments-plugin","target":"capability:attachments","kind":"explains"},{"source":"content:major-updates-to-the-attachments-plugin","target":"artifact:cap-java-cds-feature-attachments","kind":"explains"},{"source":"content:making-cap-development-easier-with-storyboard-in-bas","target":"capability:editor-support","kind":"explains"},{"source":"content:making-the-case-for-enhanced-rest-adapter-in-sap-integration-suite","target":"capability:authentication","kind":"explains"},{"source":"content:making-the-case-for-enhanced-rest-adapter-in-sap-integration-suite","target":"capability:error-handling","kind":"explains"},{"source":"content:making-the-case-for-enhanced-rest-adapter-in-sap-integration-suite","target":"capability:openapi","kind":"explains"},{"source":"content:making-the-ias-based-pkce-flow-great-again-mobile-first","target":"capability:authentication","kind":"explains"},{"source":"content:manage-dmq-messages-on-advanced-event-mesh-with-a-cap-application","target":"capability:event-mesh","kind":"explains"},{"source":"content:managing-jms-queues-programmatically-with-the-new-sap-cloud-integration-jms-odat","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:mastering-internal-actions-in-sap-rap-automatic-header-calculation-in-abap-cloud","target":"capability:abap-transactional-model","kind":"explains"},{"source":"content:mcp-server-for-sap-incentive-management","target":"capability:mcp-servers","kind":"explains"},{"source":"content:mcp-servers-are-the-new-z-tables","target":"capability:mcp-servers","kind":"explains"},{"source":"content:mcp-servers-are-the-new-z-tables","target":"capability:tool-governance","kind":"explains"},{"source":"content:mcp-servers-are-the-new-z-tables","target":"artifact:cap-js-mcp","kind":"explains"},{"source":"content:mcp-servers-on-sap-integration-suite-build-your-first-mcp-server-from-an-api","target":"capability:mcp-servers","kind":"explains"},{"source":"content:mcp-servers-on-sap-integration-suite-build-your-first-mcp-server-from-an-api","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:media-handling-in-sap-capm-backend-and-frontend","target":"capability:attachments","kind":"explains"},{"source":"content:merge-multiple-pdf-forms-into-a-single-document-for-download-or-printing","target":"capability:document-output","kind":"explains"},{"source":"content:message-mapping-in-sap-integration-suite-custom-scripts-and-conditional-mapping","target":"capability:integration-flows","kind":"explains"},{"source":"content:messaging-system-for-odata-error-warning-and-information-messages","target":"capability:odata","kind":"explains"},{"source":"content:messaging-system-for-odata-error-warning-and-information-messages","target":"capability:error-handling","kind":"explains"},{"source":"content:messaging-system-for-odata-error-warning-and-information-messages","target":"capability:draft-handling","kind":"explains"},{"source":"content:microsoft-graph-api-read-and-extract-attachments-of-outlook-email-from-cloud-int","target":"capability:integration-flows","kind":"explains"},{"source":"content:microsoft-graph-api-read-and-extract-attachments-of-outlook-email-from-cloud-int","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:microsoft-sentinel-for-sap-goes-agentless","target":"capability:audit-logging","kind":"explains"},{"source":"content:microsoft-sentinel-for-sap-goes-agentless","target":"capability:destinations","kind":"explains"},{"source":"content:microsoft-sentinel-for-sap-goes-agentless","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:migrate-your-code-with-ui5-linter-autofix-has-landed","target":"capability:linting","kind":"explains"},{"source":"content:migrating-an-on-prem-xsa-cds3-solution-to-cds6-and-sqlite","target":"capability:database-connectors","kind":"explains"},{"source":"content:migrating-an-on-prem-xsa-cds3-solution-to-cds6-and-sqlite","target":"capability:schema-evolution","kind":"explains"},{"source":"content:migrating-from-application-logging-service-to-cloud-logging","target":"capability:logging","kind":"explains"},{"source":"content:migrating-from-asanwee-to-asaaemee-from-sap-event-mesh-to-sap-advanced-event-mes","target":"capability:event-mesh","kind":"explains"},{"source":"content:migrating-from-asanwee-to-asaaemee-from-sap-event-mesh-to-sap-advanced-event-mes","target":"artifact:btp-advanced-event-mesh","kind":"explains"},{"source":"content:migrating-your-cap-applications-from-web-ide-to-bas","target":"capability:editor-support","kind":"explains"},{"source":"content:migration-journey-from-mulesoft-to-sap-integration-suite-ci","target":"capability:error-handling","kind":"explains"},{"source":"content:migration-journey-from-mulesoft-to-sap-integration-suite-ci","target":"capability:logging","kind":"explains"},{"source":"content:mj-live-an-ai-cognitive-pipeline-on-cap-hana-and-solace","target":"capability:llm-integration","kind":"explains"},{"source":"content:mj-live-an-ai-cognitive-pipeline-on-cap-hana-and-solace","target":"capability:retrieval-augmented-generation","kind":"explains"},{"source":"content:modernizing-rfc-bapi-based-integrations-for-a-clean-core-with-sap-integration-su","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:monitoring-cap-container-metrics-with-sap-cloud-logging-service","target":"capability:logging","kind":"explains"},{"source":"content:monitoring-cap-container-metrics-with-sap-cloud-logging-service","target":"capability:telemetry","kind":"explains"},{"source":"content:moving-from-hub-gateway-to-direct-s-4hana-odata-v4-a-customized-reusable-rap-pro","target":"capability:odata","kind":"explains"},{"source":"content:multi-modal-rag-proof-of-concept-facilitating-tech-support","target":"capability:retrieval-augmented-generation","kind":"explains"},{"source":"content:multi-origin-service-testing-and-troubleshooting-in-sap-gateway","target":"capability:abap-service-testing","kind":"explains"},{"source":"content:multitenant-application-using-cap-java-sdk-and-mtx-sidecar","target":"capability:multitenancy","kind":"explains"},{"source":"content:multitenant-business-applications-with-cap-hands-on-video-tutorials","target":"capability:multitenancy","kind":"explains"},{"source":"content:multitenant-mta-providing-a-cloud-portal-with-fiori-apps-to-subscribers","target":"capability:multitenancy","kind":"explains"},{"source":"content:multitenant-saas-applications-on-btp-using-cap-kyma-runtime","target":"capability:multitenancy","kind":"explains"},{"source":"content:multitenant-saas-applications-on-btp-using-cap-kyma-runtime","target":"capability:deployment","kind":"explains"},{"source":"content:multitenant-saas-on-btp-using-cap-the-reloaded-version","target":"capability:multitenancy","kind":"explains"},{"source":"content:multitenant-saas-on-btp-using-cap-tried-and-true-advanced","target":"capability:multitenancy","kind":"explains"},{"source":"content:multitenant-saas-on-btp-using-cap-tried-and-true-basic","target":"capability:multitenancy","kind":"explains"},{"source":"content:multitenant-saas-on-btp-using-cap-tried-and-true-expert-features","target":"capability:multitenancy","kind":"explains"},{"source":"content:multitenant-saas-on-btp-using-cap-tried-and-true-overview","target":"capability:multitenancy","kind":"explains"},{"source":"content:my-cap-projects-toolbox","target":"capability:generators","kind":"explains"},{"source":"content:my-cap-projects-toolbox","target":"capability:data-modelling","kind":"explains"},{"source":"content:my-cap-projects-toolbox","target":"capability:local-development","kind":"explains"},{"source":"content:my-cap-projects-toolbox","target":"capability:debugging","kind":"explains"},{"source":"content:my-cap-projects-toolbox","target":"capability:temporal-data","kind":"explains"},{"source":"content:named-user-attribution-across-btp-subaccounts-a-two-hop-ias-token-exchange-for-c","target":"capability:authentication","kind":"explains"},{"source":"content:named-user-attribution-across-btp-subaccounts-a-two-hop-ias-token-exchange-for-c","target":"capability:authorization","kind":"explains"},{"source":"content:named-user-attribution-across-btp-subaccounts-a-two-hop-ias-token-exchange-for-c","target":"capability:audit-logging","kind":"explains"},{"source":"content:natural-language-queries-for-sap-cap-via-mcp","target":"artifact:shahid-la-cds-db-nlquery-mcp","kind":"explains"},{"source":"content:natural-language-queries-for-sap-cap-via-mcp","target":"capability:llm-integration","kind":"explains"},{"source":"content:natural-language-queries-for-sap-cap-via-mcp","target":"capability:mcp-servers","kind":"explains"},{"source":"content:new-and-improved-change-tracking-plugin","target":"artifact:cap-js-change-tracking","kind":"explains"},{"source":"content:new-and-improved-change-tracking-plugin","target":"capability:change-tracking","kind":"explains"},{"source":"content:new-ci-pipeline-restart-extension-features-supporting-new-pipeline-package-and-i","target":"capability:integration-flows","kind":"explains"},{"source":"content:new-pipeline-concept-features-integrated-runtimes-and-supporting-landscape-stage","target":"capability:integration-flows","kind":"explains"},{"source":"content:new-pipeline-for-cloud-integration-features-with-version-1-0-11","target":"capability:integration-flows","kind":"explains"},{"source":"content:new-pod-2-0-framework-the-new-generation-of-sap-digital-manufacturing-worker-uis","target":"capability:pod-plugins","kind":"explains"},{"source":"content:new-sap-cloud-application-programming-model-sample-for-many-to-many-relationship","target":"capability:openapi","kind":"explains"},{"source":"content:new-tutorial-for-ui5-middleware-fe-mockserver","target":"capability:testing","kind":"explains"},{"source":"content:new-tutorial-for-ui5-middleware-fe-mockserver","target":"capability:error-handling","kind":"explains"},{"source":"content:new-tutorial-for-ui5-middleware-fe-mockserver","target":"capability:seed-data","kind":"explains"},{"source":"content:nice-patch-sap-revisiting-your-sap-btp-security-measures-after-ai-core-vulnerabi","target":"capability:audit-logging","kind":"explains"},{"source":"content:nice-patch-sap-revisiting-your-sap-btp-security-measures-after-ai-core-vulnerabi","target":"capability:authentication","kind":"explains"},{"source":"content:nice-patch-sap-revisiting-your-sap-btp-security-measures-after-ai-core-vulnerabi","target":"artifact:btp-audit-log","kind":"explains"},{"source":"content:no-code-mcp-servers-with-sap-integration-suite-from-rest-api-to-ai-agent","target":"capability:mcp-servers","kind":"explains"},{"source":"content:no-code-mcp-servers-with-sap-integration-suite-from-rest-api-to-ai-agent","target":"capability:destinations","kind":"explains"},{"source":"content:no-code-mcp-servers-with-sap-integration-suite-from-rest-api-to-ai-agent","target":"capability:openapi","kind":"explains"},{"source":"content:no-code-mcp-servers-with-sap-integration-suite-from-rest-api-to-ai-agent","target":"capability:authorization","kind":"explains"},{"source":"content:object-release-state-in-cloudification-repository-viewer-for-clean-core-extensib","target":"capability:abap-cloud-readiness","kind":"explains"},{"source":"content:odata-batch-deleting-records-across-multiple-tables-in-single-transaction","target":"capability:odata","kind":"explains"},{"source":"content:odata-deep-insert-implementation-and-real-life-examples","target":"capability:odata","kind":"explains"},{"source":"content:on-the-fly-excel-download-in-a-rap-fiori-app-no-database-table-no-persistence-pu","target":"capability:document-output","kind":"explains"},{"source":"content:on-the-fly-excel-download-in-a-rap-fiori-app-no-database-table-no-persistence-pu","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:open-source-ui5-form-validator","target":"capability:input-validation","kind":"explains"},{"source":"content:open-sourcing-cap-how-to-learn-more-or-get-involved","target":"capability:feature-toggles","kind":"explains"},{"source":"content:open-sourcing-cap-how-to-learn-more-or-get-involved","target":"capability:database-connectors","kind":"explains"},{"source":"content:open-sourcing-cap-how-to-learn-more-or-get-involved","target":"capability:change-tracking","kind":"explains"},{"source":"content:openapis-in-the-sap-ecosystem","target":"capability:openapi","kind":"explains"},{"source":"content:optimize-your-mta-build-with-several-ui-apps","target":"capability:deployment","kind":"explains"},{"source":"content:optimized-idoc-routing-in-sap-ci-with-value-mapping-and-groovy-based-receiver-de","target":"capability:integration-flows","kind":"explains"},{"source":"content:optimized-idoc-routing-in-sap-ci-with-value-mapping-and-groovy-based-receiver-de","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:out-of-the-box-document-grounding-in-sap-ai-core-rag-with-sap-help-portal","target":"capability:retrieval-augmented-generation","kind":"explains"},{"source":"content:out-of-the-box-document-grounding-in-sap-ai-core-rag-with-sap-help-portal","target":"capability:llm-integration","kind":"explains"},{"source":"content:outbound-integration-from-sap-btp-abap-to-sap-s-4hana-cloud-via-service-consumpt","target":"capability:http-clients","kind":"explains"},{"source":"content:parallel-data-filtering-and-dropbox-integration-using-sap-cloud-integration","target":"capability:integration-flows","kind":"explains"},{"source":"content:parallel-data-filtering-and-dropbox-integration-using-sap-cloud-integration","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:parallel-data-filtering-and-dropbox-integration-using-sap-cloud-integration","target":"capability:error-handling","kind":"explains"},{"source":"content:parallel-data-filtering-and-dropbox-integration-using-sap-cloud-integration","target":"capability:notifications","kind":"explains"},{"source":"content:part-1-enrich-cap-based-services-with-behaviors-using-annotations","target":"capability:input-validation","kind":"explains"},{"source":"content:part-1-enrich-cap-based-services-with-behaviors-using-annotations","target":"capability:authorization","kind":"explains"},{"source":"content:part-1-how-to-create-a-capm-project-in-bas","target":"capability:generators","kind":"explains"},{"source":"content:part-1-how-to-create-a-capm-project-in-bas","target":"capability:editor-support","kind":"explains"},{"source":"content:part-2-empowering-sap-btp-cap-services-through-open-api-spec-and-annotations-for","target":"capability:openapi","kind":"explains"},{"source":"content:part-2-empowering-sap-btp-cap-services-through-open-api-spec-and-annotations-for","target":"artifact:chgeo-cds-swagger-ui-express","kind":"explains"},{"source":"content:part-2-enrich-cap-based-services-with-behaviors-using-annotations","target":"capability:data-modelling","kind":"explains"},{"source":"content:part-2-enrich-cap-based-services-with-behaviors-using-annotations","target":"capability:pagination-and-streaming","kind":"explains"},{"source":"content:part-2-enrich-cap-based-services-with-behaviors-using-annotations","target":"capability:concurrency-control","kind":"explains"},{"source":"content:part-2-enrich-cap-based-services-with-behaviors-using-annotations","target":"capability:search","kind":"explains"},{"source":"content:part-3-empowering-sap-btp-cap-services-through-open-api-spec-and-annotations-for","target":"capability:openapi","kind":"explains"},{"source":"content:pattern-function-for-rfc","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:patterns-for-using-llms-in-abap-development","target":"capability:agent-code-access","kind":"explains"},{"source":"content:patterns-for-using-llms-in-abap-development","target":"capability:abap-source-control","kind":"explains"},{"source":"content:patterns-for-using-llms-in-abap-development","target":"capability:abap-static-analysis","kind":"explains"},{"source":"content:patterns-for-using-llms-in-abap-development","target":"capability:abap-code-review","kind":"explains"},{"source":"content:patterns-for-using-llms-in-abap-development","target":"artifact:arc-mcp-arc-1","kind":"explains"},{"source":"content:patterns-for-using-llms-in-abap-development","target":"artifact:abapgit-abapgit","kind":"explains"},{"source":"content:patterns-for-using-llms-in-abap-development","target":"artifact:abaplint-abaplint","kind":"explains"},{"source":"content:perform-sap-principal-propagation-with-microsoft-entra-id-for-sap-successfactors","target":"capability:authentication","kind":"explains"},{"source":"content:performance-boost-and-caching-strategy-with-cds-caching","target":"artifact:cds-caching","kind":"explains"},{"source":"content:performance-boost-and-caching-strategy-with-cds-caching","target":"capability:caching","kind":"explains"},{"source":"content:performance-trace-node-js-app-on-btp-with-dynatrace","target":"capability:telemetry","kind":"explains"},{"source":"content:performance-trace-node-js-app-on-btp-with-dynatrace","target":"capability:logging","kind":"explains"},{"source":"content:postgresql-persistence-adapter-for-cap-nodejs","target":"artifact:sapmentors-cds-pg","kind":"explains"},{"source":"content:postgresql-persistence-adapter-for-cap-nodejs","target":"capability:database-connectors","kind":"explains"},{"source":"content:predictive-asset-insights-embedded-live-analytics-using-cap-and-sac","target":"capability:analytical-queries","kind":"explains"},{"source":"content:presenting-sap-cap-sdm-plugin","target":"artifact:vneecious-sap-cap-sdm-plugin","kind":"explains"},{"source":"content:presenting-sap-cap-sdm-plugin","target":"capability:attachments","kind":"explains"},{"source":"content:principal-propagation-from-btp-web-app-to-s-4hana-via-sap-integration-suite","target":"capability:authentication","kind":"explains"},{"source":"content:principal-propagation-from-btp-web-app-to-s-4hana-via-sap-integration-suite","target":"capability:destinations","kind":"explains"},{"source":"content:principal-propagation-from-btp-web-app-to-s-4hana-via-sap-integration-suite","target":"capability:integration-flows","kind":"explains"},{"source":"content:principal-propagation-in-sbpa-actions-with-a-cap-nodejs-service","target":"capability:workflow-integration","kind":"explains"},{"source":"content:principal-propagation-in-sbpa-actions-with-a-cap-nodejs-service","target":"capability:authentication","kind":"explains"},{"source":"content:print-preview-from-rap-action-with-v4-odata-and-multiple-selection","target":"capability:document-output","kind":"explains"},{"source":"content:process-integration-pipeline-extension-restart-via-data-store","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:product-updates-for-sap-build-code-june-2025-edition","target":"capability:platform-migration","kind":"explains"},{"source":"content:prompt-driven-development-building-full-stack-cap-apps-from-user-stories","target":"capability:generators","kind":"explains"},{"source":"content:prompt-driven-development-building-full-stack-cap-apps-from-user-stories","target":"capability:llm-integration","kind":"explains"},{"source":"content:publish-events-from-cap-nodejs-to-integration-suite-event-mesh","target":"capability:event-mesh","kind":"explains"},{"source":"content:qualtrics-integration-with-domain-based-authorization-in-a-cap-project","target":"capability:authorization","kind":"explains"},{"source":"content:qualtrics-integration-with-domain-based-authorization-in-a-cap-project","target":"capability:destinations","kind":"explains"},{"source":"content:quickly-deploy-a-sample-cap-application-to-btp","target":"capability:deployment","kind":"explains"},{"source":"content:rag-with-hana-cloud-vector-engine-genai-hub-and-cap","target":"capability:retrieval-augmented-generation","kind":"explains"},{"source":"content:rag-with-hana-cloud-vector-engine-genai-hub-and-cap","target":"artifact:cap-llm-plugin","kind":"explains"},{"source":"content:random-collection-of-useful-code-fragments-for-cap-fiori-elements-and-sapui5","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:random-numbers-and-probability-distributions-in-the-abap-environments-for-2508","target":"capability:seed-data","kind":"explains"},{"source":"content:rap-feature-control-part-2","target":"capability:authorization","kind":"explains"},{"source":"content:rap-native-file-upload","target":"capability:attachments","kind":"explains"},{"source":"content:rap-navigation-app-to-app","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:rap-singleton-pattern","target":"capability:abap-transactional-model","kind":"explains"},{"source":"content:reading-between-the-lines-under-documented-fiori-elements-capabilities-in-sapui5","target":"capability:websocket","kind":"explains"},{"source":"content:reading-between-the-lines-under-documented-fiori-elements-capabilities-in-sapui5","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:reading-between-the-lines-under-documented-fiori-elements-capabilities-in-sapui5","target":"capability:draft-handling","kind":"explains"},{"source":"content:real-time-architecture-in-cap-async-jobs-and-websockets","target":"capability:websocket","kind":"explains"},{"source":"content:real-time-architecture-in-cap-async-jobs-and-websockets","target":"capability:async-processing","kind":"explains"},{"source":"content:receive-events-from-event-mesh-of-integration-suite-to-cap-node-js-applications","target":"capability:event-mesh","kind":"explains"},{"source":"content:receive-events-from-event-mesh-of-integration-suite-to-cap-node-js-applications","target":"capability:deployment","kind":"explains"},{"source":"content:receive-events-from-event-mesh-of-integration-suite-to-cap-node-js-applications","target":"capability:generators","kind":"explains"},{"source":"content:receive-events-from-event-mesh-of-integration-suite-to-cap-node-js-applications","target":"artifact:btp-integration-suite-event-mesh","kind":"explains"},{"source":"content:receive-notifications-from-amazon-sns-in-a-cap-s4hana-extension","target":"capability:notifications","kind":"explains"},{"source":"content:recommendations-for-customers-on-using-the-direct-push-based-integration","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:recommendations-for-wrapper-interface-design","target":"capability:abap-cloud-readiness","kind":"explains"},{"source":"content:remote-debugging-of-a-capm-nodejs-app","target":"capability:local-development","kind":"explains"},{"source":"content:resend-http-messages-with-configured-pause-and-fixed-max-iteration-followed-by-e","target":"capability:integration-flows","kind":"explains"},{"source":"content:resolving-date-serialization-issues-with-an-external-odata-v2-service","target":"capability:odata","kind":"explains"},{"source":"content:restrict-crud-operations-in-capm-with-capabilities-and-readonly","target":"capability:authorization","kind":"explains"},{"source":"content:restrict-crud-operations-in-capm-with-capabilities-and-readonly","target":"capability:testing","kind":"explains"},{"source":"content:reusable-components-for-cap-with-cds-plugin","target":"capability:plugin-authoring","kind":"explains"},{"source":"content:rfc-bapis-meet-ai-agents-why-sap-integration-suite-mcp-server-matters","target":"capability:mcp-servers","kind":"explains"},{"source":"content:rfc-bapis-meet-ai-agents-why-sap-integration-suite-mcp-server-matters","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:run-and-deploy-cap-java-with-postgresql-on-cloud-foundry-2023","target":"capability:database-connectors","kind":"explains"},{"source":"content:run-and-deploy-cap-java-with-postgresql-using-cap-js-postgres","target":"artifact:cap-js-postgres","kind":"explains"},{"source":"content:run-and-deploy-cap-java-with-postgresql-using-cap-js-postgres","target":"artifact:mikezaschka-cds-dbm","kind":"explains"},{"source":"content:run-and-deploy-cap-java-with-postgresql-using-cap-js-postgres","target":"artifact:sapmentors-cds-pg","kind":"explains"},{"source":"content:run-and-deploy-cap-java-with-postgresql-using-cap-js-postgres","target":"capability:database-connectors","kind":"explains"},{"source":"content:run-and-deploy-cap-nodejs-or-java-with-postgresql-on-cloud-foundry","target":"capability:database-connectors","kind":"explains"},{"source":"content:run-and-deploy-cap-nodejs-or-java-with-postgresql-on-cloud-foundry","target":"capability:schema-evolution","kind":"explains"},{"source":"content:run-and-deploy-cap-with-postgresql-on-cloud-foundry","target":"artifact:sapmentors-cds-pg","kind":"explains"},{"source":"content:run-and-deploy-cap-with-postgresql-on-cloud-foundry","target":"artifact:mikezaschka-cds-dbm","kind":"explains"},{"source":"content:run-and-deploy-cap-with-postgresql-on-cloud-foundry","target":"artifact:cap-js-postgres","kind":"explains"},{"source":"content:run-and-deploy-cap-with-postgresql-on-cloud-foundry","target":"capability:database-connectors","kind":"explains"},{"source":"content:running-ai-agents-against-sap-ecc-6-0-lessons-from-building-an-in-system-mcp-ser","target":"capability:mcp-servers","kind":"explains"},{"source":"content:running-ai-agents-against-sap-ecc-6-0-lessons-from-building-an-in-system-mcp-ser","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:running-ai-agents-against-sap-ecc-6-0-lessons-from-building-an-in-system-mcp-ser","target":"capability:authorization","kind":"explains"},{"source":"content:running-cap-node-applications-in-bas-run-configurations","target":"capability:editor-support","kind":"explains"},{"source":"content:running-cap-node-applications-in-bas-run-configurations","target":"capability:local-development","kind":"explains"},{"source":"content:s-4hana-abap","target":"capability:abap-extensibility","kind":"explains"},{"source":"content:s-4hana-abap","target":"capability:editor-support","kind":"explains"},{"source":"content:s-4hana-abap","target":"capability:odata","kind":"explains"},{"source":"content:s-4hana-observability-streaming-sap-cloud-alm-logserv-telemetry-to-bigquery-vert","target":"capability:telemetry","kind":"explains"},{"source":"content:saas-self-onboarding-and-one-domain-in-kyma-using-cap","target":"capability:multitenancy","kind":"explains"},{"source":"content:sap-advanced-event-mesh-manage-advance-event-mesh-with-api-s","target":"capability:event-mesh","kind":"explains"},{"source":"content:sap-agentic-ai-in-practice-building-the-sap-exception-log-triage-agent-part-3-of","target":"capability:agent-tooling","kind":"explains"},{"source":"content:sap-ai-core-agent-part-8-cloudfoundry","target":"capability:deployment","kind":"explains"},{"source":"content:sap-ai-core-agent-part-8-cloudfoundry","target":"artifact:btp-cloud-foundry-runtime","kind":"explains"},{"source":"content:sap-ai-core-agent-part-8-cloudfoundry","target":"artifact:btp-build-work-zone-standard","kind":"explains"},{"source":"content:sap-ai-services-dox-gen-ai-with-sap-cap-plugin-part-3","target":"capability:plugin-authoring","kind":"explains"},{"source":"content:sap-ai-services-dox-gen-ai-with-sap-cap-plugin-part-3","target":"capability:document-extraction","kind":"explains"},{"source":"content:sap-api-management-for-beginners-part-1-what-is-apim-a-complete-features-tour","target":"capability:rate-limiting","kind":"explains"},{"source":"content:sap-api-management-for-beginners-part-1-what-is-apim-a-complete-features-tour","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:sap-api-management-for-beginners-part-4-oauth-2-0-kvm-traffic-policies-threat-pr","target":"capability:rate-limiting","kind":"explains"},{"source":"content:sap-api-management-sap-cloud-logging","target":"capability:logging","kind":"explains"},{"source":"content:sap-api-management-sap-cloud-logging","target":"artifact:btp-cloud-logging","kind":"explains"},{"source":"content:sap-btp-account-architecture-best-practices-a-practitioner-s-field-guide","target":"capability:account-provisioning","kind":"explains"},{"source":"content:sap-btp-account-architecture-best-practices-a-practitioner-s-field-guide","target":"capability:deployment","kind":"explains"},{"source":"content:sap-btp-audit-log-access-just-got-easier-here-s-what-s-new","target":"capability:audit-logging","kind":"explains"},{"source":"content:sap-btp-audit-log-enable-and-retrieve-logs","target":"capability:audit-logging","kind":"explains"},{"source":"content:sap-btp-audit-log-enable-and-retrieve-logs","target":"artifact:btp-audit-log","kind":"explains"},{"source":"content:sap-btp-ci-building-open-source-custom-adapter-eventsmartkafka-from-zero-with-sa","target":"capability:integration-flows","kind":"explains"},{"source":"content:sap-btp-ci-eventsmartkafka-custom-kafka-adapter-from-esa-v1-1-0-validated-runtim","target":"capability:integration-flows","kind":"explains"},{"source":"content:sap-btp-ci-eventsmartkafka-custom-kafka-adapter-part-v-final","target":"capability:integration-flows","kind":"explains"},{"source":"content:sap-btp-ci-how-i-built-an-open-source-enterprise-custom-kafka-adapter-from-scrat","target":"capability:integration-flows","kind":"explains"},{"source":"content:sap-btp-ci-immutable-event-routing-per-domain-with-metadata-driven-consumer-orch","target":"capability:integration-flows","kind":"explains"},{"source":"content:sap-btp-cloud-foundry-job-scheduling-for-cap-based-project","target":"capability:job-scheduling","kind":"explains"},{"source":"content:sap-btp-destinations-in-a-nutshell-part-1-motivation-noauthentication-destinatio","target":"capability:destinations","kind":"explains"},{"source":"content:sap-btp-kyma-service-mesh","target":"capability:deployment","kind":"explains"},{"source":"content:sap-btp-platform-technical-user-for-ctms-integration","target":"capability:authentication","kind":"explains"},{"source":"content:sap-btp-platform-technical-user-for-ctms-integration","target":"capability:destinations","kind":"explains"},{"source":"content:sap-btp-sdk-for-ios-and-cap-with-odata-v4-support","target":"capability:odata","kind":"explains"},{"source":"content:sap-build-process-automation","target":"capability:task-uis","kind":"explains"},{"source":"content:sap-build-process-automation","target":"capability:workflow-integration","kind":"explains"},{"source":"content:sap-business-technology-platform-authorization-and-trust-management-service","target":"capability:authorization","kind":"explains"},{"source":"content:sap-business-technology-platform-authorization-and-trust-management-service","target":"capability:authentication","kind":"explains"},{"source":"content:sap-business-technology-platform-authorization-and-trust-management-service","target":"artifact:btp-authorization-and-trust-management","kind":"explains"},{"source":"content:sap-business-technology-platform-authorization-and-trust-management-service","target":"artifact:sap-approuter","kind":"explains"},{"source":"content:sap-cap-adapter-to-expose-odata-as-custom-rest-service","target":"capability:odata","kind":"explains"},{"source":"content:sap-cap-adapter-to-expose-odata-as-custom-rest-service","target":"capability:data-modelling","kind":"explains"},{"source":"content:sap-cap-adapter-to-expose-odata-as-custom-rest-service","target":"capability:service-integration","kind":"explains"},{"source":"content:sap-cap-best-vscode-extensions-for-typescript-development","target":"capability:editor-support","kind":"explains"},{"source":"content:sap-cap-cloud-application-programming","target":"capability:data-modelling","kind":"explains"},{"source":"content:sap-cap-cloud-application-programming","target":"capability:authorization","kind":"explains"},{"source":"content:sap-cap-cloud-application-programming","target":"capability:async-processing","kind":"explains"},{"source":"content:sap-cap-cloud-application-programming","target":"capability:odata","kind":"explains"},{"source":"content:sap-cap-consume-sap-api-hub-sandbox-data-as-an-external-service-part-1","target":"capability:service-integration","kind":"explains"},{"source":"content:sap-cap-controller-service-repository-architecture","target":"artifact:dxfrontier-cds-ts-dispatcher","kind":"explains"},{"source":"content:sap-cap-controller-service-repository-architecture","target":"artifact:dxfrontier-cds-ts-repository","kind":"explains"},{"source":"content:sap-cap-controller-service-repository-architecture","target":"capability:typescript-patterns","kind":"explains"},{"source":"content:sap-cap-function-and-action-with-unstructured-dynamic-type-input-output","target":"capability:odata","kind":"explains"},{"source":"content:sap-cap-function-and-action-with-unstructured-dynamic-type-input-output","target":"capability:graphql","kind":"explains"},{"source":"content:sap-cap-jwt-token-flow-in-code","target":"capability:authentication","kind":"explains"},{"source":"content:sap-cap-lessons-learned-quick-deployment-with-manifest-and-cf-push","target":"capability:deployment","kind":"explains"},{"source":"content:sap-cap-on-hana-xsa-scaling-industrial-data-applications","target":"capability:database-connectors","kind":"explains"},{"source":"content:sap-cap-recent-enhancements-the-hana-dev-should-know-about","target":"capability:schema-evolution","kind":"explains"},{"source":"content:sap-cap-recent-enhancements-the-hana-dev-should-know-about","target":"capability:data-modelling","kind":"explains"},{"source":"content:sap-cap-remote-services-and-sap-fiori-elements","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:sap-cap-remote-services-and-sap-fiori-elements","target":"capability:destinations","kind":"explains"},{"source":"content:sap-cap-with-prostgres-serice-in-btp","target":"artifact:cap-js-postgres","kind":"explains"},{"source":"content:sap-cap-with-prostgres-serice-in-btp","target":"artifact:btp-postgresql-hyperscaler","kind":"explains"},{"source":"content:sap-cap-with-prostgres-serice-in-btp","target":"capability:database-connectors","kind":"explains"},{"source":"content:sap-cap-with-prostgres-serice-in-btp","target":"capability:deployment","kind":"explains"},{"source":"content:sap-capv7-node-js-highlights-and-experiences","target":"capability:graphql","kind":"explains"},{"source":"content:sap-capv7-node-js-highlights-and-experiences","target":"artifact:cap-js-graphql","kind":"explains"},{"source":"content:sap-capv7-node-js-highlights-and-experiences","target":"artifact:sap-cds","kind":"explains"},{"source":"content:sap-ci-to-abap-integration-seamless-xml-to-internal-table-mapping","target":"capability:serialisation","kind":"explains"},{"source":"content:sap-cloud-application-programming-model-cap-part-1","target":"capability:local-development","kind":"explains"},{"source":"content:sap-cloud-application-programming-model-cap-part-1","target":"capability:generators","kind":"explains"},{"source":"content:sap-cloud-application-programming-model-cap-part-1","target":"capability:database-connectors","kind":"explains"},{"source":"content:sap-cloud-application-programming-model-cap-part-1","target":"capability:editor-support","kind":"explains"},{"source":"content:sap-cloud-application-programming-model-cap-part-2","target":"capability:error-handling","kind":"explains"},{"source":"content:sap-cloud-application-programming-model-cap-part-2","target":"capability:transaction-management","kind":"explains"},{"source":"content:sap-cloud-application-programming-model-start-here","target":"artifact:sap-cds","kind":"explains"},{"source":"content:sap-cloud-integration-ci-cpi-reusable-script-collection-pattern-for-sensitive-da","target":"capability:data-privacy","kind":"explains"},{"source":"content:sap-cloud-integration-ci-cpi-reusable-script-collection-pattern-for-sensitive-da","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:sap-cloud-integration","target":"capability:integration-flows","kind":"explains"},{"source":"content:sap-cloud-platform-backend-service-tutorial-11-cds-magic-key-generation","target":"capability:data-modelling","kind":"explains"},{"source":"content:sap-cloud-platform-backend-service-tutorial-11-cds-magic-key-generation","target":"capability:odata","kind":"explains"},{"source":"content:sap-cloud-platform-backend-service-tutorial-12-cds-local-build","target":"capability:metadata-publishing","kind":"explains"},{"source":"content:sap-codejam-on-event-driven-build-process","target":"capability:event-mesh","kind":"explains"},{"source":"content:sap-codejam-on-event-driven-build-process","target":"artifact:btp-advanced-event-mesh","kind":"explains"},{"source":"content:sap-codejam-on-event-driven-build-process","target":"artifact:btp-build-process-automation","kind":"explains"},{"source":"content:sap-data-and-analytics-showcase-cap-machine-learning-application","target":"capability:analytical-queries","kind":"explains"},{"source":"content:sap-data-and-analytics-showcase-machine-learning-on-btp","target":"capability:analytical-queries","kind":"explains"},{"source":"content:sap-datasphere-integration-patterns-lessons-learned-from-two-years-of-implementa","target":"artifact:btp-datasphere","kind":"explains"},{"source":"content:sap-datasphere-integration-patterns-lessons-learned-from-two-years-of-implementa","target":"capability:warehouse-loading","kind":"explains"},{"source":"content:sap-datasphere-integration-patterns-lessons-learned-from-two-years-of-implementa","target":"capability:integration-flows","kind":"explains"},{"source":"content:sap-developer-new-july-3rd-2026","target":"capability:schema-evolution","kind":"explains"},{"source":"content:sap-ehs-public-cloud-extending-your-existing-landscape-side-by-side-guidebook-pa","target":"capability:integration-flows","kind":"explains"},{"source":"content:sap-ehs-public-cloud-extending-your-existing-landscape-side-by-side-guidebook-pa","target":"capability:event-mesh","kind":"explains"},{"source":"content:sap-email-functionality-in-sap-with-a-custom-function-module","target":"capability:notifications","kind":"explains"},{"source":"content:sap-email-functionality-in-sap-with-a-custom-function-module","target":"capability:error-handling","kind":"explains"},{"source":"content:sap-event-mesh-architecture-patterns","target":"capability:event-mesh","kind":"explains"},{"source":"content:sap-event-mesh-cap-based-implementation-single-tenant","target":"capability:event-mesh","kind":"explains"},{"source":"content:sap-event-mesh-consuming-s4-events-in-cap-and-integration-suite","target":"capability:event-mesh","kind":"explains"},{"source":"content:sap-event-mesh-s4-hana-on-prem-and-sap-ci-btp-is-through-websocket-and-webhooks","target":"capability:event-mesh","kind":"explains"},{"source":"content:sap-event-mesh-s4-hana-on-prem-and-sap-ci-btp-is-through-websocket-and-webhooks","target":"capability:websocket","kind":"explains"},{"source":"content:sap-event-mesh-s4-hana-on-prem-and-sap-ci-btp-is-through-websocket-and-webhooks","target":"artifact:btp-event-mesh","kind":"explains"},{"source":"content:sap-event-mesh-s4-hana-on-prem-and-sap-ci-btp-is-through-websocket-and-webhooks","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:sap-fiori-application-generator-available-in-open-source","target":"artifact:sap-generator-fiori","kind":"explains"},{"source":"content:sap-fiori-application-generator-available-in-open-source","target":"capability:generators","kind":"explains"},{"source":"content:sap-fiori-elements-using-cap-model-introduction","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:sap-fiori-elements-using-cap-model-list-report-app","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:sap-graphql-in-capm-nodejs","target":"capability:graphql","kind":"explains"},{"source":"content:sap-group-consume-remote-services-in-a-full-stack-cap-application","target":"capability:destinations","kind":"explains"},{"source":"content:sap-group-consume-remote-services-in-a-full-stack-cap-application","target":"capability:odata","kind":"explains"},{"source":"content:sap-group-create-a-simple-cap-application-and-explore-the-defaults","target":"capability:local-development","kind":"explains"},{"source":"content:sap-group-deploy-a-full-stack-cap-application","target":"capability:deployment","kind":"explains"},{"source":"content:sap-group-develop-full-stack-cap-application","target":"capability:reference-apps","kind":"explains"},{"source":"content:sap-group-develop-full-stack-cap-application","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:sap-hana-xsa-part-2-smart-variants-and-odata-v4-to-v2","target":"capability:odata","kind":"explains"},{"source":"content:sap-integration-suite-intelligent-integration-with-ai-adapter","target":"capability:integration-flows","kind":"explains"},{"source":"content:sap-integration-suite-intelligent-integration-with-ai-adapter","target":"capability:llm-integration","kind":"explains"},{"source":"content:sap-integration-suite-mcp-a-practical-architecture-for-ai-agents-and-sap","target":"capability:mcp-servers","kind":"explains"},{"source":"content:sap-integration-suite-mcp-a-practical-architecture-for-ai-agents-and-sap","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:sap-job-scheduling-service-generate-your-own-client-library-from-openapi-spec","target":"artifact:btp-job-scheduling","kind":"explains"},{"source":"content:sap-job-scheduling-service-generate-your-own-client-library-from-openapi-spec","target":"capability:openapi","kind":"explains"},{"source":"content:sap-job-scheduling-service-generate-your-own-client-library-from-openapi-spec","target":"capability:job-scheduling","kind":"explains"},{"source":"content:sap-job-scheduling-service-set-job-run-status-with-the-rest-api-and-node-js","target":"capability:job-scheduling","kind":"explains"},{"source":"content:sap-job-scheduling-service-set-job-run-status-with-the-rest-api-and-node-js","target":"artifact:btp-job-scheduling","kind":"explains"},{"source":"content:sap-joule-implementation-in-an-s-4hana-private-cloud-3-system-landscape","target":"artifact:sap-joule","kind":"explains"},{"source":"content:sap-joule-implementation-in-an-s-4hana-private-cloud-3-system-landscape","target":"capability:authentication","kind":"explains"},{"source":"content:sap-joule-invoice-agent-for-faster-supplier-invoice-release-in-sap-s-4hana-accou","target":"capability:agent-tooling","kind":"explains"},{"source":"content:sap-joule-me-my-first-joule-skill-in-sap-ehsm-incident-management-without-coding","target":"capability:agent-tooling","kind":"explains"},{"source":"content:sap-just-became-ai-agent-ready-here-s-a-step-by-step-mcp-walkthrough","target":"capability:mcp-servers","kind":"explains"},{"source":"content:sap-just-became-ai-agent-ready-here-s-a-step-by-step-mcp-walkthrough","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:sap-just-became-ai-agent-ready-here-s-a-step-by-step-mcp-walkthrough","target":"capability:authentication","kind":"explains"},{"source":"content:sap-mdg-cloud-ready-mode-5-solution-patterns-zero-badis-how-we-implemented-5-typ","target":"capability:task-uis","kind":"explains"},{"source":"content:sap-mdg-cloud-ready-mode-5-solution-patterns-zero-badis-how-we-implemented-5-typ","target":"capability:process-automation","kind":"explains"},{"source":"content:sap-mission-build-a-business-application-using-cap-for-java","target":"capability:reference-apps","kind":"explains"},{"source":"content:sap-mission-build-a-business-application-using-cap-for-nodejs","target":"capability:reference-apps","kind":"explains"},{"source":"content:sap-mission-extend-successfactors-with-cap","target":"capability:destinations","kind":"explains"},{"source":"content:sap-mission-extend-successfactors-with-cap","target":"capability:odata","kind":"explains"},{"source":"content:sap-neo-retires-integration-developers-must-know-before-migrating-from-neo-to-cf","target":"capability:integration-flows","kind":"explains"},{"source":"content:sap-neo-retires-integration-developers-must-know-before-migrating-from-neo-to-cf","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:sap-ord-made-simple-what-it-does-and-why-it-s-crucial-in-your-sap-landscape-purp","target":"capability:metadata-publishing","kind":"explains"},{"source":"content:sap-ord-made-simple-what-it-does-and-why-it-s-crucial-in-your-sap-landscape-purp","target":"artifact:cap-js-ord","kind":"explains"},{"source":"content:sap-pi-migration-to-btp-integration-suite-patterns-and-learning-experiences","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:sap-pi-migration-to-btp-integration-suite-patterns-and-learning-experiences","target":"artifact:btp-api-management","kind":"explains"},{"source":"content:sap-rpt-1-5-is-now-generally-available-more-accurate-predictions-better-explaina","target":"capability:predictive-models","kind":"explains"},{"source":"content:sap-s-4hana-cloud-scheduling-background-jobs-using-application-job-templates","target":"capability:job-scheduling","kind":"explains"},{"source":"content:sap-s-api-policy-on-ai-agents-what-it-prohibits-allows-and-leaves-open","target":"capability:agent-tooling","kind":"explains"},{"source":"content:sap-s-api-policy-on-ai-agents-what-it-prohibits-allows-and-leaves-open","target":"capability:mcp-servers","kind":"explains"},{"source":"content:sap-s-api-policy-on-ai-agents-what-it-prohibits-allows-and-leaves-open","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:sap-s-api-policy-on-ai-agents-what-it-prohibits-allows-and-leaves-open","target":"artifact:sap-adt-mcp-server","kind":"explains"},{"source":"content:sap-soap-sender-receiver-adapters-your-integration-game-changers","target":"capability:integration-flows","kind":"explains"},{"source":"content:sap-soap-sender-receiver-adapters-your-integration-game-changers","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:sap-successfactors-extensibility-from-btp-kyma-runtime","target":"capability:deployment","kind":"explains"},{"source":"content:sap-successfactors-extensibility-from-btp-kyma-runtime","target":"capability:destinations","kind":"explains"},{"source":"content:sap-tech-bytes-adding-service-implementation-to-an-sap-hana-project","target":"capability:odata","kind":"explains"},{"source":"content:sap-tech-bytes-adding-service-implementation-to-an-sap-hana-project","target":"capability:openapi","kind":"explains"},{"source":"content:sap-tutorial-add-mcp-capabilities-to-a-cap-service","target":"capability:mcp-servers","kind":"explains"},{"source":"content:sap-tutorial-add-mcp-capabilities-to-a-cap-service","target":"artifact:cap-js-mcp","kind":"explains"},{"source":"content:sap-tutorial-api-composition-supply-risk","target":"artifact:btp-api-composition","kind":"explains"},{"source":"content:sap-tutorial-cap-define-constraints-declaratively","target":"capability:input-validation","kind":"explains"},{"source":"content:sap-tutorial-cap-define-constraints-declaratively","target":"capability:data-modelling","kind":"explains"},{"source":"content:sap-tutorial-cap-examine-mcp-startup","target":"capability:mcp-servers","kind":"explains"},{"source":"content:sap-tutorial-cap-examine-mcp-startup","target":"artifact:cap-js-mcp","kind":"explains"},{"source":"content:sap-tutorial-cap-intro-to-repl","target":"capability:local-development","kind":"explains"},{"source":"content:sap-tutorial-cap-intro-to-repl","target":"capability:debugging","kind":"explains"},{"source":"content:sap-tutorial-cap-mocking-auth","target":"capability:authentication","kind":"explains"},{"source":"content:sap-tutorial-cap-mocking-auth","target":"capability:local-development","kind":"explains"},{"source":"content:sap-tutorial-cap-self-contained-dev-env","target":"capability:local-development","kind":"explains"},{"source":"content:sap-tutorial-cap-soap-service","target":"capability:destinations","kind":"explains"},{"source":"content:sap-tutorial-cap-status-transition-flows","target":"capability:data-modelling","kind":"explains"},{"source":"content:sap-tutorial-cicd-start-cap","target":"capability:ci-cd","kind":"explains"},{"source":"content:sap-tutorial-cicd-wdi5-cap","target":"capability:testing","kind":"explains"},{"source":"content:sap-tutorial-cicd-wdi5-cap","target":"artifact:ui5-community-wdi5","kind":"explains"},{"source":"content:sap-tutorial-cloudsdk-integrate-cap","target":"capability:destinations","kind":"explains"},{"source":"content:sap-tutorial-cp-cap-java-hana-db","target":"capability:database-connectors","kind":"explains"},{"source":"content:sap-tutorial-integration-suite-mcp-server","target":"capability:mcp-servers","kind":"explains"},{"source":"content:sap-tutorial-integration-suite-mcp-server","target":"artifact:btp-api-management","kind":"explains"},{"source":"content:sapcap-win-customer-trust-using-data-privacy-and-protection-services-on-btp-part-2","target":"capability:data-privacy","kind":"explains"},{"source":"content:sapcap-win-customer-trust-using-data-privacy-and-protection-services-on-btp-part-3","target":"capability:data-privacy","kind":"explains"},{"source":"content:sapcap-win-customer-trust-using-data-privacy-and-protection-services-on-btp-part","target":"capability:data-privacy","kind":"explains"},{"source":"content:scheduling-a-background-job-for-the-bdc-session-method-using-rsbdcsub","target":"capability:job-scheduling","kind":"explains"},{"source":"content:securing-a-cap-endpoint-called-by-the-job-scheduling-service","target":"capability:authorization","kind":"explains"},{"source":"content:securing-a-cap-endpoint-called-by-the-job-scheduling-service","target":"capability:async-processing","kind":"explains"},{"source":"content:securing-a-cap-nodejs-app-with-sap-ams-on-btp-cloud-foundry","target":"capability:authorization","kind":"explains"},{"source":"content:securing-cap-applications-with-cloud-identity-services-and-ams","target":"capability:authorization","kind":"explains"},{"source":"content:securing-cap-applications-with-cloud-identity-services-and-ams","target":"capability:authentication","kind":"explains"},{"source":"content:securing-multiple-cap-java-apps-with-one-xsuaa-instance","target":"capability:authorization","kind":"explains"},{"source":"content:securing-sap-cap-applications-xsuaa-roles-and-authorization-best-practices","target":"capability:authorization","kind":"explains"},{"source":"content:semantic-search-in-cap-nodejs-vector-embeddings","target":"capability:retrieval-augmented-generation","kind":"explains"},{"source":"content:semantic-search-in-cap-nodejs-vector-embeddings","target":"capability:search","kind":"explains"},{"source":"content:sending-email-through-an-on-premise-mail-destination-from-cap","target":"capability:notifications","kind":"explains"},{"source":"content:sending-email-through-an-on-premise-mail-destination-from-cap","target":"capability:destinations","kind":"explains"},{"source":"content:sending-emails-from-sap-cap-applications-with-any-smtp-provider","target":"capability:destinations","kind":"explains"},{"source":"content:sending-emails-from-sap-cap-applications-with-any-smtp-provider","target":"capability:notifications","kind":"explains"},{"source":"content:september-15th-what-s-new-on-developers-sap-com","target":"capability:mcp-servers","kind":"explains"},{"source":"content:september-15th-what-s-new-on-developers-sap-com","target":"capability:graphql","kind":"explains"},{"source":"content:september-15th-what-s-new-on-developers-sap-com","target":"capability:agent-tooling","kind":"explains"},{"source":"content:september-15th-what-s-new-on-developers-sap-com","target":"capability:metadata-publishing","kind":"explains"},{"source":"content:service-interfaces-and-abap-proxy-generation-support-in-sap-integration-suite","target":"capability:integration-flows","kind":"explains"},{"source":"content:set-up-the-sap-cloud-connector-integrating-on-premise-systems-with-cloud-service","target":"artifact:sap-cloud-connector","kind":"explains"},{"source":"content:set-up-the-sap-cloud-connector-integrating-on-premise-systems-with-cloud-service","target":"capability:destinations","kind":"explains"},{"source":"content:set-up-vs-code-on-chrome-os-for-local-cap-development","target":"capability:local-development","kind":"explains"},{"source":"content:setting-the-right-expectations-around-ai-for-code-generation","target":"capability:agent-guidance","kind":"explains"},{"source":"content:setting-up-alerts-for-sap-cloud-integration-using-sap-alert-notification-service","target":"artifact:btp-alert-notification","kind":"explains"},{"source":"content:setting-up-cap-plugin-for-advanced-event-mesh-with-oauth","target":"artifact:cap-js-advanced-event-mesh","kind":"explains"},{"source":"content:setting-up-cap-plugin-for-advanced-event-mesh-with-oauth","target":"capability:event-mesh","kind":"explains"},{"source":"content:setting-up-postgresql-for-sap-btp-development","target":"capability:database-connectors","kind":"explains"},{"source":"content:sftp-authentication-setup-in-sap-btp-integration-suite-a-step-by-step-guide","target":"capability:integration-flows","kind":"explains"},{"source":"content:sftp-authentication-setup-in-sap-btp-integration-suite-a-step-by-step-guide","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:sftp-file-level-checks-in-sap-btp-cloud-integration","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:sharing-a-hana-cloud-instance-across-subaccounts-with-hdi-containers","target":"capability:database-connectors","kind":"explains"},{"source":"content:side-effects-in-fiori-triggering-actions-and-updating-data-in-your-unmanaged-rap","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:simple-table-maintenance-in-sap-fiori-using-ui5-smart-controls","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:simple-table-maintenance-in-sap-fiori-using-ui5-smart-controls","target":"capability:ui5-data-binding","kind":"explains"},{"source":"content:simplifying-abap-proxy-migration-from-sap-po-to-integration-suite-no-mdr-require","target":"capability:platform-migration","kind":"explains"},{"source":"content:simplifying-saas-self-onboarding-automation-using-terraform","target":"capability:multitenancy","kind":"explains"},{"source":"content:simplifying-saas-self-onboarding-automation-using-terraform","target":"capability:deployment","kind":"explains"},{"source":"content:simplifying-sap-btp-authentication-in-pipelines-with-sap-passport","target":"capability:authentication","kind":"explains"},{"source":"content:simplifying-sap-btp-authentication-in-pipelines-with-sap-passport","target":"capability:testing","kind":"explains"},{"source":"content:smart-filter-value-help-for-fields-that-are-not-associated-entities","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:speed-up-deployment-for-cap-using-turborepo","target":"capability:deployment","kind":"explains"},{"source":"content:sqlite-as-database-for-a-productive-cap-application","target":"capability:database-connectors","kind":"explains"},{"source":"content:sqlite-as-database-for-a-productive-cap-application","target":"capability:deployment","kind":"explains"},{"source":"content:standardized-oidc-api-access-to-sap-s-4hana-via-sap-api-management-and-microsoft","target":"capability:authentication","kind":"explains"},{"source":"content:standardized-oidc-api-access-to-sap-successfactors-via-sap-api-management-and-mi","target":"capability:authentication","kind":"explains"},{"source":"content:step-by-step-guide-google-sheets-api-integration-in-sap-cpi-via-open-connectors","target":"capability:third-party-connectors","kind":"explains"},{"source":"content:step-by-step-guide-to-display-system-details-on-sap-fiori-launchpad-shell","target":"capability:launchpad-plugins","kind":"explains"},{"source":"content:step-by-step-guide-to-display-system-details-on-sap-fiori-launchpad-shell","target":"capability:odata","kind":"explains"},{"source":"content:stop-building-from-scratch-unlocking-sap-cloud-integration-s-standard-content","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:stop-building-from-scratch-unlocking-sap-cloud-integration-s-standard-content","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:storyboard-for-cloud-business-applications-using-cap-in-bas","target":"capability:editor-support","kind":"explains"},{"source":"content:streaming-llm-output-with-cap-and-websockets","target":"capability:websocket","kind":"explains"},{"source":"content:streaming-llm-output-with-cap-and-websockets","target":"capability:llm-integration","kind":"explains"},{"source":"content:streamline-user-targeting-with-segments-in-sap-feature-flags","target":"capability:feature-toggles","kind":"explains"},{"source":"content:streamline-user-targeting-with-segments-in-sap-feature-flags","target":"artifact:btp-feature-flags","kind":"explains"},{"source":"content:streamlined-kyma-deployment-for-cap-applications","target":"capability:deployment","kind":"explains"},{"source":"content:streamlining-cap-development-with-cds-graphical-modeler-in-bas","target":"capability:editor-support","kind":"explains"},{"source":"content:surviving-and-thriving-with-cap-deployment","target":"capability:deployment","kind":"explains"},{"source":"content:surviving-and-thriving-with-the-sap-cloud-application-programming-model-local-de","target":"capability:local-development","kind":"explains"},{"source":"content:surviving-and-thriving-with-the-sap-cloud-application-programming-model-local-de","target":"capability:destinations","kind":"explains"},{"source":"content:surviving-and-thriving-with-the-sap-cloud-application-programming-model-local-de","target":"capability:debugging","kind":"explains"},{"source":"content:swagger-ui-for-cds-sap-btp-extension-generators","target":"capability:openapi","kind":"explains"},{"source":"content:taking-cap-to-the-next-level-with-typescript","target":"capability:typescript-patterns","kind":"explains"},{"source":"content:taking-cap-to-the-next-level-with-typescript","target":"artifact:mrbandler-cds2types","kind":"explains"},{"source":"content:taking-cap-to-the-next-level-with-typescript","target":"artifact:mrbandler-cds-routing-handlers","kind":"explains"},{"source":"content:taking-control-of-clean-core-when-to-use-project-kernseife-in-addition-to-standa","target":"capability:abap-static-analysis","kind":"explains"},{"source":"content:taking-control-of-clean-core-when-to-use-project-kernseife-in-addition-to-standa","target":"capability:abap-cloud-readiness","kind":"explains"},{"source":"content:talk-to-the-database-cap-and-sqlite-with-gemini","target":"capability:llm-integration","kind":"explains"},{"source":"content:talk-to-the-database-cap-and-sqlite-with-gemini","target":"capability:database-connectors","kind":"explains"},{"source":"content:teaching-ai-agents-best-practices-a-skills-workspace-for-cap","target":"capability:agent-guidance","kind":"explains"},{"source":"content:teched-2026-ad162","target":"artifact:sap-cds","kind":"explains"},{"source":"content:teched-2026-ad162","target":"artifact:sap-cds-oyster","kind":"explains"},{"source":"content:teched-2026-ad162","target":"capability:status-flows","kind":"explains"},{"source":"content:teched-2026-ad162","target":"capability:input-validation","kind":"explains"},{"source":"content:teched-2026-ad164","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-ad164","target":"capability:process-automation","kind":"explains"},{"source":"content:teched-2026-ad164","target":"capability:agent-tooling","kind":"explains"},{"source":"content:teched-2026-ad260","target":"artifact:sap-joule-for-developers","kind":"explains"},{"source":"content:teched-2026-ad260","target":"capability:abap-transactional-model","kind":"explains"},{"source":"content:teched-2026-ad261","target":"artifact:btp-abap-environment","kind":"explains"},{"source":"content:teched-2026-ad261","target":"artifact:sap-adt-eclipse","kind":"explains"},{"source":"content:teched-2026-ad261","target":"capability:debugging","kind":"explains"},{"source":"content:teched-2026-ad262","target":"capability:mcp-servers","kind":"explains"},{"source":"content:teched-2026-ad262","target":"capability:llm-integration","kind":"explains"},{"source":"content:teched-2026-ad262","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:teched-2026-ad263","target":"artifact:sap-joule-work-dev-cli","kind":"explains"},{"source":"content:teched-2026-ad264","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-ad264","target":"artifact:sap-joule-studio-classic","kind":"explains"},{"source":"content:teched-2026-bt106","target":"artifact:sap-leanix-mcp-server","kind":"explains"},{"source":"content:teched-2026-bt115","target":"capability:telemetry","kind":"explains"},{"source":"content:teched-2026-ct1085","target":"artifact:btp-business-application-studio","kind":"explains"},{"source":"content:teched-2026-ct1085","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:teched-2026-ct1085","target":"capability:abap-transactional-model","kind":"explains"},{"source":"content:teched-2026-ct1089","target":"capability:account-provisioning","kind":"explains"},{"source":"content:teched-2026-ct1091","target":"artifact:sap-joule-studio-classic","kind":"explains"},{"source":"content:teched-2026-ct1091","target":"capability:agent-tooling","kind":"explains"},{"source":"content:teched-2026-ct1106","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-ct1133","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:teched-2026-ct1135","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:teched-2026-ct1135","target":"capability:retrieval-augmented-generation","kind":"explains"},{"source":"content:teched-2026-ct1136","target":"capability:plugin-authoring","kind":"explains"},{"source":"content:teched-2026-ct1136","target":"artifact:sap-cds","kind":"explains"},{"source":"content:teched-2026-ct1158","target":"capability:abap-extensibility","kind":"explains"},{"source":"content:teched-2026-ct1163","target":"capability:replication","kind":"explains"},{"source":"content:teched-2026-ct1163","target":"capability:object-storage","kind":"explains"},{"source":"content:teched-2026-ct1168","target":"artifact:btp-business-application-studio","kind":"explains"},{"source":"content:teched-2026-ct1168","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:teched-2026-ct1168","target":"capability:llm-integration","kind":"explains"},{"source":"content:teched-2026-ct1207","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-ct1207","target":"capability:odata","kind":"explains"},{"source":"content:teched-2026-ct1207","target":"capability:tool-governance","kind":"explains"},{"source":"content:teched-2026-ct1219","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-ct1222","target":"capability:integration-flows","kind":"explains"},{"source":"content:teched-2026-ct1222","target":"capability:ci-cd","kind":"explains"},{"source":"content:teched-2026-ct1222","target":"capability:abap-static-analysis","kind":"explains"},{"source":"content:teched-2026-ct1238","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:teched-2026-ct1238","target":"capability:llm-integration","kind":"explains"},{"source":"content:teched-2026-ct1239","target":"capability:agent-code-access","kind":"explains"},{"source":"content:teched-2026-ct1239","target":"capability:odata","kind":"explains"},{"source":"content:teched-2026-da100","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-da100","target":"capability:replication","kind":"explains"},{"source":"content:teched-2026-da104","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-da104","target":"capability:data-cataloguing","kind":"explains"},{"source":"content:teched-2026-da105","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-da105","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:teched-2026-da112","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:teched-2026-da112","target":"artifact:btp-automation-pilot","kind":"explains"},{"source":"content:teched-2026-da112","target":"capability:operations-automation","kind":"explains"},{"source":"content:teched-2026-da113","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:teched-2026-da113","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:teched-2026-da114","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:teched-2026-da114","target":"capability:platform-migration","kind":"explains"},{"source":"content:teched-2026-da160","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-da161","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-da161","target":"capability:data-cataloguing","kind":"explains"},{"source":"content:teched-2026-da162","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-da163","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:teched-2026-da163","target":"artifact:btp-automation-pilot","kind":"explains"},{"source":"content:teched-2026-da163","target":"capability:operations-automation","kind":"explains"},{"source":"content:teched-2026-da164","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:teched-2026-da164","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:teched-2026-da164","target":"capability:retrieval-augmented-generation","kind":"explains"},{"source":"content:teched-2026-da164","target":"capability:agent-tooling","kind":"explains"},{"source":"content:teched-2026-da200","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-da200","target":"capability:platform-migration","kind":"explains"},{"source":"content:teched-2026-da204","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:teched-2026-da204","target":"capability:predictive-models","kind":"explains"},{"source":"content:teched-2026-da204","target":"capability:multi-model-data","kind":"explains"},{"source":"content:teched-2026-da205","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:teched-2026-da205","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:teched-2026-da205","target":"capability:multi-model-data","kind":"explains"},{"source":"content:teched-2026-da205","target":"capability:agent-tooling","kind":"explains"},{"source":"content:teched-2026-da206","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-da260","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-da260","target":"artifact:btp-analytics-cloud","kind":"explains"},{"source":"content:teched-2026-da260","target":"capability:data-cataloguing","kind":"explains"},{"source":"content:teched-2026-da261","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-da261","target":"artifact:btp-analytics-cloud","kind":"explains"},{"source":"content:teched-2026-da261","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-da262","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:teched-2026-da262","target":"capability:predictive-models","kind":"explains"},{"source":"content:teched-2026-da263","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:teched-2026-da263","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:teched-2026-da263","target":"capability:multi-model-data","kind":"explains"},{"source":"content:teched-2026-da263","target":"capability:agent-tooling","kind":"explains"},{"source":"content:teched-2026-da264","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:teched-2026-da264","target":"capability:analytic-modelling","kind":"explains"},{"source":"content:teched-2026-da802","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-da806","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-da806","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-da807","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:teched-2026-da807","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-in111","target":"artifact:btp-advanced-event-mesh","kind":"explains"},{"source":"content:teched-2026-in111","target":"capability:event-mesh","kind":"explains"},{"source":"content:teched-2026-in120","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-in120","target":"artifact:btp-trading-partner-management","kind":"explains"},{"source":"content:teched-2026-in120","target":"capability:trading-partner-agreements","kind":"explains"},{"source":"content:teched-2026-in160","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:teched-2026-in160","target":"capability:ci-cd","kind":"explains"},{"source":"content:teched-2026-in161","target":"artifact:btp-trading-partner-management","kind":"explains"},{"source":"content:teched-2026-in161","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-in161","target":"capability:trading-partner-agreements","kind":"explains"},{"source":"content:teched-2026-in161","target":"capability:b2b-message-mapping","kind":"explains"},{"source":"content:teched-2026-in162","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-in163","target":"artifact:btp-advanced-event-mesh","kind":"explains"},{"source":"content:teched-2026-in163","target":"capability:event-mesh","kind":"explains"},{"source":"content:teched-2026-in200","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-in200","target":"capability:tool-governance","kind":"explains"},{"source":"content:teched-2026-in202","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-in202","target":"capability:platform-migration","kind":"explains"},{"source":"content:teched-2026-in203","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-in203","target":"capability:platform-migration","kind":"explains"},{"source":"content:teched-2026-in208","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:teched-2026-in211","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-in211","target":"capability:integration-flows","kind":"explains"},{"source":"content:teched-2026-in212","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-in212","target":"artifact:btp-integration-suite-event-mesh","kind":"explains"},{"source":"content:teched-2026-in212","target":"artifact:btp-api-management","kind":"explains"},{"source":"content:teched-2026-in212","target":"capability:platform-migration","kind":"explains"},{"source":"content:teched-2026-in260","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-in260","target":"capability:platform-migration","kind":"explains"},{"source":"content:teched-2026-in261","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-in261","target":"capability:tool-governance","kind":"explains"},{"source":"content:teched-2026-in261","target":"capability:agent-systems-access","kind":"explains"},{"source":"content:teched-2026-in262","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-in262","target":"capability:integration-flows","kind":"explains"},{"source":"content:teched-2026-in804","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-in804","target":"artifact:btp-api-management","kind":"explains"},{"source":"content:teched-2026-in810","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-in810","target":"capability:platform-migration","kind":"explains"},{"source":"content:teched-2026-in813","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-in813","target":"capability:tool-governance","kind":"explains"},{"source":"content:teched-2026-jw122","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-jw122","target":"capability:mobile-apps","kind":"explains"},{"source":"content:teched-2026-jw129","target":"capability:generative-ui","kind":"explains"},{"source":"content:teched-2026-jw129","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-jw213","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:teched-2026-jw213","target":"capability:odata","kind":"explains"},{"source":"content:teched-2026-jw214","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-jw214","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-jw262","target":"artifact:cap-js-mcp-server","kind":"explains"},{"source":"content:teched-2026-jw262","target":"artifact:sap-ux-fiori-mcp-server","kind":"explains"},{"source":"content:teched-2026-jw262","target":"artifact:sap-adt-mcp-server","kind":"explains"},{"source":"content:teched-2026-jw262","target":"capability:agent-code-access","kind":"explains"},{"source":"content:teched-2026-jw300","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-jw301","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-jw809","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-par1102","target":"capability:agent-code-access","kind":"explains"},{"source":"content:teched-2026-par1105","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-par1105","target":"capability:abap-extensibility","kind":"explains"},{"source":"content:teched-2026-par1113","target":"artifact:btp-cloud-integration","kind":"explains"},{"source":"content:teched-2026-par1113","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-par1115","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-par1115","target":"capability:platform-migration","kind":"explains"},{"source":"content:teched-2026-par1119","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-par1120","target":"capability:testing","kind":"explains"},{"source":"content:teched-2026-ra106","target":"artifact:btp-document-ai","kind":"explains"},{"source":"content:teched-2026-ra106","target":"capability:document-extraction","kind":"explains"},{"source":"content:teched-2026-ra107","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:teched-2026-ra110","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:teched-2026-ra110","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-ra110","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-ra160","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:teched-2026-ra162","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:teched-2026-ra162","target":"capability:predictive-models","kind":"explains"},{"source":"content:teched-2026-ra163","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-ra163","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-ra164","target":"artifact:btp-document-ai","kind":"explains"},{"source":"content:teched-2026-ra164","target":"capability:document-extraction","kind":"explains"},{"source":"content:teched-2026-st100","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-st103","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:teched-2026-st103","target":"artifact:btp-document-ai","kind":"explains"},{"source":"content:teched-2026-st103","target":"capability:predictive-models","kind":"explains"},{"source":"content:teched-2026-st104","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-st104","target":"capability:agent-systems-access","kind":"explains"},{"source":"content:teched-2026-st106","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:teched-2026-st107","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:teched-2026-st107","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-st108","target":"artifact:btp-hana-cloud","kind":"explains"},{"source":"content:teched-2026-st108","target":"capability:multi-model-data","kind":"explains"},{"source":"content:teched-2026-st113","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-st113","target":"capability:platform-migration","kind":"explains"},{"source":"content:teched-2026-st115","target":"artifact:btp-advanced-event-mesh","kind":"explains"},{"source":"content:teched-2026-st115","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:teched-2026-st115","target":"capability:event-mesh","kind":"explains"},{"source":"content:teched-2026-st122","target":"capability:abap-extensibility","kind":"explains"},{"source":"content:teched-2026-st122","target":"artifact:btp-build-code","kind":"explains"},{"source":"content:teched-2026-st124","target":"artifact:sap-joule-for-developers","kind":"explains"},{"source":"content:teched-2026-st200","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-tm100","target":"capability:agent-systems-access","kind":"explains"},{"source":"content:teched-2026-tm104","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-tm105","target":"artifact:sap-joule-for-developers","kind":"explains"},{"source":"content:teched-2026-tm108","target":"capability:abap-extensibility","kind":"explains"},{"source":"content:teched-2026-tm108","target":"capability:abap-cloud-readiness","kind":"explains"},{"source":"content:teched-2026-tm109","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-tm215","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-tm215","target":"capability:abap-extensibility","kind":"explains"},{"source":"content:teched-2026-tm260","target":"artifact:sap-joule-for-developers","kind":"explains"},{"source":"content:teched-2026-tm260","target":"capability:abap-cloud-readiness","kind":"explains"},{"source":"content:teched-2026-tm261","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-tm262","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-tm263","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-tm265","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-tm265","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:teched-2026-tm267","target":"capability:agent-systems-access","kind":"explains"},{"source":"content:teched-2026-tm268","target":"artifact:abap-cds","kind":"explains"},{"source":"content:teched-2026-tm268","target":"artifact:sap-hana","kind":"explains"},{"source":"content:teched-2026-tm268","target":"capability:data-modelling","kind":"explains"},{"source":"content:teched-2026-tm815","target":"capability:abap-extensibility","kind":"explains"},{"source":"content:teched-2026-tm815","target":"capability:process-automation","kind":"explains"},{"source":"content:teched-2026-tm817","target":"capability:abap-extensibility","kind":"explains"},{"source":"content:teched-2026-tm818","target":"capability:deployment","kind":"explains"},{"source":"content:teched-2026-xp100","target":"artifact:btp-cloud-identity-services","kind":"explains"},{"source":"content:teched-2026-xp100","target":"capability:authentication","kind":"explains"},{"source":"content:teched-2026-xp100","target":"capability:identity-provisioning","kind":"explains"},{"source":"content:teched-2026-xp101","target":"capability:authorization","kind":"explains"},{"source":"content:teched-2026-xp101","target":"capability:tool-governance","kind":"explains"},{"source":"content:teched-2026-xp104","target":"capability:identity-provisioning","kind":"explains"},{"source":"content:teched-2026-xp108","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-xp112","target":"artifact:btp-cloud-identity-services","kind":"explains"},{"source":"content:teched-2026-xp112","target":"capability:authentication","kind":"explains"},{"source":"content:teched-2026-xp112","target":"capability:authorization","kind":"explains"},{"source":"content:teched-2026-xp113","target":"artifact:btp-business-data-cloud","kind":"explains"},{"source":"content:teched-2026-xp113","target":"capability:data-cataloguing","kind":"explains"},{"source":"content:teched-2026-xp160","target":"capability:documentation","kind":"explains"},{"source":"content:teched-2026-xp200","target":"artifact:btp-cloud-transport-management","kind":"explains"},{"source":"content:teched-2026-xp200","target":"capability:change-promotion","kind":"explains"},{"source":"content:teched-2026-xp201","target":"artifact:btp-cloud-logging","kind":"explains"},{"source":"content:teched-2026-xp201","target":"capability:operations-automation","kind":"explains"},{"source":"content:teched-2026-xp260","target":"artifact:btp-content-agent","kind":"explains"},{"source":"content:teched-2026-xp260","target":"artifact:btp-cloud-transport-management","kind":"explains"},{"source":"content:teched-2026-xp260","target":"artifact:btp-alert-notification","kind":"explains"},{"source":"content:teched-2026-xp260","target":"artifact:btp-automation-pilot","kind":"explains"},{"source":"content:teched-2026-xp260","target":"artifact:btp-cloud-logging","kind":"explains"},{"source":"content:teched-2026-xp260","target":"capability:operations-automation","kind":"explains"},{"source":"content:teched-2026-xp260","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-xp263","target":"artifact:btp-cloud-identity-services","kind":"explains"},{"source":"content:teched-2026-xp263","target":"capability:identity-provisioning","kind":"explains"},{"source":"content:teched-2026-xp265","target":"capability:account-provisioning","kind":"explains"},{"source":"content:teched-2026-xp266","target":"artifact:btp-kyma-runtime","kind":"explains"},{"source":"content:teched-2026-xp266","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:teched-2026-xp266","target":"capability:operations-automation","kind":"explains"},{"source":"content:teched-2026-xp822","target":"artifact:btp-cloud-identity-services","kind":"explains"},{"source":"content:teched-2026-xp825","target":"artifact:sap-joule","kind":"explains"},{"source":"content:teched-2026-xp825","target":"artifact:btp-cloud-identity-services","kind":"explains"},{"source":"content:teched-2026-xp825","target":"artifact:btp-cloud-logging","kind":"explains"},{"source":"content:testing-cap-hana-artifacts-with-jest","target":"capability:testing","kind":"explains"},{"source":"content:testing-cap-hana-artifacts-with-jest","target":"capability:multitenancy","kind":"explains"},{"source":"content:testing-cap-hana-artifacts-with-jest","target":"capability:database-connectors","kind":"explains"},{"source":"content:testing-sap-build-process-automation-task-ui-in-bas","target":"capability:task-uis","kind":"explains"},{"source":"content:the-capstone-project-a-journey-from-component-to-cloud","target":"capability:reference-apps","kind":"explains"},{"source":"content:the-complete-guide-to-calling-actions-in-ui5-with-custom-code","target":"capability:odata","kind":"explains"},{"source":"content:the-complete-guide-to-calling-actions-in-ui5-with-custom-code","target":"capability:ui5-data-binding","kind":"explains"},{"source":"content:the-easiest-way-to-expose-a-cap-nodejs-project-as-an-mcp-server","target":"artifact:cap-js-mcp","kind":"explains"},{"source":"content:the-easiest-way-to-expose-a-cap-nodejs-project-as-an-mcp-server","target":"capability:mcp-servers","kind":"explains"},{"source":"content:the-end2end-journey-advocates-service-odata-v2-v4-and-rest","target":"capability:odata","kind":"explains"},{"source":"content:the-end2end-journey-advocates-service-odata-v2-v4-and-rest","target":"capability:reference-apps","kind":"explains"},{"source":"content:the-fastest-way-to-a-deployable-cap-app-on-cloud-foundry","target":"capability:deployment","kind":"explains"},{"source":"content:the-fastest-way-to-run-full-stack-applications-in-bas","target":"capability:local-development","kind":"explains"},{"source":"content:the-fastest-way-to-run-full-stack-applications-in-bas","target":"capability:editor-support","kind":"explains"},{"source":"content:the-fourth-way-to-go-offline-in-ui5-and-why-the-service-worker-stays-dumb","target":"capability:odata","kind":"explains"},{"source":"content:the-fourth-way-to-go-offline-in-ui5-and-why-the-service-worker-stays-dumb","target":"capability:ui5-data-binding","kind":"explains"},{"source":"content:the-future-of-abap-is-here-vs-code-adt-zero-config-mcp-and-ai-co-pilots","target":"artifact:sap-adt-vscode","kind":"explains"},{"source":"content:the-future-of-abap-is-here-vs-code-adt-zero-config-mcp-and-ai-co-pilots","target":"artifact:sap-adt-mcp-server","kind":"explains"},{"source":"content:the-future-of-abap-is-here-vs-code-adt-zero-config-mcp-and-ai-co-pilots","target":"capability:editor-support","kind":"explains"},{"source":"content:the-future-of-abap-is-here-vs-code-adt-zero-config-mcp-and-ai-co-pilots","target":"capability:agent-code-access","kind":"explains"},{"source":"content:the-future-of-continuous-delivery-for-cloud-sdk-and-cap","target":"capability:deployment","kind":"explains"},{"source":"content:the-new-way-to-consume-service-bindings-on-kyma-runtime","target":"capability:deployment","kind":"explains"},{"source":"content:the-sap-fiori-elements-feature-showcase-with-cap-cds-annotations","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:tips-and-tricks-for-annotations-in-cap-projects-using-lsp","target":"capability:editor-support","kind":"explains"},{"source":"content:tips-and-tricks-for-annotations-in-cap-projects-using-lsp","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:tips-for-running-cap-nodejs-in-sap-btp","target":"capability:deployment","kind":"explains"},{"source":"content:tips-for-running-cap-nodejs-in-sap-btp","target":"capability:configuration","kind":"explains"},{"source":"content:tips-vs-code-extensions","target":"capability:editor-support","kind":"explains"},{"source":"content:tree-table-support-in-cap-is-now-generally-available","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:trigger-an-sbpa-workflow-from-cap-with-cap-js-process","target":"artifact:cap-js-process","kind":"explains"},{"source":"content:trigger-an-sbpa-workflow-from-cap-with-cap-js-process","target":"capability:workflow-integration","kind":"explains"},{"source":"content:triggering-background-jobs-from-rap-actions-a-practical-guide","target":"capability:async-processing","kind":"explains"},{"source":"content:triggering-sap-build-process-automation-processes-from-cap-apps","target":"capability:workflow-integration","kind":"explains"},{"source":"content:triggering-sap-build-process-automation-processes-from-cap-apps","target":"capability:event-mesh","kind":"explains"},{"source":"content:troubleshooting-deploying-a-cap-project-to-hana-cloud","target":"capability:database-connectors","kind":"explains"},{"source":"content:troubleshooting-deploying-a-cap-project-to-hana-cloud","target":"capability:deployment","kind":"explains"},{"source":"content:turn-sap-apis-into-mcp-tools-for-ai-agents-using-sap-integration-suite-free-tria","target":"capability:mcp-servers","kind":"explains"},{"source":"content:turn-sap-apis-into-mcp-tools-for-ai-agents-using-sap-integration-suite-free-tria","target":"artifact:btp-integration-suite","kind":"explains"},{"source":"content:turn-sap-apis-into-mcp-tools-for-ai-agents-using-sap-integration-suite-free-tria","target":"artifact:btp-api-management","kind":"explains"},{"source":"content:typescript-sheriff-how-can-i-use-typescript-in-the-sap-ecosystem","target":"capability:typing","kind":"explains"},{"source":"content:typescript-sheriff-how-can-i-use-typescript-in-the-sap-ecosystem","target":"capability:ui5-typescript","kind":"explains"},{"source":"content:ui-composition-with-application-frontend-service","target":"artifact:miyasuta-generator-ui5-library-af-deploy","kind":"explains"},{"source":"content:ui-composition-with-application-frontend-service","target":"capability:ui5-build-tooling","kind":"explains"},{"source":"content:ui-for-the-btp-application-vulnerability-report","target":"capability:odata","kind":"explains"},{"source":"content:ui-for-the-btp-application-vulnerability-report","target":"capability:destinations","kind":"explains"},{"source":"content:ui5-ai-features-library-is-now-an-npm-package","target":"artifact:lemaiwo-ui5-cap-ai-features","kind":"explains"},{"source":"content:ui5-ai-features-library-is-now-an-npm-package","target":"artifact:lemaiwo-ui5-ai-features-demo","kind":"explains"},{"source":"content:ui5-ai-features-library-is-now-an-npm-package","target":"capability:llm-integration","kind":"explains"},{"source":"content:ui5-has-entered-the-chat-building-interactive-mcp-apps-for-sap","target":"capability:mcp-servers","kind":"explains"},{"source":"content:ui5-has-entered-the-chat-building-interactive-mcp-apps-for-sap","target":"capability:generative-ui","kind":"explains"},{"source":"content:ui5-has-entered-the-chat-building-interactive-mcp-apps-for-sap","target":"artifact:marianfoo-ui5con-2026-mcpapps","kind":"explains"},{"source":"content:ui5-mcp-server-got-extended-for-ui-integration-cards-generation","target":"artifact:ui5-mcp-server","kind":"explains"},{"source":"content:ui5-mcp-server-got-extended-for-ui-integration-cards-generation","target":"capability:mcp-servers","kind":"explains"},{"source":"content:ui5-mcp-server-got-extended-for-ui-integration-cards-generation","target":"capability:generators","kind":"explains"},{"source":"content:ui5-mcp-server-got-extended-for-ui-integration-cards-generation","target":"capability:llm-integration","kind":"explains"},{"source":"content:ui5-plugins-for-coding-agents-now-supporting-github-copilot","target":"artifact:ui5-plugins-coding-agents","kind":"explains"},{"source":"content:ui5-plugins-for-coding-agents-now-supporting-github-copilot","target":"capability:agent-guidance","kind":"explains"},{"source":"content:ui5ers-buzz-56-full-stack-ui5-sample-app-with-cap-odata-v4-and-draft","target":"capability:reference-apps","kind":"explains"},{"source":"content:ui5ers-buzz-56-full-stack-ui5-sample-app-with-cap-odata-v4-and-draft","target":"capability:draft-handling","kind":"explains"},{"source":"content:understanding-and-developing-fiori-plugins-with-extension-api-typescript","target":"capability:launchpad-plugins","kind":"explains"},{"source":"content:understanding-and-developing-fiori-plugins-with-extension-api-typescript","target":"artifact:mariokernich-fiori-fullscreen-plugin","kind":"explains"},{"source":"content:understanding-csn-and-its-role-in-embedded-analytics","target":"capability:data-modelling","kind":"explains"},{"source":"content:understanding-csn-and-its-role-in-embedded-analytics","target":"capability:analytical-queries","kind":"explains"},{"source":"content:understanding-entity-relationships-in-cds","target":"capability:data-modelling","kind":"explains"},{"source":"content:understanding-fuzzy-search-in-sap-fiori-applications","target":"capability:search","kind":"explains"},{"source":"content:understanding-projections-in-capm","target":"capability:data-modelling","kind":"explains"},{"source":"content:understanding-security-approaches-in-cap-using-xsuaa-nodejs-and-mta","target":"capability:authorization","kind":"explains"},{"source":"content:understanding-security-approaches-in-cap-using-xsuaa-nodejs-and-mta","target":"capability:authentication","kind":"explains"},{"source":"content:unleashing-abap-potential-an-introduction-to-extension-libraries-xco","target":"capability:logging","kind":"explains"},{"source":"content:unlocking-mcp-servers-in-bas-right-now","target":"capability:agent-code-access","kind":"explains"},{"source":"content:unlocking-mcp-servers-in-bas-right-now","target":"capability:local-development","kind":"explains"},{"source":"content:unlocking-the-power-of-llms-in-cap-llms-txt","target":"capability:agent-guidance","kind":"explains"},{"source":"content:unlocking-the-power-of-llms-in-cap-llms-txt","target":"capability:documentation","kind":"explains"},{"source":"content:upload-attachments-in-a-freestyle-ui5-and-cap-app","target":"capability:attachments","kind":"explains"},{"source":"content:upload-data-from-excel-in-cap-nodejs","target":"capability:database-connectors","kind":"explains"},{"source":"content:upload-data-from-excel-in-cap-nodejs","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:uploading-attachments-to-cap-js-attachments-from-an-external-app","target":"artifact:cap-js-attachments","kind":"explains"},{"source":"content:uploading-attachments-to-cap-js-attachments-from-an-external-app","target":"capability:attachments","kind":"explains"},{"source":"content:usage-of-expand-entity-in-odata-service-consumption-model","target":"capability:http-clients","kind":"explains"},{"source":"content:use-aspects-associations-and-convert-odata-v4-to-v2-using-proxy","target":"capability:odata","kind":"explains"},{"source":"content:use-aspects-associations-and-convert-odata-v4-to-v2-using-proxy","target":"capability:data-modelling","kind":"explains"},{"source":"content:use-cap-to-do-native-development-on-hana-cloud","target":"capability:database-connectors","kind":"explains"},{"source":"content:use-datastore-to-avoid-too-many-duplicate-mpl-attachments-in-exception-retries","target":"capability:integration-flows","kind":"explains"},{"source":"content:use-free-tier-to-create-a-service-instance-for-sap-document-ai","target":"artifact:btp-document-ai","kind":"explains"},{"source":"content:use-free-tier-to-subscribe-to-sap-document-ai-basic-ui","target":"artifact:btp-document-ai","kind":"explains"},{"source":"content:use-free-tier-to-subscribe-to-sap-document-ai-basic-ui","target":"artifact:btp-cloud-identity-services","kind":"explains"},{"source":"content:use-rest-services-in-graph","target":"capability:openapi","kind":"explains"},{"source":"content:use-rest-services-in-graph","target":"capability:destinations","kind":"explains"},{"source":"content:use-sap-document-management-service-plugin-in-cap-nodejs","target":"artifact:cap-js-sdm","kind":"explains"},{"source":"content:use-sap-document-management-service-plugin-in-cap-nodejs","target":"capability:attachments","kind":"explains"},{"source":"content:use-the-destination-service-in-nodejs-locally","target":"capability:destinations","kind":"explains"},{"source":"content:use-the-destination-service-in-nodejs-locally","target":"capability:local-development","kind":"explains"},{"source":"content:use-typescript-with-the-sap-cloud-application-programming-model","target":"capability:typescript-patterns","kind":"explains"},{"source":"content:useful-cap-cds-and-fiori-commands-to-accelerate-development-and-deployment","target":"capability:authorization","kind":"explains"},{"source":"content:useful-cap-cds-and-fiori-commands-to-accelerate-development-and-deployment","target":"capability:database-connectors","kind":"explains"},{"source":"content:useful-cap-cds-and-fiori-commands-to-accelerate-development-and-deployment","target":"capability:generators","kind":"explains"},{"source":"content:useful-cap-cds-and-fiori-commands-to-accelerate-development-and-deployment","target":"capability:destinations","kind":"explains"},{"source":"content:using-apache-kafka-for-messaging-in-cap-part-1","target":"artifact:cds-kafka","kind":"explains"},{"source":"content:using-apache-kafka-for-messaging-in-cap-part-1","target":"capability:event-mesh","kind":"explains"},{"source":"content:using-apache-kafka-for-messaging-in-cap-part-2","target":"artifact:cds-kafka","kind":"explains"},{"source":"content:using-apache-kafka-for-messaging-in-cap-part-2","target":"capability:event-mesh","kind":"explains"},{"source":"content:using-btp-document-extraction-service-into-actual-app-development","target":"artifact:btp-document-ai","kind":"explains"},{"source":"content:using-claude-for-sap-abap-development-on-rfc-only-saprouter-systems-even-ecc-r-3","target":"capability:agent-code-access","kind":"explains"},{"source":"content:using-claude-for-sap-abap-development-on-rfc-only-saprouter-systems-even-ecc-r-3","target":"artifact:oisee-vibing-steampunk","kind":"explains"},{"source":"content:using-cloud-sdk-for-ai-in-a-commonjs-cap-project","target":"capability:llm-integration","kind":"explains"},{"source":"content:using-cloud-sdk-for-ai-in-a-commonjs-cap-project","target":"capability:typescript-patterns","kind":"explains"},{"source":"content:using-communication-targets-for-outbound-rfc-communication-in-abap","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:using-github-actions-to-deploy-a-cap-app-mta","target":"capability:deployment","kind":"explains"},{"source":"content:using-hana-clouds-vector-embedding-function-in-cap","target":"artifact:miyasuta-cap-vector-hc","kind":"explains"},{"source":"content:using-hana-clouds-vector-embedding-function-in-cap","target":"capability:retrieval-augmented-generation","kind":"explains"},{"source":"content:using-hana-clouds-vector-embedding-function-in-cap","target":"capability:database-connectors","kind":"explains"},{"source":"content:using-postgresql-database-in-cloud-application-programming-model","target":"capability:database-connectors","kind":"explains"},{"source":"content:using-postman-for-api-testing-with-xsuaa","target":"capability:authorization","kind":"explains"},{"source":"content:using-postman-for-api-testing-with-xsuaa","target":"capability:testing","kind":"explains"},{"source":"content:using-rfc-function-modules-and-bapis-in-sap-build-process-automation","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:using-rfc-function-modules-and-bapis-in-sap-build-process-automation","target":"capability:destinations","kind":"explains"},{"source":"content:using-sap-hana-tools-with-cap-projects-in-bas","target":"capability:database-connectors","kind":"explains"},{"source":"content:using-sap-managed-iflows-for-time-series-data-integration-in-sap-ibp-part-1-read","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:using-sap-managed-iflows-for-time-series-data-integration-in-sap-ibp-part-2-writ","target":"capability:integration-flows","kind":"explains"},{"source":"content:using-sap-managed-iflows-for-time-series-data-integration-in-sap-ibp-part-2-writ","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:using-the-sap-approuter-at-dev-time","target":"artifact:ui5-community-cds-plugin-ui5","kind":"explains"},{"source":"content:using-the-sap-approuter-at-dev-time","target":"capability:local-development","kind":"explains"},{"source":"content:using-the-terraform-provider-for-btp-to-simplify-tenant-onboarding","target":"capability:multitenancy","kind":"explains"},{"source":"content:using-the-ui5-mockserver-for-client-specific-data-and-testing","target":"capability:seed-data","kind":"explains"},{"source":"content:using-the-ui5-mockserver-for-client-specific-data-and-testing","target":"capability:ui5-testing","kind":"explains"},{"source":"content:visualizing-your-sap-bill-of-materials-using-cap-and-fiori-elements","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:vs-code-tasks-to-start-a-cds-service-an-approuter-and-a-browser","target":"capability:local-development","kind":"explains"},{"source":"content:vs-code-tasks-to-start-a-cds-service-an-approuter-and-a-browser","target":"capability:editor-support","kind":"explains"},{"source":"content:websocket-rfc-to-cloud-using-sap-business-connector","target":"capability:rfc-connectivity","kind":"explains"},{"source":"content:what-a-second-document-ai-workshop-taught-me-about-governance","target":"artifact:btp-document-ai","kind":"explains"},{"source":"content:what-a-second-document-ai-workshop-taught-me-about-governance","target":"capability:document-extraction","kind":"explains"},{"source":"content:what-an-ai-infra-engineer-sees-when-opening-sap-s-ai-stack-1-3-the-model-gateway","target":"capability:llm-integration","kind":"explains"},{"source":"content:what-an-ai-infra-engineer-sees-when-opening-sap-s-ai-stack-1-3-the-model-gateway","target":"artifact:btp-ai-core","kind":"explains"},{"source":"content:what-an-ai-infra-engineer-sees-when-opening-sap-s-ai-stack-1-3-the-model-gateway","target":"artifact:sap-ai-sdk-orchestration","kind":"explains"},{"source":"content:what-happens-to-your-data-when-you-enable-sap-s-ai-features","target":"capability:data-privacy","kind":"explains"},{"source":"content:what-happens-to-your-data-when-you-enable-sap-s-ai-features","target":"capability:llm-integration","kind":"explains"},{"source":"content:what-s-new-in-mobile-development-kit-client-26-9","target":"artifact:sap-mdk-mcp-server","kind":"explains"},{"source":"content:what-s-new-in-sap-cloud-application-programming-model-september-2026","target":"capability:agent-tooling","kind":"explains"},{"source":"content:what-s-new-in-sap-cloud-application-programming-model-september-2026","target":"capability:mcp-servers","kind":"explains"},{"source":"content:what-s-new-in-sap-cloud-application-programming-model-september-2026","target":"capability:agent-guidance","kind":"explains"},{"source":"content:whats-new-in-cap-january-2026","target":"artifact:sap-cds","kind":"explains"},{"source":"content:whats-new-in-cap-november-2025","target":"artifact:sap-cds","kind":"explains"},{"source":"content:whats-new-in-cap-september-2025","target":"artifact:sap-cds","kind":"explains"},{"source":"content:where-ord-is-used-in-sap-datasphere-sap-business-data-cloud-sap-databricks","target":"capability:metadata-publishing","kind":"explains"},{"source":"content:why-developers-should-care-about-credential-types-for-xsuaa","target":"capability:authorization","kind":"explains"},{"source":"content:why-our-first-document-ai-exercise-was-a-r-sum-not-an-invoice","target":"capability:document-extraction","kind":"explains"},{"source":"content:why-sap-cloud-identity-matters-for-sap-task-center-it-s-about-trust-and-global-u","target":"capability:authentication","kind":"explains"},{"source":"content:why-sap-cloud-identity-matters-for-sap-task-center-it-s-about-trust-and-global-u","target":"capability:identity-provisioning","kind":"explains"},{"source":"content:why-sap-cloud-identity-matters-for-sap-task-center-it-s-about-trust-and-global-u","target":"artifact:btp-task-center","kind":"explains"},{"source":"content:why-sap-cloud-identity-matters-for-sap-task-center-it-s-about-trust-and-global-u","target":"artifact:btp-cloud-identity-services","kind":"explains"},{"source":"content:why-sap-cloud-identity-matters-for-sap-task-center-it-s-about-trust-and-global-u","target":"artifact:btp-identity-provisioning","kind":"explains"},{"source":"content:why-sap-cloud-identity-matters-for-sap-task-center-it-s-about-trust-and-global-u","target":"artifact:sap-cloud-connector","kind":"explains"},{"source":"content:workflow-development-using-cap-and-sap-build-process-automation","target":"capability:workflow-integration","kind":"explains"},{"source":"content:working-with-the-attachment-plugin-cloud-application-programming","target":"artifact:cap-js-attachments","kind":"explains"},{"source":"content:working-with-the-attachment-plugin-cloud-application-programming","target":"capability:attachments","kind":"explains"},{"source":"content:xml-annotations-the-essentials-before-adapting-documentation-samples","target":"capability:fiori-annotations","kind":"explains"},{"source":"content:xsuaa-attribute-based-vs-authority-based-configuration","target":"capability:authorization","kind":"explains"},{"source":"content:xsuaa-based-authentication-using-managed-approuter","target":"capability:authorization","kind":"explains"},{"source":"content:xsuaa-based-authentication-using-managed-approuter","target":"capability:authentication","kind":"explains"},{"source":"content:xsuaa-based-authentication-using-standalone-approuter","target":"capability:authorization","kind":"explains"},{"source":"content:xsuaa-based-authentication-using-standalone-approuter","target":"capability:authentication","kind":"explains"},{"source":"content:xsuaa-local-testing","target":"capability:authorization","kind":"explains"},{"source":"content:xsuaa-local-testing","target":"capability:local-development","kind":"explains"},{"source":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-2","target":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-1","kind":"part_of"},{"source":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-3","target":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-1","kind":"part_of"},{"source":"content:abap-and-agentic-ai-the-hidden-problem-in-real-projects","target":"content:how-i-use-ai-for-development-and-why-context-matters","kind":"part_of"},{"source":"content:abap-development-automation-with-arc-1-and-github-workflows","target":"content:how-i-use-ai-for-development-and-why-context-matters","kind":"part_of"},{"source":"content:arc-1-1-0-one-deployment-multiple-sap-systems","target":"content:how-i-use-ai-for-development-and-why-context-matters","kind":"part_of"},{"source":"content:arc-1-on-sap-btp-secure-abap-agentic-development-beyond-the-laptop","target":"content:how-i-use-ai-for-development-and-why-context-matters","kind":"part_of"},{"source":"content:arc-1-with-copilot-studio-sap-system-context-beyond-developers","target":"content:how-i-use-ai-for-development-and-why-context-matters","kind":"part_of"},{"source":"content:arc-1-with-joule-studio-bringing-real-abap-system-context-into-joule","target":"content:how-i-use-ai-for-development-and-why-context-matters","kind":"part_of"},{"source":"content:before-you-upgrade-s4hana-static-ui5-checks-with-mcp","target":"content:how-i-use-ai-for-development-and-why-context-matters","kind":"part_of"},{"source":"content:cap-in-the-age-of-ai-1-the-mcp-adapter","target":"content:cap-in-the-age-of-ai","kind":"part_of"},{"source":"content:cap-in-the-age-of-ai-2-more-on-the-mcp-adapter","target":"content:cap-in-the-age-of-ai","kind":"part_of"},{"source":"content:cap-in-the-age-of-ai-3-from-mcp-to-a2a","target":"content:cap-in-the-age-of-ai","kind":"part_of"},{"source":"content:cap-in-the-age-of-ai-4-more-on-agents","target":"content:cap-in-the-age-of-ai","kind":"part_of"},{"source":"content:cap-in-the-age-of-ai-5-agents-wrap-up","target":"content:cap-in-the-age-of-ai","kind":"part_of"},{"source":"content:cap-in-the-age-of-ai-6-vector-embeddings","target":"content:cap-in-the-age-of-ai","kind":"part_of"},{"source":"content:cap-in-the-age-of-ai-7-vector-embeddings-wrap-up","target":"content:cap-in-the-age-of-ai","kind":"part_of"},{"source":"content:from-segw-and-legacy-ui5-to-rap-with-arc-1","target":"content:how-i-use-ai-for-development-and-why-context-matters","kind":"part_of"},{"source":"content:integrating-sap-cloud-identity-services-identity-authentication-ias-with-sap-aud","target":"content:how-to-enable-sap-audit-log-viewer-service-to-collect-all-audit-logs-from-btp-se","kind":"part_of"},{"source":"content:introducing-arc-1-a-secure-adt-mcp-server-for-enterprise-sap-development","target":"content:how-i-use-ai-for-development-and-why-context-matters","kind":"part_of"},{"source":"content:sap-btp-ci-building-open-source-custom-adapter-eventsmartkafka-from-zero-with-sa","target":"content:sap-btp-ci-how-i-built-an-open-source-enterprise-custom-kafka-adapter-from-scrat","kind":"part_of"},{"source":"content:sap-btp-ci-eventsmartkafka-custom-kafka-adapter-from-esa-v1-1-0-validated-runtim","target":"content:sap-btp-ci-how-i-built-an-open-source-enterprise-custom-kafka-adapter-from-scrat","kind":"part_of"},{"source":"content:sap-cloud-application-programming-model-cap-part-2","target":"content:sap-cloud-application-programming-model-cap-part-1","kind":"part_of"},{"source":"content:sap-tutorial-integration-suite-mcp-server","target":"content:sap-tutorial-api-composition-supply-risk","kind":"part_of"},{"source":"content:standardized-oidc-api-access-to-sap-s-4hana-via-sap-api-management-and-microsoft","target":"content:standardized-oidc-api-access-to-sap-successfactors-via-sap-api-management-and-mi","kind":"part_of"},{"source":"content:using-apache-kafka-for-messaging-in-cap-part-2","target":"content:using-apache-kafka-for-messaging-in-cap-part-1","kind":"part_of"},{"source":"actor:mauriciolauffer","target":"content:a-25x-faster-mta-yaml-build-for-cap-nodejs","kind":"writes"},{"source":"actor:mike-zaschka","target":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-1","kind":"writes"},{"source":"actor:mike-zaschka","target":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-2","kind":"writes"},{"source":"actor:mike-zaschka","target":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-3","kind":"writes"},{"source":"actor:marianfoo","target":"content:a-clearer-view-of-your-sap-integrations-under-the-new-api-policy","kind":"writes"},{"source":"actor:geert-janklaps","target":"content:a-fiori-launchpad-sandbox-for-all-your-cap-based-projects-overview","kind":"writes"},{"source":"actor:geert-janklaps","target":"content:a-fiori-launchpad-sandbox-sample-project-setup","kind":"writes"},{"source":"actor:marianfoo","target":"content:abap-and-agentic-ai-the-hidden-problem-in-real-projects","kind":"writes"},{"source":"actor:marianfoo","target":"content:abap-development-automation-with-arc-1-and-github-workflows","kind":"writes"},{"source":"actor:lutzi3","target":"content:abap-development-under-the-clean-core-paradigm-from-bapis-to-bo-and-cds","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-agentic-ai-and-ai-agents","kind":"writes"},{"source":"actor:guilherme-segantini","target":"content:ac-agentic-engineering-for-sap-btp-extensions","kind":"writes"},{"source":"actor:mponce","target":"content:ac-agentic-engineering-for-sap-btp-extensions","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-ai-native-north-star-architecture","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-api-managed-integration","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-application-to-application-integration","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-business-to-business-integration","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-connect-business-processes-with-sap-master-data-integration","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-designing-event-driven-applications","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-devops-with-sap-btp","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-edge-integration-cell-on-hyperscalers","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-establish-a-central-entry-point-with-sap-build-work-zone","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-establish-a-central-inbox-with-sap-task-center","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-explore-your-hyperscaler-data-with-sap-business-data-cloud","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-federated-machine-learning-with-sap-datasphere","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-generative-ai-on-sap-btp","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-hana-ai-toolkit-local-mcp-server","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-integrate-and-extend-with-sap-build-process-automation","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-integrating-and-extending-joule","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-medallion-reference-architecture-for-big-data-processing-in-sap-hana-cloud","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-multi-region-ha-dr-resiliency-patterns","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-multitenant-saas-application-using-cap","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-sap-document-ai","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-sap-hana-cloud-as-an-esri-geodatabase","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-sap-iam-integration-with-sap-cloud-identity-services","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-secure-service-consumption-across-hyperscalers","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-transforming-enterprise-data-strategy-with-sap-business-data-cloud","kind":"writes"},{"source":"actor:sap-architecture-center","target":"content:ac-transitioning-architectures-from-sap-netweaver","kind":"writes"},{"source":"actor:jung-thomas","target":"content:adding-a-swagger-ui-to-your-cap-nodejs-service","kind":"writes"},{"source":"actor:lemaiwo","target":"content:agentic-ai-on-btp-a-multi-agent-app-with-pydantic-ai","kind":"writes"},{"source":"actor:lemaiwo","target":"content:agentic-ai-on-btp-a-single-agent-with-langgraph","kind":"writes"},{"source":"actor:rupamaity","target":"content:ai-powered-user-experience-with-sap-cap-ai","kind":"writes"},{"source":"actor:palak","target":"content:api-composition-seamless-enterprise-data-access-for-developers-and-ai-agents","kind":"writes"},{"source":"actor:marianfoo","target":"content:arc-1-1-0-one-deployment-multiple-sap-systems","kind":"writes"},{"source":"actor:marianfoo","target":"content:arc-1-on-sap-btp-secure-abap-agentic-development-beyond-the-laptop","kind":"writes"},{"source":"actor:marianfoo","target":"content:arc-1-with-copilot-studio-sap-system-context-beyond-developers","kind":"writes"},{"source":"actor:marianfoo","target":"content:arc-1-with-joule-studio-bringing-real-abap-system-context-into-joule","kind":"writes"},{"source":"actor:ayhamt","target":"content:attachment-upload-and-download-with-uploadsetwithtable","kind":"writes"},{"source":"actor:dj-adams","target":"content:avoid-design-time-cap-server-restarts-with-local-data-files","kind":"writes"},{"source":"actor:marianfoo","target":"content:before-you-upgrade-s4hana-static-ui5-checks-with-mcp","kind":"writes"},{"source":"actor:mike-zaschka","target":"content:boosting-performance-in-cap-with-cds-caching","kind":"writes"},{"source":"actor:sap","target":"content:btp-ai-bp-access-to-generative-ai-models","kind":"writes"},{"source":"actor:sap","target":"content:btp-ai-bp-agentic-ai-security-governance","kind":"writes"},{"source":"actor:sap","target":"content:btp-ai-bp-content-filtering","kind":"writes"},{"source":"actor:sap","target":"content:btp-ai-bp-custom-joule-skills","kind":"writes"},{"source":"actor:sap","target":"content:btp-ai-bp-data-masking","kind":"writes"},{"source":"actor:sap","target":"content:btp-ai-bp-document-grounding","kind":"writes"},{"source":"actor:sap","target":"content:btp-ai-bp-joule-agent-builder","kind":"writes"},{"source":"actor:sap","target":"content:btp-ai-bp-mcp","kind":"writes"},{"source":"actor:sap","target":"content:btp-ai-bp-pro-code-ai-agents","kind":"writes"},{"source":"actor:sap","target":"content:btp-ai-bp-prompt-templating","kind":"writes"},{"source":"actor:sap","target":"content:btp-ai-bp-vector-rag-vs-graph-rag","kind":"writes"},{"source":"actor:lemaiwo","target":"content:btp-audit-log-mcp-server-security-monitoring-with-ai-assistants","kind":"writes"},{"source":"actor:lemaiwo","target":"content:btp-cloud-foundry-mcp-server-managing-cf-environments-with-ai","kind":"writes"},{"source":"actor:ajitkp91","target":"content:btp-sapcap-quirky-nuggets-n01-n02","kind":"writes"},{"source":"actor:pandayo","target":"content:btp-sapcap-quirky-nuggets-n05-n06","kind":"writes"},{"source":"actor:mio-yasutake","target":"content:building-an-analytical-list-page-with-cap-odata-v4","kind":"writes"},{"source":"actor:marianfoo","target":"content:building-an-enterprise-ready-sap-ai-agent-with-open-source","kind":"writes"},{"source":"actor:akatuoro","target":"content:building-an-llm-agent-in-cap-java-with-spring-ai","kind":"writes"},{"source":"actor:akatuoro","target":"content:building-an-llm-agent-using-cap","kind":"writes"},{"source":"actor:michal-majer","target":"content:building-custom-authentication-in-sap-cap","kind":"writes"},{"source":"actor:daniilbolobonov","target":"content:building-mcp-servers-with-sap-integration-suite","kind":"writes"},{"source":"actor:dj-adams","target":"content:cap-cds-cdl-csn-and-jq-finding-associations","kind":"writes"},{"source":"actor:jcailan","target":"content:cap-consume-external-service-part-1","kind":"writes"},{"source":"actor:jcailan","target":"content:cap-consume-external-service-part-3","kind":"writes"},{"source":"actor:dj-adams","target":"content:cap-cors-and-custom-headers","kind":"writes"},{"source":"actor:vl-leon","target":"content:cap-full-stack-testing-with-bdd-flavour","kind":"writes"},{"source":"actor:matt1as","target":"content:cap-heaven-not-yet-but-you-can-see-it-from-here","kind":"writes"},{"source":"actor:dj-adams","target":"content:cap-in-the-age-of-ai-1-the-mcp-adapter","kind":"writes"},{"source":"actor:akatuoro","target":"content:cap-in-the-age-of-ai-1-the-mcp-adapter","kind":"writes"},{"source":"actor:sirsimon04","target":"content:cap-in-the-age-of-ai-1-the-mcp-adapter","kind":"writes"},{"source":"actor:stefanrudi","target":"content:cap-in-the-age-of-ai-1-the-mcp-adapter","kind":"writes"},{"source":"actor:danschlachter","target":"content:cap-in-the-age-of-ai-1-the-mcp-adapter","kind":"writes"},{"source":"actor:dj-adams","target":"content:cap-in-the-age-of-ai-2-more-on-the-mcp-adapter","kind":"writes"},{"source":"actor:akatuoro","target":"content:cap-in-the-age-of-ai-2-more-on-the-mcp-adapter","kind":"writes"},{"source":"actor:sirsimon04","target":"content:cap-in-the-age-of-ai-2-more-on-the-mcp-adapter","kind":"writes"},{"source":"actor:stefanrudi","target":"content:cap-in-the-age-of-ai-2-more-on-the-mcp-adapter","kind":"writes"},{"source":"actor:dj-adams","target":"content:cap-in-the-age-of-ai-3-from-mcp-to-a2a","kind":"writes"},{"source":"actor:akatuoro","target":"content:cap-in-the-age-of-ai-3-from-mcp-to-a2a","kind":"writes"},{"source":"actor:stefanrudi","target":"content:cap-in-the-age-of-ai-3-from-mcp-to-a2a","kind":"writes"},{"source":"actor:dj-adams","target":"content:cap-in-the-age-of-ai-4-more-on-agents","kind":"writes"},{"source":"actor:akatuoro","target":"content:cap-in-the-age-of-ai-4-more-on-agents","kind":"writes"},{"source":"actor:dj-adams","target":"content:cap-in-the-age-of-ai-5-agents-wrap-up","kind":"writes"},{"source":"actor:akatuoro","target":"content:cap-in-the-age-of-ai-5-agents-wrap-up","kind":"writes"},{"source":"actor:sirsimon04","target":"content:cap-in-the-age-of-ai-5-agents-wrap-up","kind":"writes"},{"source":"actor:stefanrudi","target":"content:cap-in-the-age-of-ai-5-agents-wrap-up","kind":"writes"},{"source":"actor:danschlachter","target":"content:cap-in-the-age-of-ai-5-agents-wrap-up","kind":"writes"},{"source":"actor:dj-adams","target":"content:cap-in-the-age-of-ai-6-vector-embeddings","kind":"writes"},{"source":"actor:akatuoro","target":"content:cap-in-the-age-of-ai-6-vector-embeddings","kind":"writes"},{"source":"actor:danschlachter","target":"content:cap-in-the-age-of-ai-6-vector-embeddings","kind":"writes"},{"source":"actor:dj-adams","target":"content:cap-in-the-age-of-ai-7-vector-embeddings-wrap-up","kind":"writes"},{"source":"actor:akatuoro","target":"content:cap-in-the-age-of-ai-7-vector-embeddings-wrap-up","kind":"writes"},{"source":"actor:dj-adams","target":"content:cap-in-the-age-of-ai","kind":"writes"},{"source":"actor:akatuoro","target":"content:cap-in-the-age-of-ai","kind":"writes"},{"source":"actor:sirsimon04","target":"content:cap-in-the-age-of-ai","kind":"writes"},{"source":"actor:stefanrudi","target":"content:cap-in-the-age-of-ai","kind":"writes"},{"source":"actor:danschlachter","target":"content:cap-in-the-age-of-ai","kind":"writes"},{"source":"actor:dj-adams","target":"content:cap-is-important-because-its-not-important","kind":"writes"},{"source":"actor:mike-zaschka","target":"content:cap-just-got-faster-whats-new-in-cds-caching-1-0","kind":"writes"},{"source":"actor:capire","target":"content:cap-mcp-adapter-guide","kind":"writes"},{"source":"actor:lemaiwo","target":"content:cap-multitenancy-with-work-zone","kind":"writes"},{"source":"actor:danschlachter","target":"content:cap-node-js-expert-session-6-the-mcp-adapter","kind":"writes"},{"source":"actor:dj-adams","target":"content:cap-node-js-expert-session-6-the-mcp-adapter","kind":"writes"},{"source":"actor:chrisobar","target":"content:cap-now-supports-reactjs-with-working-demo-ui5-web-components","kind":"writes"},{"source":"actor:walteraguerom","target":"content:cap-rap-or-both-stop-hiding-behind-it-depends","kind":"writes"},{"source":"actor:krish469","target":"content:cap-with-mongodb","kind":"writes"},{"source":"actor:mertsap","target":"content:capval-a-project-is-born","kind":"writes"},{"source":"actor:geert-janklaps","target":"content:cds-launchpad-plugin-supercharged","kind":"writes"},{"source":"actor:geert-janklaps","target":"content:cds-toon-ai-protocol-adapter-cutting-token-costs","kind":"writes"},{"source":"actor:dragolea","target":"content:cds-ts-dispatcher-simplifying-sap-cap-typescript-development","kind":"writes"},{"source":"actor:dragolea","target":"content:cds-ts-repository-simplify-cap-entity-persistence","kind":"writes"},{"source":"actor:fabianfellhauer","target":"content:cloud-native-with-abap-cloud-the-transactional-outbox-pattern","kind":"writes"},{"source":"actor:gregorwolf","target":"content:combine-power-automate-microsoft-teams-approvals-and-an-sap-cloud-application-pr","kind":"writes"},{"source":"actor:dj-adams","target":"content:computed-field-example-in-cap","kind":"writes"},{"source":"actor:saranyasampath","target":"content:configure-journal-entry-posting-approval-from-store-template-in-build-process-au","kind":"writes"},{"source":"actor:siddhartharouth","target":"content:connecting-a-custom-mcp-server-to-joule-work-desktop-a-seamless-and-secure-authe","kind":"writes"},{"source":"actor:lemaiwo","target":"content:consume-abap-rfc-function-modules-in-cap","kind":"writes"},{"source":"actor:rashmiangadi","target":"content:consume-sap-document-management-using-cap-js-sdm","kind":"writes"},{"source":"actor:mio-yasutake","target":"content:control-visibility-of-crud-and-custom-actions-based-on-authorization","kind":"writes"},{"source":"actor:lemaiwo","target":"content:create-your-first-cap-plugin","kind":"writes"},{"source":"actor:marianfoo","target":"content:creating-an-arc-1-btp-diagram-with-codex-and-a-drawio-skill","kind":"writes"},{"source":"actor:vobu","target":"content:debug-a-cap-app-with-ui5-typescript-ui-component-with-vs-code","kind":"writes"},{"source":"actor:birgits","target":"content:declarative-programming-in-cap-less-code-more-value","kind":"writes"},{"source":"actor:hari-kumar-talari","target":"content:deep-insert-in-cap-using-composition-and-fiori-elements","kind":"writes"},{"source":"actor:grego952","target":"content:deploy-and-run-the-incident-management-application-in-the-sap-btp-kyma-runtime-w","kind":"writes"},{"source":"actor:htammen","target":"content:develop-cap-project-with-lazyvim-in-docker","kind":"writes"},{"source":"actor:htammen","target":"content:develop-sap-cap-apps-inside-a-vs-code-docker-container","kind":"writes"},{"source":"actor:lnoenssap","target":"content:developing-mobile-apps-with-sap-build","kind":"writes"},{"source":"actor:fabianfellhauer","target":"content:devtoberfest-2026-aba-32-business-ai-abap-cloud","kind":"writes"},{"source":"actor:anarguri","target":"content:devtoberfest-2026-aba-33-embedded-analytics-abap-cloud","kind":"writes"},{"source":"actor:uenal-akkaya","target":"content:devtoberfest-2026-abap-development-tools-for-vs-code","kind":"writes"},{"source":"actor:marianfoo","target":"content:devtoberfest-2026-ai-assisted-sap-development-with-mcp","kind":"writes"},{"source":"actor:mkemeter","target":"content:devtoberfest-2026-ai22-joule-work-desktop-brain","kind":"writes"},{"source":"actor:nkaputnik","target":"content:devtoberfest-2026-cap-cds-oyster-extensibility","kind":"writes"},{"source":"actor:dj-adams","target":"content:devtoberfest-2026-cap-cds-oyster-extensibility","kind":"writes"},{"source":"actor:mauriciolauffer","target":"content:devtoberfest-2026-cap-mcp-ui5-webmcp","kind":"writes"},{"source":"actor:lemaiwo","target":"content:devtoberfest-2026-code-based-ai-agents-baip","kind":"writes"},{"source":"actor:danjoa","target":"content:devtoberfest-2026-daniel-hutzel-brain","kind":"writes"},{"source":"actor:dj-adams","target":"content:devtoberfest-2026-daniel-hutzel-brain","kind":"writes"},{"source":"actor:sygyzmundovych","target":"content:devtoberfest-2026-dat-12-ai-agents-hana-embedded-ml","kind":"writes"},{"source":"actor:smarchesini-avvale","target":"content:devtoberfest-2026-ecc-to-cap-starter-kit","kind":"writes"},{"source":"actor:anfisc","target":"content:devtoberfest-2026-how-to-build-application-jobs-abap-environment","kind":"writes"},{"source":"actor:olgadolinskaja","target":"content:devtoberfest-2026-news-from-custom-code-migration-ecc-to-s4hana","kind":"writes"},{"source":"actor:anfisc","target":"content:devtoberfest-2026-rap-authorizations-business-users","kind":"writes"},{"source":"actor:anfisc","target":"content:devtoberfest-2026-rap-draft-handling","kind":"writes"},{"source":"actor:anfisc","target":"content:devtoberfest-2026-rap-side-effects","kind":"writes"},{"source":"actor:petermuessig","target":"content:devtoberfest-2026-ui5-views-type-safe-tsx","kind":"writes"},{"source":"actor:gregorwolf","target":"content:discovering-fiori-elements-analytical-functions-with-sap-support-messages","kind":"writes"},{"source":"actor:mio-yasutake","target":"content:dynamic-field-control-in-cap-java-object-pages","kind":"writes"},{"source":"actor:ashutosh-ksingh","target":"content:edge-integration-cell-design-deploy-and-manage-apis","kind":"writes"},{"source":"actor:mariusfreitag","target":"content:efficient-data-entry-in-sap-fiori-elements-applications","kind":"writes"},{"source":"actor:prajnaparmita","target":"content:embed-btp-attachment-reuse-ui-in-a-fiori-elements-cap-app","kind":"writes"},{"source":"actor:mio-yasutake","target":"content:enable-app-to-app-navigation-in-bas","kind":"writes"},{"source":"actor:marianfoo","target":"content:evaluating-saps-new-mcp-servers-ui5-cap-fiori-tools","kind":"writes"},{"source":"actor:nicoschoenteich","target":"content:event-task-scheduling-in-cap-nodejs-alpha","kind":"writes"},{"source":"actor:willempardaens","target":"content:exposing-calculation-view-with-dynamic-client-via-odata-api","kind":"writes"},{"source":"actor:mertsap","target":"content:extend-cap-validations-with-the-capval-plugin","kind":"writes"},{"source":"actor:ale-biagi","target":"content:extend-sap-successfactors-on-sap-btp-with-cap-create-the-cap-service","kind":"writes"},{"source":"actor:ale-biagi","target":"content:extend-sap-successfactors-on-sap-btp-with-cap-import-sap-successfactors-odata-se","kind":"writes"},{"source":"actor:kaztakata","target":"content:extend-upload-set-to-fiori-elements-and-utilize-dms","kind":"writes"},{"source":"actor:kaztakata","target":"content:extend-upload-set-with-table-to-fiori-elements-and-utilize-object-store","kind":"writes"},{"source":"actor:navinkrishnan","target":"content:extending-fiori-elements-with-the-flexible-programming-model","kind":"writes"},{"source":"actor:sandraros","target":"content:extract-rev-trac-requests-by-custom-program-and-rev-trac-api","kind":"writes"},{"source":"actor:mike-zaschka","target":"content:federating-replicating-and-caching-remote-data-in-cap-part-1","kind":"writes"},{"source":"actor:mike-zaschka","target":"content:federating-replicating-and-caching-remote-data-in-cap-part-2","kind":"writes"},{"source":"actor:marianfoo","target":"content:finally-an-mcp-server-for-abap","kind":"writes"},{"source":"actor:mio-yasutake","target":"content:fiori-elements-analytical-table-with-cap-does-it-work-with-v2-and-v4","kind":"writes"},{"source":"actor:cfg74","target":"content:first-release-of-the-sap-fiori-mcp-server","kind":"writes"},{"source":"actor:nacho-munoz","target":"content:from-sap-integration-suite-iflow-to-mcp-tools-exposing-odata-apis-to-ai-agents","kind":"writes"},{"source":"actor:marianfoo","target":"content:from-segw-and-legacy-ui5-to-rap-with-arc-1","kind":"writes"},{"source":"actor:mike-zaschka","target":"content:getting-started-with-cap-on-postgresql-nodejs","kind":"writes"},{"source":"actor:leoirudayam","target":"content:getting-started-with-cds-ql-in-nodejs-for-cap-101-on-how-to-query-data","kind":"writes"},{"source":"actor:randombyte","target":"content:give-your-ai-agent-some-tools-introducing-the-ui5-mcp-server","kind":"writes"},{"source":"actor:azhariqbal","target":"content:graph-on-integration-suite-simplifying-multi-api-data-retrieval-with-unified-bus","kind":"writes"},{"source":"actor:volkersaggau","target":"content:hana-sql-notebooks-in-sap-build-business-application-studio-bas-visual-studio-co","kind":"writes"},{"source":"actor:martinpankraz","target":"content:hey-abap-cloud-please-let-me-save-my-data-export-to-azure-storage-please-part-4","kind":"writes"},{"source":"actor:marianfoo","target":"content:how-i-use-ai-for-development-and-why-context-matters","kind":"writes"},{"source":"actor:lemaiwo","target":"content:how-to-add-odata-v2-adapter-proxy-to-your-cap-project","kind":"writes"},{"source":"actor:mio-yasutake","target":"content:how-to-consume-ui5-custom-libraries-in-bas-or-vs-code","kind":"writes"},{"source":"actor:anfisc","target":"content:how-to-rename-an-odata-v4-service","kind":"writes"},{"source":"actor:mio-yasutake","target":"content:how-to-share-tables-across-different-cap-projects","kind":"writes"},{"source":"actor:frank-xie","target":"content:how-to-transfer-a-file-from-the-cap-backend","kind":"writes"},{"source":"actor:arleytm","target":"content:improved-search-performance-in-sap-btp-core-sap-cloud-application-programming-mo","kind":"writes"},{"source":"actor:palak","target":"content:information-map-introduction-series-graph-in-sap-integration-suite","kind":"writes"},{"source":"actor:mio-yasutake","target":"content:integrate-document-information-extraction-into-ui5-application","kind":"writes"},{"source":"actor:sap","target":"content:integration-suite-mcp-http-configuration","kind":"writes"},{"source":"actor:sap","target":"content:integration-suite-mcp-server","kind":"writes"},{"source":"actor:marianfoo","target":"content:introducing-arc-1-a-secure-adt-mcp-server-for-enterprise-sap-development","kind":"writes"},{"source":"actor:mauriciolauffer","target":"content:introducing-eslint-plugin-better-cap-config","kind":"writes"},{"source":"actor:marianfoo","target":"content:introducing-open-rfc-calling-sap-rfc-from-nodejs-without-the-sdk","kind":"writes"},{"source":"actor:birgits","target":"content:introducing-the-mcp-server-for-cap","kind":"writes"},{"source":"actor:dj-adams","target":"content:iso-content-for-common-cap-types","kind":"writes"},{"source":"actor:jcailan","target":"content:keep-the-core-clean-with-rizing-cdsx","kind":"writes"},{"source":"actor:rupamaity","target":"content:major-updates-to-the-attachments-plugin","kind":"writes"},{"source":"actor:sarfaraz-musa-shaikh","target":"content:mcp-server-for-sap-incentive-management","kind":"writes"},{"source":"actor:shiromani-soni1","target":"content:mcp-servers-are-the-new-z-tables","kind":"writes"},{"source":"actor:ashutosh-ksingh","target":"content:mcp-servers-on-sap-integration-suite-build-your-first-mcp-server-from-an-api","kind":"writes"},{"source":"actor:hari-kumar-talari","target":"content:media-handling-in-sap-capm-backend-and-frontend","kind":"writes"},{"source":"actor:martinpankraz","target":"content:microsoft-sentinel-for-sap-goes-agentless","kind":"writes"},{"source":"actor:flovogt","target":"content:migrate-your-code-with-ui5-linter-autofix-has-landed","kind":"writes"},{"source":"actor:alperdedeoglu","target":"content:multitenant-saas-on-btp-using-cap-tried-and-true-advanced","kind":"writes"},{"source":"actor:alperdedeoglu","target":"content:multitenant-saas-on-btp-using-cap-tried-and-true-basic","kind":"writes"},{"source":"actor:rupamaity","target":"content:new-and-improved-change-tracking-plugin","kind":"writes"},{"source":"actor:jung-thomas","target":"content:new-sap-cloud-application-programming-model-sample-for-many-to-many-relationship","kind":"writes"},{"source":"actor:marianfoo","target":"content:new-tutorial-for-ui5-middleware-fe-mockserver","kind":"writes"},{"source":"actor:martinpankraz","target":"content:nice-patch-sap-revisiting-your-sap-btp-security-measures-after-ai-core-vulnerabi","kind":"writes"},{"source":"actor:maxi1555","target":"content:optimize-your-mta-build-with-several-ui-apps","kind":"writes"},{"source":"actor:ajitkp91","target":"content:part-1-enrich-cap-based-services-with-behaviors-using-annotations","kind":"writes"},{"source":"actor:pandayo","target":"content:part-2-enrich-cap-based-services-with-behaviors-using-annotations","kind":"writes"},{"source":"actor:larshp","target":"content:patterns-for-using-llms-in-abap-development","kind":"writes"},{"source":"actor:martinpankraz","target":"content:perform-sap-principal-propagation-with-microsoft-entra-id-for-sap-successfactors","kind":"writes"},{"source":"actor:vobu","target":"content:postgresql-persistence-adapter-for-cap-nodejs","kind":"writes"},{"source":"actor:vneecious","target":"content:presenting-sap-cap-sdm-plugin","kind":"writes"},{"source":"actor:birgits","target":"content:product-updates-for-sap-build-code-june-2025-edition","kind":"writes"},{"source":"actor:leoirudayam","target":"content:random-collection-of-useful-code-fragments-for-cap-fiori-elements-and-sapui5","kind":"writes"},{"source":"actor:sleibach","target":"content:reading-between-the-lines-under-documented-fiori-elements-capabilities-in-sapui5","kind":"writes"},{"source":"actor:danschlachter","target":"content:reusable-components-for-cap-with-cds-plugin","kind":"writes"},{"source":"actor:mike-zaschka","target":"content:run-and-deploy-cap-with-postgresql-on-cloud-foundry","kind":"writes"},{"source":"actor:dragolea","target":"content:sap-cap-best-vscode-extensions-for-typescript-development","kind":"writes"},{"source":"actor:dragolea","target":"content:sap-cap-controller-service-repository-architecture","kind":"writes"},{"source":"actor:ajitkp91","target":"content:sap-cap-function-and-action-with-unstructured-dynamic-type-input-output","kind":"writes"},{"source":"actor:jung-thomas","target":"content:sap-cap-recent-enhancements-the-hana-dev-should-know-about","kind":"writes"},{"source":"actor:davidtill","target":"content:sap-capv7-node-js-highlights-and-experiences","kind":"writes"},{"source":"actor:dj-adams","target":"content:sap-cloud-application-programming-model-start-here","kind":"writes"},{"source":"actor:jung-thomas","target":"content:sap-developer-new-july-3rd-2026","kind":"writes"},{"source":"actor:piyush-003","target":"content:sap-just-became-ai-agent-ready-here-s-a-step-by-step-mcp-walkthrough","kind":"writes"},{"source":"actor:hector-enriquez","target":"content:sap-s-api-policy-on-ai-agents-what-it-prohibits-allows-and-leaves-open","kind":"writes"},{"source":"actor:jung-thomas","target":"content:sap-tech-bytes-adding-service-implementation-to-an-sap-hana-project","kind":"writes"},{"source":"actor:dj-adams","target":"content:sap-tutorial-add-mcp-capabilities-to-a-cap-service","kind":"writes"},{"source":"actor:dj-adams","target":"content:sap-tutorial-cap-examine-mcp-startup","kind":"writes"},{"source":"actor:nicoschoenteich","target":"content:semantic-search-in-cap-nodejs-vector-embeddings","kind":"writes"},{"source":"actor:jung-thomas","target":"content:september-15th-what-s-new-on-developers-sap-com","kind":"writes"},{"source":"actor:dj-adams","target":"content:set-up-vs-code-on-chrome-os-for-local-cap-development","kind":"writes"},{"source":"actor:kaztakata","target":"content:sharing-a-hana-cloud-instance-across-subaccounts-with-hdi-containers","kind":"writes"},{"source":"actor:marianfoo","target":"content:simple-table-maintenance-in-sap-fiori-using-ui5-smart-controls","kind":"writes"},{"source":"actor:marianfoo","target":"content:simplifying-sap-btp-authentication-in-pipelines-with-sap-passport","kind":"writes"},{"source":"actor:uxkjaer","target":"content:speed-up-deployment-for-cap-using-turborepo","kind":"writes"},{"source":"actor:rupamaity","target":"content:streamlined-kyma-deployment-for-cap-applications","kind":"writes"},{"source":"actor:mrbandler","target":"content:taking-cap-to-the-next-level-with-typescript","kind":"writes"},{"source":"actor:danjoa","target":"content:teched-2026-ad162","kind":"writes"},{"source":"actor:danschlachter","target":"content:teched-2026-ad162","kind":"writes"},{"source":"actor:carinetd","target":"content:teched-2026-ad260","kind":"writes"},{"source":"actor:danjoa","target":"content:teched-2026-ad262","kind":"writes"},{"source":"actor:danschlachter","target":"content:teched-2026-ad262","kind":"writes"},{"source":"actor:maxstreifeneder","target":"content:teched-2026-ct1089","kind":"writes"},{"source":"actor:vadimklimov","target":"content:teched-2026-ct1135","kind":"writes"},{"source":"actor:mike-zaschka","target":"content:teched-2026-ct1136","kind":"writes"},{"source":"actor:fath-markus","target":"content:teched-2026-da205","kind":"writes"},{"source":"actor:thomham","target":"content:teched-2026-da206","kind":"writes"},{"source":"actor:fath-markus","target":"content:teched-2026-da262","kind":"writes"},{"source":"actor:fath-markus","target":"content:teched-2026-da263","kind":"writes"},{"source":"actor:thomham","target":"content:teched-2026-da263","kind":"writes"},{"source":"actor:thomham","target":"content:teched-2026-da264","kind":"writes"},{"source":"actor:thomham","target":"content:teched-2026-da807","kind":"writes"},{"source":"actor:manisha-debnath","target":"content:teched-2026-in212","kind":"writes"},{"source":"actor:udo-paltzer","target":"content:teched-2026-in212","kind":"writes"},{"source":"actor:shilpa-vij","target":"content:teched-2026-in804","kind":"writes"},{"source":"actor:udo-paltzer","target":"content:teched-2026-in804","kind":"writes"},{"source":"actor:joaquinrecio","target":"content:teched-2026-jw214","kind":"writes"},{"source":"actor:stefan0816","target":"content:teched-2026-jw262","kind":"writes"},{"source":"actor:frij-aws","target":"content:teched-2026-par1102","kind":"writes"},{"source":"actor:davidkna-sap","target":"content:teched-2026-ra160","kind":"writes"},{"source":"actor:thomham","target":"content:teched-2026-st107","kind":"writes"},{"source":"actor:sschmidt","target":"content:teched-2026-st108","kind":"writes"},{"source":"actor:sapgunnar","target":"content:teched-2026-xp112","kind":"writes"},{"source":"actor:thsandfuchs","target":"content:teched-2026-xp201","kind":"writes"},{"source":"actor:thsandfuchs","target":"content:teched-2026-xp260","kind":"writes"},{"source":"actor:lechnerc77","target":"content:teched-2026-xp265","kind":"writes"},{"source":"actor:dj-adams","target":"content:teched-2026-xp265","kind":"writes"},{"source":"actor:lechnerc77","target":"content:teched-2026-xp266","kind":"writes"},{"source":"actor:thsandfuchs","target":"content:teched-2026-xp266","kind":"writes"},{"source":"actor:mio-yasutake","target":"content:testing-sap-build-process-automation-task-ui-in-bas","kind":"writes"},{"source":"actor:marianfoo","target":"content:the-complete-guide-to-calling-actions-in-ui5-with-custom-code","kind":"writes"},{"source":"actor:danschlachter","target":"content:the-fastest-way-to-a-deployable-cap-app-on-cloud-foundry","kind":"writes"},{"source":"actor:fwilhe","target":"content:the-future-of-continuous-delivery-for-cloud-sdk-and-cap","kind":"writes"},{"source":"actor:mauriciolauffer","target":"content:tips-for-running-cap-nodejs-in-sap-btp","kind":"writes"},{"source":"actor:birgits","target":"content:tree-table-support-in-cap-is-now-generally-available","kind":"writes"},{"source":"actor:claudiacsrosalino","target":"content:turn-sap-apis-into-mcp-tools-for-ai-agents-using-sap-integration-suite-free-tria","kind":"writes"},{"source":"actor:lemaiwo","target":"content:ui-for-the-btp-application-vulnerability-report","kind":"writes"},{"source":"actor:lemaiwo","target":"content:ui5-ai-features-library-is-now-an-npm-package","kind":"writes"},{"source":"actor:marianfoo","target":"content:ui5-has-entered-the-chat-building-interactive-mcp-apps-for-sap","kind":"writes"},{"source":"actor:flovogt","target":"content:ui5-plugins-for-coding-agents-now-supporting-github-copilot","kind":"writes"},{"source":"actor:mariokernich","target":"content:understanding-and-developing-fiori-plugins-with-extension-api-typescript","kind":"writes"},{"source":"actor:marianfoo","target":"content:unlocking-mcp-servers-in-bas-right-now","kind":"writes"},{"source":"actor:lemaiwo","target":"content:upload-attachments-in-a-freestyle-ui5-and-cap-app","kind":"writes"},{"source":"actor:chrisobar","target":"content:uploading-attachments-to-cap-js-attachments-from-an-external-app","kind":"writes"},{"source":"actor:juliana-morais","target":"content:use-free-tier-to-create-a-service-instance-for-sap-document-ai","kind":"writes"},{"source":"actor:juliana-morais","target":"content:use-free-tier-to-subscribe-to-sap-document-ai-basic-ui","kind":"writes"},{"source":"actor:mike-zaschka","target":"content:using-apache-kafka-for-messaging-in-cap-part-1","kind":"writes"},{"source":"actor:mike-zaschka","target":"content:using-apache-kafka-for-messaging-in-cap-part-2","kind":"writes"},{"source":"actor:mio-yasutake","target":"content:using-hana-clouds-vector-embedding-function-in-cap","kind":"writes"},{"source":"actor:arunkrishnamoorthy","target":"content:using-postgresql-database-in-cloud-application-programming-model","kind":"writes"},{"source":"actor:nicoschoenteich","target":"content:using-the-sap-approuter-at-dev-time","kind":"writes"},{"source":"actor:marianfoo","target":"content:using-the-ui5-mockserver-for-client-specific-data-and-testing","kind":"writes"},{"source":"actor:marianfoo","target":"content:visualizing-your-sap-bill-of-materials-using-cap-and-fiori-elements","kind":"writes"},{"source":"actor:jitendrakansal","target":"content:what-s-new-in-mobile-development-kit-client-26-9","kind":"writes"},{"source":"actor:birgits","target":"content:what-s-new-in-sap-cloud-application-programming-model-september-2026","kind":"writes"},{"source":"actor:birgits","target":"content:whats-new-in-cap-january-2026","kind":"writes"},{"source":"actor:birgits","target":"content:whats-new-in-cap-november-2025","kind":"writes"},{"source":"actor:birgits","target":"content:whats-new-in-cap-september-2025","kind":"writes"},{"source":"actor:arunkrishnamoorthy","target":"content:working-with-the-attachment-plugin-cloud-application-programming","kind":"writes"},{"source":"content:cap-mcp-adapter-guide","target":"source:capire","kind":"published_on"},{"source":"content:ac-agentic-ai-and-ai-agents","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-agentic-engineering-for-sap-btp-extensions","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-ai-native-north-star-architecture","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-api-managed-integration","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-application-to-application-integration","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-business-to-business-integration","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-connect-business-processes-with-sap-master-data-integration","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-designing-event-driven-applications","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-devops-with-sap-btp","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-edge-integration-cell-on-hyperscalers","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-establish-a-central-entry-point-with-sap-build-work-zone","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-establish-a-central-inbox-with-sap-task-center","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-explore-your-hyperscaler-data-with-sap-business-data-cloud","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-federated-machine-learning-with-sap-datasphere","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-generative-ai-on-sap-btp","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-hana-ai-toolkit-local-mcp-server","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-integrate-and-extend-with-sap-build-process-automation","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-integrating-and-extending-joule","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-medallion-reference-architecture-for-big-data-processing-in-sap-hana-cloud","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-multi-region-ha-dr-resiliency-patterns","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-multitenant-saas-application-using-cap","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-sap-document-ai","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-sap-hana-cloud-as-an-esri-geodatabase","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-sap-iam-integration-with-sap-cloud-identity-services","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-secure-service-consumption-across-hyperscalers","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-third-party-mcp-server-access-to-sap-solutions-on-btp","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-transforming-enterprise-data-strategy-with-sap-business-data-cloud","target":"source:architecture-center","kind":"published_on"},{"source":"content:ac-transitioning-architectures-from-sap-netweaver","target":"source:architecture-center","kind":"published_on"},{"source":"content:a-25x-faster-mta-yaml-build-for-cap-nodejs","target":"source:sap-community","kind":"published_on"},{"source":"content:a-cap-plugin-for-flexible-number-range-management","target":"source:sap-community","kind":"published_on"},{"source":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-1","target":"source:sap-community","kind":"published_on"},{"source":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-2","target":"source:sap-community","kind":"published_on"},{"source":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-3","target":"source:sap-community","kind":"published_on"},{"source":"content:a-cross-application-fiori-app-to-print-adobe-forms","target":"source:sap-community","kind":"published_on"},{"source":"content:a-fiori-launchpad-sandbox-for-all-your-cap-based-projects-overview","target":"source:sap-community","kind":"published_on"},{"source":"content:a-fiori-launchpad-sandbox-sample-project-setup","target":"source:sap-community","kind":"published_on"},{"source":"content:a-guide-to-cds-metadata-extensions-fiori-app-generation-and-sap-ui5-controller-e","target":"source:sap-community","kind":"published_on"},{"source":"content:a-handy-custom-report-to-scan-sap-cds-views-for-usage-of-search-strings","target":"source:sap-community","kind":"published_on"},{"source":"content:a-major-hana-cli-version-built-with-the-help-of-ai","target":"source:sap-community","kind":"published_on"},{"source":"content:a-method-to-create-an-adobe-form-attachment-for-a-work-item-using-the-class-conc","target":"source:sap-community","kind":"published_on"},{"source":"content:a-modern-workflow-for-sap-cloud-integration-with-cap-and-azure-devops","target":"source:sap-community","kind":"published_on"},{"source":"content:a-natural-choice-sap-aif-can-now-expose-events-to-advanced-event-mesh-to-power-y","target":"source:sap-community","kind":"published_on"},{"source":"content:a-practical-real-time-cti-widget-for-sap-sales-cloud-v2","target":"source:sap-community","kind":"published_on"},{"source":"content:a-simple-example-of-a-sap-rap-application-based-on-legacy-api-without-uuid-keys","target":"source:sap-community","kind":"published_on"},{"source":"content:abap-cloud-logger","target":"source:sap-community","kind":"published_on"},{"source":"content:abap-code-to-wait-for-the-end-of-inbound-bgrfc-type-q-units","target":"source:sap-community","kind":"published_on"},{"source":"content:abap-development-tools-for-visual-studio-code-is-now-available-on-the-vs-code-ma","target":"source:sap-community","kind":"published_on"},{"source":"content:abap-development-tools-for-visual-studio-code-patch-1-0-1-released","target":"source:sap-community","kind":"published_on"},{"source":"content:abap-development-tools-for-visual-studio-code-version-1-1-released","target":"source:sap-community","kind":"published_on"},{"source":"content:abap-development-under-the-clean-core-paradigm-from-bapis-to-bo-and-cds","target":"source:sap-community","kind":"published_on"},{"source":"content:abap-mcp-let-ai-do-real-development-in-your-sap-system","target":"source:sap-community","kind":"published_on"},{"source":"content:abap-s-parallel-processing-frameworks-practical-guide-to-performance-tuning-of-m","target":"source:sap-community","kind":"published_on"},{"source":"content:accelerating-your-analytics-with-delta-table-replication-into-sap-hana-cloud","target":"source:sap-community","kind":"published_on"},{"source":"content:adaptation-project-sap-fiori","target":"source:sap-community","kind":"published_on"},{"source":"content:adapting-sap-joule-for-purchase-order-creation-from-an-existing-purchase-requisi","target":"source:sap-community","kind":"published_on"},{"source":"content:add-useful-extensions-to-dev-spaces-in-bas","target":"source:sap-community","kind":"published_on"},{"source":"content:adding-a-custom-action-button-with-an-icon-to-a-fiori-elements-list-report","target":"source:sap-community","kind":"published_on"},{"source":"content:adding-a-shell-plugin-to-a-fiori-cap-application","target":"source:sap-community","kind":"published_on"},{"source":"content:adding-a-swagger-ui-to-your-cap-nodejs-service","target":"source:sap-community","kind":"published_on"},{"source":"content:adding-custom-metrics-to-a-cap-application-using-cap-js-telementry-plugin-and-sa","target":"source:sap-community","kind":"published_on"},{"source":"content:adding-immutable-blockchain-proofs-to-sap-with-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:agentic-ai-on-btp-a-multi-agent-app-with-pydantic-ai","target":"source:sap-community","kind":"published_on"},{"source":"content:agentic-ai-on-btp-a-single-agent-with-langgraph","target":"source:sap-community","kind":"published_on"},{"source":"content:ai-powered-user-experience-with-sap-cap-ai","target":"source:sap-community","kind":"published_on"},{"source":"content:an-innovative-language-exchange-app-with-build-apps-cap-kyma-and-openai","target":"source:sap-community","kind":"published_on"},{"source":"content:an-introduction-to-cds-graphical-modeler-for-bas","target":"source:sap-community","kind":"published_on"},{"source":"content:api-composition-seamless-enterprise-data-access-for-developers-and-ai-agents","target":"source:sap-community","kind":"published_on"},{"source":"content:architecting-multiple-s4hana-backends-with-principal-propagation-part-1","target":"source:sap-community","kind":"published_on"},{"source":"content:architecting-multiple-s4hana-backends-with-principal-propagation-part-2","target":"source:sap-community","kind":"published_on"},{"source":"content:architecting-multiple-s4hana-backends-with-principal-propagation-part-3","target":"source:sap-community","kind":"published_on"},{"source":"content:architecting-saas-resilience-against-s4hana-variance","target":"source:sap-community","kind":"published_on"},{"source":"content:attachment-upload-and-download-with-uploadsetwithtable","target":"source:sap-community","kind":"published_on"},{"source":"content:authorization-management-service-in-sap-cloud-identity-service","target":"source:sap-community","kind":"published_on"},{"source":"content:authorization-management-with-opensearch-s-document-level-security-sap-cloud-log","target":"source:sap-community","kind":"published_on"},{"source":"content:automate-btp-custom-domain-certificates-using-lets-encrypt","target":"source:sap-community","kind":"published_on"},{"source":"content:automate-recurring-data-updates-in-sap-hana-cloud","target":"source:sap-community","kind":"published_on"},{"source":"content:automate-your-job-postings-using-generative-ai-and-sbpa","target":"source:sap-community","kind":"published_on"},{"source":"content:automating-iflow-documentation-with-sap-integration-suite-and-gemini-ai","target":"source:sap-community","kind":"published_on"},{"source":"content:automating-user-offboarding-in-sap-btp-across-multiple-subaccounts-with-powershe","target":"source:sap-community","kind":"published_on"},{"source":"content:autonomous-diagnostics-on-kyma-unplugged-goose-litellm-kro-sap-ai-core-in-produc","target":"source:sap-community","kind":"published_on"},{"source":"content:avoid-design-time-cap-server-restarts-with-local-data-files","target":"source:sap-community","kind":"published_on"},{"source":"content:avoiding-data-loss-when-loading-initial-data-with-csv-files","target":"source:sap-community","kind":"published_on"},{"source":"content:aws-mail-configuration-for-sap-abap-systems","target":"source:sap-community","kind":"published_on"},{"source":"content:banking-sentinel-a-multi-agent-credit-risk-copilot","target":"source:sap-community","kind":"published_on"},{"source":"content:basic-code-s-of-abap","target":"source:sap-community","kind":"published_on"},{"source":"content:batch-file-pickup-and-dynamic-zip-creation-in-sap-integration-suite","target":"source:sap-community","kind":"published_on"},{"source":"content:beginners-guide-to-advanced-event-mesh","target":"source:sap-community","kind":"published_on"},{"source":"content:behavior-illegal-statement-dump-technical-workarounds","target":"source:sap-community","kind":"published_on"},{"source":"content:beyond-basic-ai-error-handling-in-sap-cpi-a-rules-first-architecture-with-hana-c","target":"source:sap-community","kind":"published_on"},{"source":"content:beyond-read-text-decoding-sapscript-long-texts-stxl-with-sqlscript-in-cds-amdp","target":"source:sap-community","kind":"published_on"},{"source":"content:beyond-rest-exploring-graphql-api-integration-in-sap-btp-integration-suite","target":"source:sap-community","kind":"published_on"},{"source":"content:bo-interface-apis-an-alternative-to-bapis-and-traditional-fms","target":"source:sap-community","kind":"published_on"},{"source":"content:boosting-performance-in-cap-with-cds-caching","target":"source:sap-community","kind":"published_on"},{"source":"content:btp-audit-log-mcp-server-security-monitoring-with-ai-assistants","target":"source:sap-community","kind":"published_on"},{"source":"content:btp-cap-custom-plugin-to-separate-generic-change-log-capture-logic","target":"source:sap-community","kind":"published_on"},{"source":"content:btp-cloud-foundry-mcp-server-managing-cf-environments-with-ai","target":"source:sap-community","kind":"published_on"},{"source":"content:btp-launchpad-sapui5-cpi-iflow","target":"source:sap-community","kind":"published_on"},{"source":"content:btp-sapcap-quirky-nuggets-n01-n02","target":"source:sap-community","kind":"published_on"},{"source":"content:btp-sapcap-quirky-nuggets-n03-n04","target":"source:sap-community","kind":"published_on"},{"source":"content:btp-sapcap-quirky-nuggets-n05-n06","target":"source:sap-community","kind":"published_on"},{"source":"content:build-a-btp-cap-app-with-fiori-integration-part-2","target":"source:sap-community","kind":"published_on"},{"source":"content:build-an-overview-page-with-hana-cloud-and-cap-service-annotations","target":"source:sap-community","kind":"published_on"},{"source":"content:build-and-deploy-a-cap-nodejs-api-with-fiori-elements-and-a-managed-approuter","target":"source:sap-community","kind":"published_on"},{"source":"content:build-configure-and-deploy-cap-projects-to-the-cloud","target":"source:sap-community","kind":"published_on"},{"source":"content:build-solutions-for-sap-cloud-erp-with-confidence","target":"source:sap-community","kind":"published_on"},{"source":"content:build-your-ai-agent-prototype-for-free-using-sap-cap-langchain-and-ollama-cloud","target":"source:sap-community","kind":"published_on"},{"source":"content:building-a-cap-app-with-fiori-part-1-environment-and-hana-cloud","target":"source:sap-community","kind":"published_on"},{"source":"content:building-a-cap-service-with-cds-mcp-and-cline","target":"source:sap-community","kind":"published_on"},{"source":"content:building-a-genai-inventory-assistant-with-cap-rag-and-a-vector-database","target":"source:sap-community","kind":"published_on"},{"source":"content:building-a-pro-code-agent-on-sap-btp-part-2-the-agent-langgraph-genai-hub","target":"source:sap-community","kind":"published_on"},{"source":"content:building-a-pro-code-agent-on-sap-btp-part-3-joule-integration-via-a2a","target":"source:sap-community","kind":"published_on"},{"source":"content:building-a-real-time-currency-conversion-iflow-using-sap-cloud-integration-cpi","target":"source:sap-community","kind":"published_on"},{"source":"content:building-a-saas-multitenant-cap-application-without-a-database","target":"source:sap-community","kind":"published_on"},{"source":"content:building-an-analytical-list-page-with-cap-odata-v4","target":"source:sap-community","kind":"published_on"},{"source":"content:building-an-enterprise-application-with-fiori-elements-and-cap-part-1","target":"source:sap-community","kind":"published_on"},{"source":"content:building-an-enterprise-application-with-fiori-elements-and-cap-part-2","target":"source:sap-community","kind":"published_on"},{"source":"content:building-an-enterprise-application-with-fiori-elements-and-cap-part-3","target":"source:sap-community","kind":"published_on"},{"source":"content:building-an-llm-agent-in-cap-java-with-spring-ai","target":"source:sap-community","kind":"published_on"},{"source":"content:building-an-llm-agent-using-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:building-an-s4hana-cloud-extension-with-cap-cloud-sdk-and-fiori-elements-part-1","target":"source:sap-community","kind":"published_on"},{"source":"content:building-an-s4hana-cloud-extension-with-cap-cloud-sdk-and-fiori-elements-part-2","target":"source:sap-community","kind":"published_on"},{"source":"content:building-an-sap-btp-agent-architecture-from-scratch-python-cap-hana","target":"source:sap-community","kind":"published_on"},{"source":"content:building-and-consuming-an-mcp-server-in-sap-integration-suite-connecting-it-to-c","target":"source:sap-community","kind":"published_on"},{"source":"content:building-custom-authentication-in-sap-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:building-custom-joule-skills-via-rfc-guide-for-sap-s-4hana-and-ecc-integration","target":"source:sap-community","kind":"published_on"},{"source":"content:building-durable-ai-agents-cds-langgraph-persistence","target":"source:sap-community","kind":"published_on"},{"source":"content:building-mcp-servers-with-sap-integration-suite","target":"source:sap-community","kind":"published_on"},{"source":"content:building-saas-products-on-sap-btp","target":"source:sap-community","kind":"published_on"},{"source":"content:building-secure-sapui5-applications-best-practices-for-developers","target":"source:sap-community","kind":"published_on"},{"source":"content:by-passing-function-modules-in-aunits","target":"source:sap-community","kind":"published_on"},{"source":"content:calculating-ibp-technical-week-key-figure-date-in-s-4hana-using-cds-view","target":"source:sap-community","kind":"published_on"},{"source":"content:call-a-remote-odata-api-from-a-local-cap-java-project","target":"source:sap-community","kind":"published_on"},{"source":"content:call-bapi-in-custom-entity-through-rap","target":"source:sap-community","kind":"published_on"},{"source":"content:calling-bound-and-unbound-cap-actions-from-a-fiori-elements-app","target":"source:sap-community","kind":"published_on"},{"source":"content:calling-claude-from-abap-how-i-wired-sap-ai-core-into-a-real-business-scenario","target":"source:sap-community","kind":"published_on"},{"source":"content:calling-the-sales-order-a2x-odata-v2-api-from-btp-using-a-service-consumption-mo","target":"source:sap-community","kind":"published_on"},{"source":"content:calling-the-sales-order-a2x-odata-v4-api-from-btp-using-a-service-consumption-mo","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-application-with-successfactors-and-hana-cloud","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-backend-development-with-productivity-tools-hana-cloud-edition","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-cds-and-fiori-practical-commands","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-cds-cdl-csn-and-jq-finding-associations","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-consume-external-service-part-1","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-consume-external-service-part-3","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-cors-and-custom-headers","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-deep-insert-4-consume-remote-service","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-deep-insert-5-consume-remote-service-with-cloud-sdk","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-developers-call-to-action-for-sap-note-3747787","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-dynamically-hide-ui-facets-in-fiori-elements","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-for-nodejs","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-foundry-engineering-sap-cap-applications-from-business-intent-with-guardrail","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-full-stack-testing-with-bdd-flavour","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-graphql-as-new-protocol","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-heaven-not-yet-but-you-can-see-it-from-here","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-initializr-generate-sap-cap-projects-in-seconds","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-is-important-because-its-not-important","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-java-implementation-for-authorization-management-service","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-java-nodejs-mixed-mono-multitenant-saas-with-shared-database","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-java-with-amazon-aurora-postgresql","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-java-with-azure-cosmos-db-for-postgresql","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-just-got-faster-whats-new-in-cds-caching-1-0","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-lessons-learned-run-a-cap-app-using-sqlite-on-cloud-foundry","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-lessons-learned-sqlite-is-single-threaded-hana-is-not","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-multitenancy-with-work-zone","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-now-supports-reactjs-with-working-demo-ui5-web-components","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-on-kyma-deploy-your-cap-apps-to-btp-kyma-runtime","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-operator-on-kyma-part-2-runtime-architecture-and-cost","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-postgresql-local-debugging-using-docker-part-2","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-rap-or-both-stop-hiding-behind-it-depends","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-service-to-fetch-create-sales-order-in-s4-hana-public-cloud","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-specifying-the-queues-to-be-consumed-from-sap-event-mesh","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-techbytes-input-validation","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-typescript-fiori-typescript-and-live-reload-initial-setup","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-unit-testing-using-mocha-and-chai","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-websockets","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-with-fiori-elements-actions-on-list-report-and-object-page-part-1","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-with-fiori-elements-actions-on-list-report-and-object-page-part-2","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-with-fiori-elements-configure-multiple-views-on-list-report-tables","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-with-fiori-elements-side-effects-custom-actions-dynamic-expressions","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-with-local-app-previews","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-with-mongodb","target":"source:sap-community","kind":"published_on"},{"source":"content:cap-with-postgresql-db-alternate-to-hana-cloud-part-1","target":"source:sap-community","kind":"published_on"},{"source":"content:capm-basics-part-2","target":"source:sap-community","kind":"published_on"},{"source":"content:capm-basics-part-4","target":"source:sap-community","kind":"published_on"},{"source":"content:capturing-background-job-errors-in-sap-using-the-application-log-slg0-slg1","target":"source:sap-community","kind":"published_on"},{"source":"content:capval-a-project-is-born","target":"source:sap-community","kind":"published_on"},{"source":"content:case-insensitive-filters-in-fiori-elements-with-a-cap-backend","target":"source:sap-community","kind":"published_on"},{"source":"content:cds-deploy-to-sqlite-in-memory-database","target":"source:sap-community","kind":"published_on"},{"source":"content:cds-launchpad-plugin-supercharged","target":"source:sap-community","kind":"published_on"},{"source":"content:cds-toon-ai-protocol-adapter-cutting-token-costs","target":"source:sap-community","kind":"published_on"},{"source":"content:cds-ts-dispatcher-simplifying-sap-cap-typescript-development","target":"source:sap-community","kind":"published_on"},{"source":"content:cds-ts-repository-simplify-cap-entity-persistence","target":"source:sap-community","kind":"published_on"},{"source":"content:centralized-error-handling-in-sap-cloud-integration","target":"source:sap-community","kind":"published_on"},{"source":"content:cf-create-app-end-to-end-apps-deployed-to-cloud-foundry","target":"source:sap-community","kind":"published_on"},{"source":"content:ci-cd-for-hana-cloud-with-cds-add-pipeline","target":"source:sap-community","kind":"published_on"},{"source":"content:claude-code-via-mcp-poor-man-s-joule-or-a-practical-tool","target":"source:sap-community","kind":"published_on"},{"source":"content:claude-ported-abap-functions-to-new-api","target":"source:sap-community","kind":"published_on"},{"source":"content:clean-core-by-design-event-enablement-cockpit-as-a-core-integration-enabler-in-s","target":"source:sap-community","kind":"published_on"},{"source":"content:clean-core-index","target":"source:sap-community","kind":"published_on"},{"source":"content:clean-core-maturity-and-the-new-extensibility-levels","target":"source:sap-community","kind":"published_on"},{"source":"content:clean-core","target":"source:sap-community","kind":"published_on"},{"source":"content:cloud-integration-activating-enterprise-messaging-capabilities-for-jms-queue-cf","target":"source:sap-community","kind":"published_on"},{"source":"content:cloud-integration-with-document-ai","target":"source:sap-community","kind":"published_on"},{"source":"content:cloud-native-with-abap-cloud-the-transactional-outbox-pattern","target":"source:sap-community","kind":"published_on"},{"source":"content:combine-power-automate-microsoft-teams-approvals-and-an-sap-cloud-application-pr","target":"source:sap-community","kind":"published_on"},{"source":"content:communicate-from-a-java-application-to-abap-via-websocket-rfc-using-jco-migratio","target":"source:sap-community","kind":"published_on"},{"source":"content:completing-the-b2b-migration-into-sap-integration-suite-vision","target":"source:sap-community","kind":"published_on"},{"source":"content:computed-field-example-in-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:configure-journal-entry-posting-approval-from-store-template-in-build-process-au","target":"source:sap-community","kind":"published_on"},{"source":"content:configuring-sap-cloud-integration-for-an-ibp-to-s-4hana-on-prem-private-cloud-in","target":"source:sap-community","kind":"published_on"},{"source":"content:connect-a-cap-application-to-hana-cloud-in-another-account-without-hdi","target":"source:sap-community","kind":"published_on"},{"source":"content:connect-sap-cap-nodejs-to-private-postgresql-using-cloud-connector","target":"source:sap-community","kind":"published_on"},{"source":"content:connect-to-a-public-cloud-api-in-nodejs-via-authorisation-code","target":"source:sap-community","kind":"published_on"},{"source":"content:connecting-a-custom-mcp-server-to-joule-work-desktop-a-seamless-and-secure-authe","target":"source:sap-community","kind":"published_on"},{"source":"content:connecting-sap-integration-suite-with-sap-document-ai-and-sap-business-ai","target":"source:sap-community","kind":"published_on"},{"source":"content:connecting-sap-integration-suite-with-slack-a-hands-on-guide-with-open-connector","target":"source:sap-community","kind":"published_on"},{"source":"content:connecting-sap-s-4hana-on-prem-directly-to-advanced-event-mesh-using-cloud-conne","target":"source:sap-community","kind":"published_on"},{"source":"content:connecting-two-sap-cap-projects-without-duplicating-your-data","target":"source:sap-community","kind":"published_on"},{"source":"content:connectivity-between-a-local-cap-runtime-and-on-premise-systems","target":"source:sap-community","kind":"published_on"},{"source":"content:consume-abap-rfc-function-modules-in-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:consume-sap-document-management-using-cap-js-sdm","target":"source:sap-community","kind":"published_on"},{"source":"content:consuming-data-from-sap-datasphere-in-cap-applications","target":"source:sap-community","kind":"published_on"},{"source":"content:consuming-sap-build-apis-with-cloud-sdk-in-a-cap-application","target":"source:sap-community","kind":"published_on"},{"source":"content:control-visibility-of-crud-and-custom-actions-based-on-authorization","target":"source:sap-community","kind":"published_on"},{"source":"content:create-a-business-service-using-cds-nodejs-sqlite-and-odata","target":"source:sap-community","kind":"published_on"},{"source":"content:create-a-cap-application-with-hana-cloud-and-deploy-to-cloud-foundry","target":"source:sap-community","kind":"published_on"},{"source":"content:create-a-fiori-elements-ui-for-cap-nodejs-applications-in-bas","target":"source:sap-community","kind":"published_on"},{"source":"content:create-a-fiori-list-report-with-object-page-using-a-capm-nodejs-service","target":"source:sap-community","kind":"published_on"},{"source":"content:create-an-api-to-run-a-hana-cloud-stored-procedure-in-cloud-foundry","target":"source:sap-community","kind":"published_on"},{"source":"content:create-cds-views-and-expose-them-through-odata-in-capm","target":"source:sap-community","kind":"published_on"},{"source":"content:create-your-first-cap-plugin","target":"source:sap-community","kind":"published_on"},{"source":"content:creating-a-custom-f4-help-for-currency-fields-in-abap-using-f4if-int-table-value","target":"source:sap-community","kind":"published_on"},{"source":"content:creating-a-hybrid-cap-nodejs-profile-with-postgresql-from-bas","target":"source:sap-community","kind":"published_on"},{"source":"content:creating-a-meal-generator-application-with-sap-build-and-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:creating-an-sap-sd-billing-document-using-a-bapi-in-sap-build-and-accessing-it-t","target":"source:sap-community","kind":"published_on"},{"source":"content:creating-and-deploying-a-cap-application-with-hana-part-1","target":"source:sap-community","kind":"published_on"},{"source":"content:creating-and-deploying-a-cap-application-with-postgresql-hyperscaler","target":"source:sap-community","kind":"published_on"},{"source":"content:creating-material-master-data-in-sap-s-4hana-using-rap-and-eml","target":"source:sap-community","kind":"published_on"},{"source":"content:creating-new-services-using-the-cds-graphical-modeler","target":"source:sap-community","kind":"published_on"},{"source":"content:creating-structured-types-enums-and-named-aspects-in-the-graphical-modeler","target":"source:sap-community","kind":"published_on"},{"source":"content:custom-form-with-custom-data-source-in-sap-public-cloud-grow-with-sap","target":"source:sap-community","kind":"published_on"},{"source":"content:custom-functions-in-odata-v4-in-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:custom-handlers-for-draft-enabled-entities-in-sap-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:custom-joule-agent-for-sap-ariba-slp-building-an-ai-agent-for-supplier-registrat","target":"source:sap-community","kind":"published_on"},{"source":"content:debug-a-cap-app-with-ui5-typescript-ui-component-with-vs-code","target":"source:sap-community","kind":"published_on"},{"source":"content:debugging-in-abap-development-tool-part-1","target":"source:sap-community","kind":"published_on"},{"source":"content:decision-logic-modernization-in-sap-integrations-using-sap-rpt-1-for-intelligent","target":"source:sap-community","kind":"published_on"},{"source":"content:declarative-programming-in-cap-less-code-more-value","target":"source:sap-community","kind":"published_on"},{"source":"content:deep-insert-in-cap-using-composition-and-fiori-elements","target":"source:sap-community","kind":"published_on"},{"source":"content:dependency-injection-and-di-containers-on-cap-nodejs","target":"source:sap-community","kind":"published_on"},{"source":"content:deploying-a-cap-app-with-fiori-app-standalone-html5-repo-host","target":"source:sap-community","kind":"published_on"},{"source":"content:deploying-a-cap-application-to-kyma-and-connecting-an-ios-app","target":"source:sap-community","kind":"published_on"},{"source":"content:deploying-cap-services-with-the-in-memory-sqlite-database","target":"source:sap-community","kind":"published_on"},{"source":"content:deploying-the-ui-of-an-mta-app-with-application-frontend-service","target":"source:sap-community","kind":"published_on"},{"source":"content:deploying-your-first-cap-project-in-sap-cloud","target":"source:sap-community","kind":"published_on"},{"source":"content:designing-multi-tenant-solutions-on-btp-architecture-and-prototype","target":"source:sap-community","kind":"published_on"},{"source":"content:designing-scalable-integration-flows-in-sap-btp-using-pallets-and-adapters","target":"source:sap-community","kind":"published_on"},{"source":"content:develop-a-full-stack-business-application-with-sap-cloud-application-programming","target":"source:sap-community","kind":"published_on"},{"source":"content:develop-and-deploy-a-html-angular-vue-react-app-on-sap-btp-access-s-4-op-part-ii","target":"source:sap-community","kind":"published_on"},{"source":"content:develop-cap-project-with-lazyvim-in-docker","target":"source:sap-community","kind":"published_on"},{"source":"content:develop-sap-cap-apps-inside-a-vs-code-docker-container","target":"source:sap-community","kind":"published_on"},{"source":"content:developing-a-fiori-elements-app-with-cap-and-fiori-tools","target":"source:sap-community","kind":"published_on"},{"source":"content:developing-a-fiori-elements-application-using-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:developing-a-fiori-elements-list-report-and-object-page-on-a-cap-odata-service","target":"source:sap-community","kind":"published_on"},{"source":"content:developing-a-shell-plugin-for-work-zone-custom-notifications","target":"source:sap-community","kind":"published_on"},{"source":"content:developing-business-services-with-cloud-application-programming-cap-model-in-sap","target":"source:sap-community","kind":"published_on"},{"source":"content:developing-cap-applications-in-sap-business-application-studio","target":"source:sap-community","kind":"published_on"},{"source":"content:developing-mobile-apps-with-sap-build","target":"source:sap-community","kind":"published_on"},{"source":"content:diagrams-related-to-odata-entities-cap-ecc","target":"source:sap-community","kind":"published_on"},{"source":"content:discovering-fiori-elements-analytical-functions-with-sap-support-messages","target":"source:sap-community","kind":"published_on"},{"source":"content:display-of-hierarchical-data-in-sap-fiori-elements-using-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:display-pdf-from-btp-forms-service-in-a-cap-sapui5-application","target":"source:sap-community","kind":"published_on"},{"source":"content:distributed-resiliency-of-cap-applications-with-hana-multi-zone-replication","target":"source:sap-community","kind":"published_on"},{"source":"content:diy-jdbc-sender-adapter-for-sap-integration-suite","target":"source:sap-community","kind":"published_on"},{"source":"content:don-t-let-it-crash-is-this-the-new-cap-guideline","target":"source:sap-community","kind":"published_on"},{"source":"content:dynamic-authorisation-with-user-attributes-in-sap-cap-and-ams","target":"source:sap-community","kind":"published_on"},{"source":"content:dynamic-criticality-in-cap-using-fiori-elements-and-nodejs","target":"source:sap-community","kind":"published_on"},{"source":"content:dynamic-odata-from-any-api-through-sap-btp-kyma","target":"source:sap-community","kind":"published_on"},{"source":"content:e2e-sap-iot-to-sap-analytics-cloud","target":"source:sap-community","kind":"published_on"},{"source":"content:edge-integration-cell-design-deploy-and-manage-apis","target":"source:sap-community","kind":"published_on"},{"source":"content:effective-axios-error-logging-for-robust-sap-integrations","target":"source:sap-community","kind":"published_on"},{"source":"content:effective-from-june-30th-2026-xsuaa-deprecation-of-get-method-for-oauth-token-re","target":"source:sap-community","kind":"published_on"},{"source":"content:efficient-data-entry-in-sap-fiori-elements-applications","target":"source:sap-community","kind":"published_on"},{"source":"content:elevating-data-privacy-in-cap-genai-applications-with-cap-llm-plugin","target":"source:sap-community","kind":"published_on"},{"source":"content:embed-btp-attachment-reuse-ui-in-a-fiori-elements-cap-app","target":"source:sap-community","kind":"published_on"},{"source":"content:empowering-your-data-analytics-with-gpt-3-and-sap-cap-integration","target":"source:sap-community","kind":"published_on"},{"source":"content:enable-app-to-app-navigation-in-bas","target":"source:sap-community","kind":"published_on"},{"source":"content:enabling-authorization-policies-in-ias-with-ams-and-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:end-to-end-currency-conversion-integration-using-sap-integration-suite-sap-cpi","target":"source:sap-community","kind":"published_on"},{"source":"content:end-to-end-error-handling-with-general-splitter-and-local-flows","target":"source:sap-community","kind":"published_on"},{"source":"content:end-to-end-mail-adapter-setup-in-sap-cpi-using-gmail-step-by-step-guide","target":"source:sap-community","kind":"published_on"},{"source":"content:enhancing-business-processes-with-sap-btp-ai-in-sap-integration-suite","target":"source:sap-community","kind":"published_on"},{"source":"content:enhancing-customer-master-with-a-custom-tab-using-sap-taxi-framework-badi-se80","target":"source:sap-community","kind":"published_on"},{"source":"content:enhancing-sap-business-events-with-custom-payload-fields-using-rap","target":"source:sap-community","kind":"published_on"},{"source":"content:enhancing-standard-bapis-when-and-how-to-do-it","target":"source:sap-community","kind":"published_on"},{"source":"content:enhancing-standard-cds-views-in-fiori-my-inbox","target":"source:sap-community","kind":"published_on"},{"source":"content:enhancing-unit-testing-in-cap-java-with-github-copilot","target":"source:sap-community","kind":"published_on"},{"source":"content:evaluating-saps-new-mcp-servers-ui5-cap-fiori-tools","target":"source:sap-community","kind":"published_on"},{"source":"content:event-driven-architecture-with-event-mesh-part-1","target":"source:sap-community","kind":"published_on"},{"source":"content:event-driven-architecture-with-event-mesh-part-2","target":"source:sap-community","kind":"published_on"},{"source":"content:event-driven-cap-on-kyma-with-agentic-ai-and-ui-auto-refresh","target":"source:sap-community","kind":"published_on"},{"source":"content:event-driven-extensions-for-sap-successfactors-on-sap-btp-connecting-the-dots","target":"source:sap-community","kind":"published_on"},{"source":"content:event-driven-multi-tenant-architecture-with-cap-and-sap-event-mesh","target":"source:sap-community","kind":"published_on"},{"source":"content:event-enabling-sap-data-replication-framework-with-advanced-event-mesh-aifaem","target":"source:sap-community","kind":"published_on"},{"source":"content:event-mesh-amqp-the-retry-trap-nobody-warns-you-about","target":"source:sap-community","kind":"published_on"},{"source":"content:event-task-scheduling-in-cap-nodejs-alpha","target":"source:sap-community","kind":"published_on"},{"source":"content:execute-oauth2-client-credentials-protected-rest-request-from-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:explaining-sap-joule-for-hr-business-users-functional-consultants","target":"source:sap-community","kind":"published_on"},{"source":"content:exploring-sap-salesforce-adapter-retry-mechanism-with-jms-queue","target":"source:sap-community","kind":"published_on"},{"source":"content:exploring-the-typescript-ecosystem-with-cds-typer-part-1","target":"source:sap-community","kind":"published_on"},{"source":"content:exploring-the-typescript-ecosystem-with-cds-typer-part-2","target":"source:sap-community","kind":"published_on"},{"source":"content:expose-rfcs-as-mcp-tools-in-integration-suite","target":"source:sap-community","kind":"published_on"},{"source":"content:expose-s-4hana-cloud-odata-api-as-an-mcp-server-via-cap-node-js-2","target":"source:sap-community","kind":"published_on"},{"source":"content:expose-s-4hana-cloud-odata-api-as-an-mcp-server-via-cap-node-js","target":"source:sap-community","kind":"published_on"},{"source":"content:exposing-calculation-view-with-dynamic-client-via-odata-api","target":"source:sap-community","kind":"published_on"},{"source":"content:exposing-sap-s4-onprem-data-to-external-system-odata-service-btp-destination-con","target":"source:sap-community","kind":"published_on"},{"source":"content:extend-cap-validations-with-the-capval-plugin","target":"source:sap-community","kind":"published_on"},{"source":"content:extend-sap-successfactors-on-sap-btp-with-cap-create-the-cap-service","target":"source:sap-community","kind":"published_on"},{"source":"content:extend-sap-successfactors-on-sap-btp-with-cap-import-sap-successfactors-odata-se","target":"source:sap-community","kind":"published_on"},{"source":"content:extend-successfactors-on-btp-with-cap-deploy-to-hana-cloud","target":"source:sap-community","kind":"published_on"},{"source":"content:extend-successfactors-on-btp-with-cap-develop-the-fiori-elements-application","target":"source:sap-community","kind":"published_on"},{"source":"content:extend-upload-set-to-fiori-elements-and-utilize-dms","target":"source:sap-community","kind":"published_on"},{"source":"content:extend-upload-set-with-table-to-fiori-elements-and-utilize-object-store","target":"source:sap-community","kind":"published_on"},{"source":"content:extending-fiori-elements-with-the-flexible-programming-model","target":"source:sap-community","kind":"published_on"},{"source":"content:extending-sap-sales-and-service-cloud-v2-using-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:extending-standard-s-4-hana-odata-api-s","target":"source:sap-community","kind":"published_on"},{"source":"content:extensions-for-sap-build-process-automation-actions-from-cap-nodejs","target":"source:sap-community","kind":"published_on"},{"source":"content:extract-rev-trac-requests-by-custom-program-and-rev-trac-api","target":"source:sap-community","kind":"published_on"},{"source":"content:federating-replicating-and-caching-remote-data-in-cap-part-1","target":"source:sap-community","kind":"published_on"},{"source":"content:federating-replicating-and-caching-remote-data-in-cap-part-2","target":"source:sap-community","kind":"published_on"},{"source":"content:fiori-elements-analytical-table-with-cap-does-it-work-with-v2-and-v4","target":"source:sap-community","kind":"published_on"},{"source":"content:fiori-elements-standard-app-extension-using-virtual-elements","target":"source:sap-community","kind":"published_on"},{"source":"content:first-java-cap-application","target":"source:sap-community","kind":"published_on"},{"source":"content:first-release-of-the-sap-fiori-mcp-server","target":"source:sap-community","kind":"published_on"},{"source":"content:fixing-the-npm-notarget-error-for-sap-hdi-deploy","target":"source:sap-community","kind":"published_on"},{"source":"content:from-application-logging-to-cloud-logging-service-innovation-guide","target":"source:sap-community","kind":"published_on"},{"source":"content:from-application-logging-to-cloud-logging-service-migration-guide","target":"source:sap-community","kind":"published_on"},{"source":"content:from-dashboard-to-conversational-ai-in-minutes-adding-mcp-to-an-existing-cap-app","target":"source:sap-community","kind":"published_on"},{"source":"content:from-r3-abap-to-cap-and-fiori-elements-deployment","target":"source:sap-community","kind":"published_on"},{"source":"content:from-r3-abap-to-cap-and-fiori-elements-on-sap-cloud","target":"source:sap-community","kind":"published_on"},{"source":"content:from-rest-to-datasphere-a-cap-based-integration-approach","target":"source:sap-community","kind":"published_on"},{"source":"content:from-sap-integration-suite-iflow-to-mcp-tools-exposing-odata-apis-to-ai-agents","target":"source:sap-community","kind":"published_on"},{"source":"content:from-sap-sales-and-service-cloud-v2-apis-to-ai-building-an-mcp-server-with-cap-n","target":"source:sap-community","kind":"published_on"},{"source":"content:from-segw-to-odata-publish-expose-your-cds-view-as-odata-in-s-4hana","target":"source:sap-community","kind":"published_on"},{"source":"content:from-seo-to-meo-designing-joule-ready-api-layers-for-sap-commerce-cloud","target":"source:sap-community","kind":"published_on"},{"source":"content:from-strategy-doc-to-runtime-rule-embedding-sap-ai-standards","target":"source:sap-community","kind":"published_on"},{"source":"content:from-xsuaa-to-ams-policy-based-authorization-for-s4hana-extensions","target":"source:sap-community","kind":"published_on"},{"source":"content:from-zero-to-fiori-building-sap-apps-with-ai-agents","target":"source:sap-community","kind":"published_on"},{"source":"content:full-stack-typescript-app-for-cloud-foundry-sample-repository","target":"source:sap-community","kind":"published_on"},{"source":"content:fullstack-cap-with-hana-cloud-part-1-local-with-sqlite","target":"source:sap-community","kind":"published_on"},{"source":"content:fullstack-cap-with-hana-cloud-part-2-cds-annotations","target":"source:sap-community","kind":"published_on"},{"source":"content:fullstack-cap-with-hana-cloud-part-3-setting-up-hana-cloud","target":"source:sap-community","kind":"published_on"},{"source":"content:fullstack-cap-with-hana-cloud-part-4-connect-and-deploy","target":"source:sap-community","kind":"published_on"},{"source":"content:fullstack-cap-with-hana-cloud-part-5-btp-destination","target":"source:sap-community","kind":"published_on"},{"source":"content:fullstack-cap-with-hana-cloud-part-6-fiori-to-html5-repository","target":"source:sap-community","kind":"published_on"},{"source":"content:genai-mail-insights-generative-ai-hub-for-customer-support","target":"source:sap-community","kind":"published_on"},{"source":"content:generate-and-download-pdfs-on-the-fly-in-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:generating-adobe-form-using-rap-framework-odata-services","target":"source:sap-community","kind":"published_on"},{"source":"content:generating-pdf-on-btp-cf-using-cap-and-puppeteer","target":"source:sap-community","kind":"published_on"},{"source":"content:generation-of-message-processing-logs-report-for-edi-transactions-using-sap-ci","target":"source:sap-community","kind":"published_on"},{"source":"content:get-authenticated-user-information-with-cap-using-the-xsuaa-api","target":"source:sap-community","kind":"published_on"},{"source":"content:get-familiar-with-your-first-capm-project-using-the-cds-graphical-modeler","target":"source:sap-community","kind":"published_on"},{"source":"content:getting-started-with-cap-on-postgresql-nodejs","target":"source:sap-community","kind":"published_on"},{"source":"content:getting-started-with-cds-ql-in-nodejs-for-cap-101-on-how-to-query-data","target":"source:sap-community","kind":"published_on"},{"source":"content:getting-started-with-sap-event-mesh-concepts-setup-and-best-practices","target":"source:sap-community","kind":"published_on"},{"source":"content:getting-started-with-unit-testing-in-cap-java","target":"source:sap-community","kind":"published_on"},{"source":"content:getting-your-head-into-cap-multitenancy","target":"source:sap-community","kind":"published_on"},{"source":"content:github-copilot-vscode-my-own-sap-development-rules","target":"source:sap-community","kind":"published_on"},{"source":"content:give-your-ai-agent-some-tools-introducing-the-ui5-mcp-server","target":"source:sap-community","kind":"published_on"},{"source":"content:governance-at-scale-why-a-clean-core-is-what-makes-agent-governance-enforceable","target":"source:sap-community","kind":"published_on"},{"source":"content:graph-intro-series-part-8-use-graph-with-odata-v4","target":"source:sap-community","kind":"published_on"},{"source":"content:graph-on-integration-suite-simplifying-multi-api-data-retrieval-with-unified-bus","target":"source:sap-community","kind":"published_on"},{"source":"content:guide-to-process-automation-apis-part-i-getting-started","target":"source:sap-community","kind":"published_on"},{"source":"content:hana-cloud-knowledge-graph-for-ai-driven-tender-analysis","target":"source:sap-community","kind":"published_on"},{"source":"content:hana-clouds-vector-embedding-in-cap-compared-with-openai","target":"source:sap-community","kind":"published_on"},{"source":"content:hana-database-migration-handling-incompatible-changes","target":"source:sap-community","kind":"published_on"},{"source":"content:hana-sql-notebooks-in-sap-build-business-application-studio-bas-visual-studio-co","target":"source:sap-community","kind":"published_on"},{"source":"content:handling-concurrent-updates-in-sap-cap-java","target":"source:sap-community","kind":"published_on"},{"source":"content:handling-csv-data-deployment-in-cap-hdi-without-data-loss","target":"source:sap-community","kind":"published_on"},{"source":"content:handling-file-routing-and-alerts-in-sap-cpi-based-on-file-type","target":"source:sap-community","kind":"published_on"},{"source":"content:hands-on-with-the-cap-operator-and-the-partner-reference-application","target":"source:sap-community","kind":"published_on"},{"source":"content:hello-react-and-vue-caps-new-ui-layer","target":"source:sap-community","kind":"published_on"},{"source":"content:hey-abap-cloud-please-let-me-save-my-data-export-to-azure-storage-please-part-4","target":"source:sap-community","kind":"published_on"},{"source":"content:how-redwood-software-and-sap-are-shaping-the-next-era-of-automation-with-joule-s","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-access-hana-cloud-database-and-hdi-container-in-btp","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-access-on-premise-odata-from-bas-in-capm-development","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-access-sap-cloud-logging-service-dashboards-using-ias-saml-authentication","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-add-odata-v2-adapter-proxy-to-your-cap-project","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-approve-reject-task-via-api-in-sap-build-process-automation","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-build-reusable-plugin-components-for-cap-java-applications","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-check-fiori-apps-related-authorization-object-mass","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-configure-retry-mechanism-in-sap-btp-ci-is-to-handle-only-connectivity-er","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-connect-claude-code-to-abap-with-zero-config-mcp","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-connect-to-remote-services-locally-in-a-cap-application","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-consume-ui5-custom-libraries-in-bas-or-vs-code","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-create-a-purchase-order-through-bapi-in-the-sap-through-program-se38-t-co","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-create-an-application-job-apj-in-sap-s-4hana-abap-with-single-values-sele","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-create-and-expose-odata-apis","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-deploy-a-custom-fiori-app-to-s-4hana-public-cloud-and-add-a-tile-in-sap-b","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-enable-sap-audit-log-viewer-service-to-collect-all-audit-logs-from-btp-se","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-extend-abap-test-cockpit-on-sap-btp-for-custom-use-cases","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-handle-usernames-global-user-ids-and-external-ids-in-your-landscape","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-implement-alert-notification-service-in-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-implement-sap-btp-audit-log-service-in-a-cap-application","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-implement-sap-change-document","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-mass-upload-from-a-spreadsheet-file-into-an-sap-fiori-app-in-sap-btp-abap","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-merge-two-separate-smart-forms-into-a-single-pdf-in-sap","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-perform-initial-loads-from-s-4hana-to-advanced-event-mesh-with-odata-poll","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-reduce-prompt-token-costs-using-toon","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-rename-an-odata-v4-service","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-scan-custom-abap-for-security-issues-in-eclipse-step-by-step","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-share-tables-across-different-cap-projects","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-subscribe-or-fetch-data-from-solace-to-cpi-using-aem-adapter-part-5","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-transfer-a-file-from-the-cap-backend","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-use-npm-modules-like-crypto-js-in-sapui5-using-ui5-tooling-modules","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-use-reserved-words-as-property-names-in-your-odata-service","target":"source:sap-community","kind":"published_on"},{"source":"content:how-to-use-sap-data-intelligence-with-sap-cloud-connector","target":"source:sap-community","kind":"published_on"},{"source":"content:how-we-could-potentially-have-nestjs-as-runtime-for-sap-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:html5-timeout-for-cap-destinations-in-mta-yaml","target":"source:sap-community","kind":"published_on"},{"source":"content:hybrid-testing-using-postgresql-on-btp-hyperscaler-option","target":"source:sap-community","kind":"published_on"},{"source":"content:identity-and-access-management-in-sap-navigating-sso-across-web-and-on-prem-land","target":"source:sap-community","kind":"published_on"},{"source":"content:implementation-of-observability-using-opentelemetry-in-sap-btp","target":"source:sap-community","kind":"published_on"},{"source":"content:implementing-b2b-advisory-in-sap-integration-suite-for-custom-xml-edifact-scenar","target":"source:sap-community","kind":"published_on"},{"source":"content:implementing-custom-audit-logging-in-cap-applications","target":"source:sap-community","kind":"published_on"},{"source":"content:implementing-dynamic-subaccount-based-routing-in-sap-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:implementing-event-driven-architecture-in-cap-java-using-sap-event-mesh","target":"source:sap-community","kind":"published_on"},{"source":"content:importing-an-external-data-model-using-cds-graphical-modeler-for-visual-studio-c","target":"source:sap-community","kind":"published_on"},{"source":"content:importing-external-edmx-files-using-the-cds-graphical-modeler","target":"source:sap-community","kind":"published_on"},{"source":"content:importing-sap-cds-common-cds-using-the-cds-graphical-modeler","target":"source:sap-community","kind":"published_on"},{"source":"content:improved-search-performance-in-sap-btp-core-sap-cloud-application-programming-mo","target":"source:sap-community","kind":"published_on"},{"source":"content:improving-exception-handling-using-generative-ai-in-sap-cloud-integration-sap-ci","target":"source:sap-community","kind":"published_on"},{"source":"content:information-map-introduction-series-graph-in-sap-integration-suite","target":"source:sap-community","kind":"published_on"},{"source":"content:insights-of-cloud-sdk-cap-xsuaa-ssh-and-other-btp-topics-from-2021","target":"source:sap-community","kind":"published_on"},{"source":"content:instance-sharing-sap-cloud-logging","target":"source:sap-community","kind":"published_on"},{"source":"content:integrate-cap-as-outbound-channel-for-sap-document-ai","target":"source:sap-community","kind":"published_on"},{"source":"content:integrate-document-information-extraction-into-ui5-application","target":"source:sap-community","kind":"published_on"},{"source":"content:integrate-sap-business-technology-platform-audit-logs-with-ibm-security-qradar","target":"source:sap-community","kind":"published_on"},{"source":"content:integrating-a-custom-ai-model-into-cap-using-ai-launchpad","target":"source:sap-community","kind":"published_on"},{"source":"content:integrating-s4hana-invoicing-with-ksef-using-event-mesh-and-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:integrating-sap-cloud-identity-services-identity-authentication-ias-with-sap-aud","target":"source:sap-community","kind":"published_on"},{"source":"content:integrating-sap-cpi-with-microsoft-sharepoint-part-2-creating-an-api-to-upload-f","target":"source:sap-community","kind":"published_on"},{"source":"content:integrating-sap-document-information-extraction-with-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:integrating-using-google-cloud-storage-adapter-gcp-authentication-adapter-config","target":"source:sap-community","kind":"published_on"},{"source":"content:integration-suite-automating-email-alerts-for-failed-interfaces-in-sap-cpi","target":"source:sap-community","kind":"published_on"},{"source":"content:integration-suite-building-an-mcp-server-for-a-sap-ci-monitoring-assistant","target":"source:sap-community","kind":"published_on"},{"source":"content:integration-tests-in-a-cloud-foundry-java-app-using-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:intelligent-error-handling-in-sap-cpi-using-ai-adapter","target":"source:sap-community","kind":"published_on"},{"source":"content:introducing-eslint-plugin-better-cap-config","target":"source:sap-community","kind":"published_on"},{"source":"content:introducing-scim-api-for-sap-sales-service-cloud-v2-seamless-user-sync-between-s","target":"source:sap-community","kind":"published_on"},{"source":"content:introducing-the-cloud-application-programming-model-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:introducing-the-mcp-server-for-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:invoke-openapi-documented-apis-remotely-with-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:invoking-business-agent-foundation-agents-from-abap-a-step-by-step-guide","target":"source:sap-community","kind":"published_on"},{"source":"content:ips-provisioning-to-abap-cloud-developer-trial","target":"source:sap-community","kind":"published_on"},{"source":"content:is-it-time-to-switch-to-odata-v4","target":"source:sap-community","kind":"published_on"},{"source":"content:iso-content-for-common-cap-types","target":"source:sap-community","kind":"published_on"},{"source":"content:joule-for-developers-with-sap-btp-abap-environment-setup-guide","target":"source:sap-community","kind":"published_on"},{"source":"content:joule-studio-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:keep-the-core-clean-with-rizing-cdsx","target":"source:sap-community","kind":"published_on"},{"source":"content:kyma-evolution-transforming-kyma-into-a-tailor-made-saas-platform","target":"source:sap-community","kind":"published_on"},{"source":"content:kyma-integration-with-sap-cloud-logging-part-1-introduction-and-shipping-logs","target":"source:sap-community","kind":"published_on"},{"source":"content:kyma-integration-with-sap-cloud-logging-part-2-let-s-ship-some-traces","target":"source:sap-community","kind":"published_on"},{"source":"content:leanix-adapter-for-sap-integration-suite","target":"source:sap-community","kind":"published_on"},{"source":"content:lessons-learned-fetching-learning-history-from-successfactors-lms-using-odata-ap","target":"source:sap-community","kind":"published_on"},{"source":"content:lets-deep-dive-into-capm-and-hana-cloud","target":"source:sap-community","kind":"published_on"},{"source":"content:major-updates-to-the-attachments-plugin","target":"source:sap-community","kind":"published_on"},{"source":"content:making-cap-development-easier-with-storyboard-in-bas","target":"source:sap-community","kind":"published_on"},{"source":"content:making-the-case-for-enhanced-rest-adapter-in-sap-integration-suite","target":"source:sap-community","kind":"published_on"},{"source":"content:making-the-ias-based-pkce-flow-great-again-mobile-first","target":"source:sap-community","kind":"published_on"},{"source":"content:manage-dmq-messages-on-advanced-event-mesh-with-a-cap-application","target":"source:sap-community","kind":"published_on"},{"source":"content:managing-jms-queues-programmatically-with-the-new-sap-cloud-integration-jms-odat","target":"source:sap-community","kind":"published_on"},{"source":"content:mastering-internal-actions-in-sap-rap-automatic-header-calculation-in-abap-cloud","target":"source:sap-community","kind":"published_on"},{"source":"content:mcp-server-for-sap-incentive-management","target":"source:sap-community","kind":"published_on"},{"source":"content:mcp-servers-are-the-new-z-tables","target":"source:sap-community","kind":"published_on"},{"source":"content:mcp-servers-on-sap-integration-suite-build-your-first-mcp-server-from-an-api","target":"source:sap-community","kind":"published_on"},{"source":"content:media-handling-in-sap-capm-backend-and-frontend","target":"source:sap-community","kind":"published_on"},{"source":"content:merge-multiple-pdf-forms-into-a-single-document-for-download-or-printing","target":"source:sap-community","kind":"published_on"},{"source":"content:message-mapping-in-sap-integration-suite-custom-scripts-and-conditional-mapping","target":"source:sap-community","kind":"published_on"},{"source":"content:messaging-system-for-odata-error-warning-and-information-messages","target":"source:sap-community","kind":"published_on"},{"source":"content:microsoft-graph-api-read-and-extract-attachments-of-outlook-email-from-cloud-int","target":"source:sap-community","kind":"published_on"},{"source":"content:microsoft-sentinel-for-sap-goes-agentless","target":"source:sap-community","kind":"published_on"},{"source":"content:migrate-your-code-with-ui5-linter-autofix-has-landed","target":"source:sap-community","kind":"published_on"},{"source":"content:migrating-an-on-prem-xsa-cds3-solution-to-cds6-and-sqlite","target":"source:sap-community","kind":"published_on"},{"source":"content:migrating-from-application-logging-service-to-cloud-logging","target":"source:sap-community","kind":"published_on"},{"source":"content:migrating-from-asanwee-to-asaaemee-from-sap-event-mesh-to-sap-advanced-event-mes","target":"source:sap-community","kind":"published_on"},{"source":"content:migrating-your-cap-applications-from-web-ide-to-bas","target":"source:sap-community","kind":"published_on"},{"source":"content:migration-journey-from-mulesoft-to-sap-integration-suite-ci","target":"source:sap-community","kind":"published_on"},{"source":"content:mj-live-an-ai-cognitive-pipeline-on-cap-hana-and-solace","target":"source:sap-community","kind":"published_on"},{"source":"content:modernizing-rfc-bapi-based-integrations-for-a-clean-core-with-sap-integration-su","target":"source:sap-community","kind":"published_on"},{"source":"content:monitoring-cap-container-metrics-with-sap-cloud-logging-service","target":"source:sap-community","kind":"published_on"},{"source":"content:moving-from-hub-gateway-to-direct-s-4hana-odata-v4-a-customized-reusable-rap-pro","target":"source:sap-community","kind":"published_on"},{"source":"content:multi-modal-rag-proof-of-concept-facilitating-tech-support","target":"source:sap-community","kind":"published_on"},{"source":"content:multi-origin-service-testing-and-troubleshooting-in-sap-gateway","target":"source:sap-community","kind":"published_on"},{"source":"content:multitenant-application-using-cap-java-sdk-and-mtx-sidecar","target":"source:sap-community","kind":"published_on"},{"source":"content:multitenant-business-applications-with-cap-hands-on-video-tutorials","target":"source:sap-community","kind":"published_on"},{"source":"content:multitenant-mta-providing-a-cloud-portal-with-fiori-apps-to-subscribers","target":"source:sap-community","kind":"published_on"},{"source":"content:multitenant-saas-applications-on-btp-using-cap-kyma-runtime","target":"source:sap-community","kind":"published_on"},{"source":"content:multitenant-saas-on-btp-using-cap-the-reloaded-version","target":"source:sap-community","kind":"published_on"},{"source":"content:multitenant-saas-on-btp-using-cap-tried-and-true-advanced","target":"source:sap-community","kind":"published_on"},{"source":"content:multitenant-saas-on-btp-using-cap-tried-and-true-basic","target":"source:sap-community","kind":"published_on"},{"source":"content:multitenant-saas-on-btp-using-cap-tried-and-true-expert-features","target":"source:sap-community","kind":"published_on"},{"source":"content:multitenant-saas-on-btp-using-cap-tried-and-true-overview","target":"source:sap-community","kind":"published_on"},{"source":"content:my-cap-projects-toolbox","target":"source:sap-community","kind":"published_on"},{"source":"content:named-user-attribution-across-btp-subaccounts-a-two-hop-ias-token-exchange-for-c","target":"source:sap-community","kind":"published_on"},{"source":"content:natural-language-queries-for-sap-cap-via-mcp","target":"source:sap-community","kind":"published_on"},{"source":"content:new-and-improved-change-tracking-plugin","target":"source:sap-community","kind":"published_on"},{"source":"content:new-ci-pipeline-restart-extension-features-supporting-new-pipeline-package-and-i","target":"source:sap-community","kind":"published_on"},{"source":"content:new-pipeline-concept-features-integrated-runtimes-and-supporting-landscape-stage","target":"source:sap-community","kind":"published_on"},{"source":"content:new-pipeline-for-cloud-integration-features-with-version-1-0-11","target":"source:sap-community","kind":"published_on"},{"source":"content:new-pod-2-0-framework-the-new-generation-of-sap-digital-manufacturing-worker-uis","target":"source:sap-community","kind":"published_on"},{"source":"content:new-sap-cloud-application-programming-model-sample-for-many-to-many-relationship","target":"source:sap-community","kind":"published_on"},{"source":"content:new-tutorial-for-ui5-middleware-fe-mockserver","target":"source:sap-community","kind":"published_on"},{"source":"content:nice-patch-sap-revisiting-your-sap-btp-security-measures-after-ai-core-vulnerabi","target":"source:sap-community","kind":"published_on"},{"source":"content:no-code-mcp-servers-with-sap-integration-suite-from-rest-api-to-ai-agent","target":"source:sap-community","kind":"published_on"},{"source":"content:object-release-state-in-cloudification-repository-viewer-for-clean-core-extensib","target":"source:sap-community","kind":"published_on"},{"source":"content:odata-batch-deleting-records-across-multiple-tables-in-single-transaction","target":"source:sap-community","kind":"published_on"},{"source":"content:odata-deep-insert-implementation-and-real-life-examples","target":"source:sap-community","kind":"published_on"},{"source":"content:on-the-fly-excel-download-in-a-rap-fiori-app-no-database-table-no-persistence-pu","target":"source:sap-community","kind":"published_on"},{"source":"content:open-source-ui5-form-validator","target":"source:sap-community","kind":"published_on"},{"source":"content:open-sourcing-cap-how-to-learn-more-or-get-involved","target":"source:sap-community","kind":"published_on"},{"source":"content:openapis-in-the-sap-ecosystem","target":"source:sap-community","kind":"published_on"},{"source":"content:optimize-your-mta-build-with-several-ui-apps","target":"source:sap-community","kind":"published_on"},{"source":"content:optimized-idoc-routing-in-sap-ci-with-value-mapping-and-groovy-based-receiver-de","target":"source:sap-community","kind":"published_on"},{"source":"content:out-of-the-box-document-grounding-in-sap-ai-core-rag-with-sap-help-portal","target":"source:sap-community","kind":"published_on"},{"source":"content:outbound-integration-from-sap-btp-abap-to-sap-s-4hana-cloud-via-service-consumpt","target":"source:sap-community","kind":"published_on"},{"source":"content:parallel-data-filtering-and-dropbox-integration-using-sap-cloud-integration","target":"source:sap-community","kind":"published_on"},{"source":"content:part-1-enrich-cap-based-services-with-behaviors-using-annotations","target":"source:sap-community","kind":"published_on"},{"source":"content:part-1-how-to-create-a-capm-project-in-bas","target":"source:sap-community","kind":"published_on"},{"source":"content:part-2-empowering-sap-btp-cap-services-through-open-api-spec-and-annotations-for","target":"source:sap-community","kind":"published_on"},{"source":"content:part-2-enrich-cap-based-services-with-behaviors-using-annotations","target":"source:sap-community","kind":"published_on"},{"source":"content:part-3-empowering-sap-btp-cap-services-through-open-api-spec-and-annotations-for","target":"source:sap-community","kind":"published_on"},{"source":"content:pattern-function-for-rfc","target":"source:sap-community","kind":"published_on"},{"source":"content:perform-sap-principal-propagation-with-microsoft-entra-id-for-sap-successfactors","target":"source:sap-community","kind":"published_on"},{"source":"content:performance-boost-and-caching-strategy-with-cds-caching","target":"source:sap-community","kind":"published_on"},{"source":"content:performance-trace-node-js-app-on-btp-with-dynatrace","target":"source:sap-community","kind":"published_on"},{"source":"content:postgresql-persistence-adapter-for-cap-nodejs","target":"source:sap-community","kind":"published_on"},{"source":"content:predictive-asset-insights-embedded-live-analytics-using-cap-and-sac","target":"source:sap-community","kind":"published_on"},{"source":"content:presenting-sap-cap-sdm-plugin","target":"source:sap-community","kind":"published_on"},{"source":"content:principal-propagation-from-btp-web-app-to-s-4hana-via-sap-integration-suite","target":"source:sap-community","kind":"published_on"},{"source":"content:principal-propagation-in-sbpa-actions-with-a-cap-nodejs-service","target":"source:sap-community","kind":"published_on"},{"source":"content:print-preview-from-rap-action-with-v4-odata-and-multiple-selection","target":"source:sap-community","kind":"published_on"},{"source":"content:process-integration-pipeline-extension-restart-via-data-store","target":"source:sap-community","kind":"published_on"},{"source":"content:product-updates-for-sap-build-code-june-2025-edition","target":"source:sap-community","kind":"published_on"},{"source":"content:prompt-driven-development-building-full-stack-cap-apps-from-user-stories","target":"source:sap-community","kind":"published_on"},{"source":"content:publish-events-from-cap-nodejs-to-integration-suite-event-mesh","target":"source:sap-community","kind":"published_on"},{"source":"content:qualtrics-integration-with-domain-based-authorization-in-a-cap-project","target":"source:sap-community","kind":"published_on"},{"source":"content:quickly-deploy-a-sample-cap-application-to-btp","target":"source:sap-community","kind":"published_on"},{"source":"content:rag-with-hana-cloud-vector-engine-genai-hub-and-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:random-collection-of-useful-code-fragments-for-cap-fiori-elements-and-sapui5","target":"source:sap-community","kind":"published_on"},{"source":"content:random-numbers-and-probability-distributions-in-the-abap-environments-for-2508","target":"source:sap-community","kind":"published_on"},{"source":"content:reading-between-the-lines-under-documented-fiori-elements-capabilities-in-sapui5","target":"source:sap-community","kind":"published_on"},{"source":"content:real-time-architecture-in-cap-async-jobs-and-websockets","target":"source:sap-community","kind":"published_on"},{"source":"content:receive-events-from-event-mesh-of-integration-suite-to-cap-node-js-applications","target":"source:sap-community","kind":"published_on"},{"source":"content:receive-notifications-from-amazon-sns-in-a-cap-s4hana-extension","target":"source:sap-community","kind":"published_on"},{"source":"content:recommendations-for-customers-on-using-the-direct-push-based-integration","target":"source:sap-community","kind":"published_on"},{"source":"content:recommendations-for-wrapper-interface-design","target":"source:sap-community","kind":"published_on"},{"source":"content:remote-debugging-of-a-capm-nodejs-app","target":"source:sap-community","kind":"published_on"},{"source":"content:resend-http-messages-with-configured-pause-and-fixed-max-iteration-followed-by-e","target":"source:sap-community","kind":"published_on"},{"source":"content:resolving-date-serialization-issues-with-an-external-odata-v2-service","target":"source:sap-community","kind":"published_on"},{"source":"content:restrict-crud-operations-in-capm-with-capabilities-and-readonly","target":"source:sap-community","kind":"published_on"},{"source":"content:reusable-components-for-cap-with-cds-plugin","target":"source:sap-community","kind":"published_on"},{"source":"content:rfc-bapis-meet-ai-agents-why-sap-integration-suite-mcp-server-matters","target":"source:sap-community","kind":"published_on"},{"source":"content:run-and-deploy-cap-java-with-postgresql-on-cloud-foundry-2023","target":"source:sap-community","kind":"published_on"},{"source":"content:run-and-deploy-cap-java-with-postgresql-using-cap-js-postgres","target":"source:sap-community","kind":"published_on"},{"source":"content:run-and-deploy-cap-nodejs-or-java-with-postgresql-on-cloud-foundry","target":"source:sap-community","kind":"published_on"},{"source":"content:run-and-deploy-cap-with-postgresql-on-cloud-foundry","target":"source:sap-community","kind":"published_on"},{"source":"content:running-ai-agents-against-sap-ecc-6-0-lessons-from-building-an-in-system-mcp-ser","target":"source:sap-community","kind":"published_on"},{"source":"content:running-cap-node-applications-in-bas-run-configurations","target":"source:sap-community","kind":"published_on"},{"source":"content:s-4hana-abap","target":"source:sap-community","kind":"published_on"},{"source":"content:s-4hana-observability-streaming-sap-cloud-alm-logserv-telemetry-to-bigquery-vert","target":"source:sap-community","kind":"published_on"},{"source":"content:saas-self-onboarding-and-one-domain-in-kyma-using-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-advanced-event-mesh-manage-advance-event-mesh-with-api-s","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-agentic-ai-in-practice-building-the-sap-exception-log-triage-agent-part-3-of","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-ai-core-agent-part-8-cloudfoundry","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-ai-services-dox-gen-ai-with-sap-cap-plugin-part-3","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-api-management-for-beginners-part-1-what-is-apim-a-complete-features-tour","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-api-management-for-beginners-part-4-oauth-2-0-kvm-traffic-policies-threat-pr","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-api-management-sap-cloud-logging","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-btp-account-architecture-best-practices-a-practitioner-s-field-guide","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-btp-audit-log-access-just-got-easier-here-s-what-s-new","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-btp-audit-log-enable-and-retrieve-logs","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-btp-ci-building-open-source-custom-adapter-eventsmartkafka-from-zero-with-sa","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-btp-ci-eventsmartkafka-custom-kafka-adapter-from-esa-v1-1-0-validated-runtim","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-btp-ci-eventsmartkafka-custom-kafka-adapter-part-v-final","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-btp-ci-how-i-built-an-open-source-enterprise-custom-kafka-adapter-from-scrat","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-btp-ci-immutable-event-routing-per-domain-with-metadata-driven-consumer-orch","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-btp-cloud-foundry-job-scheduling-for-cap-based-project","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-btp-destinations-in-a-nutshell-part-1-motivation-noauthentication-destinatio","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-btp-kyma-service-mesh","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-btp-platform-technical-user-for-ctms-integration","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-btp-sdk-for-ios-and-cap-with-odata-v4-support","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-build-process-automation","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-business-technology-platform-authorization-and-trust-management-service","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-cap-adapter-to-expose-odata-as-custom-rest-service","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-cap-best-vscode-extensions-for-typescript-development","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-cap-cloud-application-programming","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-cap-consume-sap-api-hub-sandbox-data-as-an-external-service-part-1","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-cap-controller-service-repository-architecture","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-cap-function-and-action-with-unstructured-dynamic-type-input-output","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-cap-jwt-token-flow-in-code","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-cap-lessons-learned-quick-deployment-with-manifest-and-cf-push","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-cap-on-hana-xsa-scaling-industrial-data-applications","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-cap-recent-enhancements-the-hana-dev-should-know-about","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-cap-remote-services-and-sap-fiori-elements","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-cap-with-prostgres-serice-in-btp","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-capv7-node-js-highlights-and-experiences","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-ci-to-abap-integration-seamless-xml-to-internal-table-mapping","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-cloud-application-programming-model-cap-part-1","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-cloud-application-programming-model-cap-part-2","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-cloud-application-programming-model-start-here","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-cloud-integration-ci-cpi-reusable-script-collection-pattern-for-sensitive-da","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-cloud-integration","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-cloud-platform-backend-service-tutorial-11-cds-magic-key-generation","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-cloud-platform-backend-service-tutorial-12-cds-local-build","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-codejam-on-event-driven-build-process","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-data-and-analytics-showcase-cap-machine-learning-application","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-data-and-analytics-showcase-machine-learning-on-btp","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-datasphere-integration-patterns-lessons-learned-from-two-years-of-implementa","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-developer-new-july-3rd-2026","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-ehs-public-cloud-extending-your-existing-landscape-side-by-side-guidebook-pa","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-email-functionality-in-sap-with-a-custom-function-module","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-event-mesh-architecture-patterns","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-event-mesh-cap-based-implementation-single-tenant","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-event-mesh-consuming-s4-events-in-cap-and-integration-suite","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-event-mesh-s4-hana-on-prem-and-sap-ci-btp-is-through-websocket-and-webhooks","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-fiori-application-generator-available-in-open-source","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-fiori-elements-using-cap-model-introduction","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-fiori-elements-using-cap-model-list-report-app","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-graphql-in-capm-nodejs","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-hana-xsa-part-2-smart-variants-and-odata-v4-to-v2","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-integration-suite-intelligent-integration-with-ai-adapter","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-integration-suite-mcp-a-practical-architecture-for-ai-agents-and-sap","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-job-scheduling-service-generate-your-own-client-library-from-openapi-spec","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-job-scheduling-service-set-job-run-status-with-the-rest-api-and-node-js","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-joule-implementation-in-an-s-4hana-private-cloud-3-system-landscape","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-joule-invoice-agent-for-faster-supplier-invoice-release-in-sap-s-4hana-accou","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-joule-me-my-first-joule-skill-in-sap-ehsm-incident-management-without-coding","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-just-became-ai-agent-ready-here-s-a-step-by-step-mcp-walkthrough","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-mdg-cloud-ready-mode-5-solution-patterns-zero-badis-how-we-implemented-5-typ","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-neo-retires-integration-developers-must-know-before-migrating-from-neo-to-cf","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-ord-made-simple-what-it-does-and-why-it-s-crucial-in-your-sap-landscape-purp","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-pi-migration-to-btp-integration-suite-patterns-and-learning-experiences","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-rpt-1-5-is-now-generally-available-more-accurate-predictions-better-explaina","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-s-4hana-cloud-scheduling-background-jobs-using-application-job-templates","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-s-api-policy-on-ai-agents-what-it-prohibits-allows-and-leaves-open","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-soap-sender-receiver-adapters-your-integration-game-changers","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-successfactors-extensibility-from-btp-kyma-runtime","target":"source:sap-community","kind":"published_on"},{"source":"content:sap-tech-bytes-adding-service-implementation-to-an-sap-hana-project","target":"source:sap-community","kind":"published_on"},{"source":"content:sapcap-win-customer-trust-using-data-privacy-and-protection-services-on-btp-part-2","target":"source:sap-community","kind":"published_on"},{"source":"content:sapcap-win-customer-trust-using-data-privacy-and-protection-services-on-btp-part-3","target":"source:sap-community","kind":"published_on"},{"source":"content:sapcap-win-customer-trust-using-data-privacy-and-protection-services-on-btp-part","target":"source:sap-community","kind":"published_on"},{"source":"content:scheduling-a-background-job-for-the-bdc-session-method-using-rsbdcsub","target":"source:sap-community","kind":"published_on"},{"source":"content:securing-a-cap-endpoint-called-by-the-job-scheduling-service","target":"source:sap-community","kind":"published_on"},{"source":"content:securing-a-cap-nodejs-app-with-sap-ams-on-btp-cloud-foundry","target":"source:sap-community","kind":"published_on"},{"source":"content:securing-cap-applications-with-cloud-identity-services-and-ams","target":"source:sap-community","kind":"published_on"},{"source":"content:securing-multiple-cap-java-apps-with-one-xsuaa-instance","target":"source:sap-community","kind":"published_on"},{"source":"content:securing-sap-cap-applications-xsuaa-roles-and-authorization-best-practices","target":"source:sap-community","kind":"published_on"},{"source":"content:semantic-search-in-cap-nodejs-vector-embeddings","target":"source:sap-community","kind":"published_on"},{"source":"content:sending-email-through-an-on-premise-mail-destination-from-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:sending-emails-from-sap-cap-applications-with-any-smtp-provider","target":"source:sap-community","kind":"published_on"},{"source":"content:september-15th-what-s-new-on-developers-sap-com","target":"source:sap-community","kind":"published_on"},{"source":"content:service-interfaces-and-abap-proxy-generation-support-in-sap-integration-suite","target":"source:sap-community","kind":"published_on"},{"source":"content:set-up-the-sap-cloud-connector-integrating-on-premise-systems-with-cloud-service","target":"source:sap-community","kind":"published_on"},{"source":"content:set-up-vs-code-on-chrome-os-for-local-cap-development","target":"source:sap-community","kind":"published_on"},{"source":"content:setting-the-right-expectations-around-ai-for-code-generation","target":"source:sap-community","kind":"published_on"},{"source":"content:setting-up-alerts-for-sap-cloud-integration-using-sap-alert-notification-service","target":"source:sap-community","kind":"published_on"},{"source":"content:setting-up-cap-plugin-for-advanced-event-mesh-with-oauth","target":"source:sap-community","kind":"published_on"},{"source":"content:setting-up-postgresql-for-sap-btp-development","target":"source:sap-community","kind":"published_on"},{"source":"content:sftp-authentication-setup-in-sap-btp-integration-suite-a-step-by-step-guide","target":"source:sap-community","kind":"published_on"},{"source":"content:sftp-file-level-checks-in-sap-btp-cloud-integration","target":"source:sap-community","kind":"published_on"},{"source":"content:sharing-a-hana-cloud-instance-across-subaccounts-with-hdi-containers","target":"source:sap-community","kind":"published_on"},{"source":"content:side-effects-in-fiori-triggering-actions-and-updating-data-in-your-unmanaged-rap","target":"source:sap-community","kind":"published_on"},{"source":"content:simple-table-maintenance-in-sap-fiori-using-ui5-smart-controls","target":"source:sap-community","kind":"published_on"},{"source":"content:simplifying-abap-proxy-migration-from-sap-po-to-integration-suite-no-mdr-require","target":"source:sap-community","kind":"published_on"},{"source":"content:simplifying-saas-self-onboarding-automation-using-terraform","target":"source:sap-community","kind":"published_on"},{"source":"content:simplifying-sap-btp-authentication-in-pipelines-with-sap-passport","target":"source:sap-community","kind":"published_on"},{"source":"content:smart-filter-value-help-for-fields-that-are-not-associated-entities","target":"source:sap-community","kind":"published_on"},{"source":"content:speed-up-deployment-for-cap-using-turborepo","target":"source:sap-community","kind":"published_on"},{"source":"content:sqlite-as-database-for-a-productive-cap-application","target":"source:sap-community","kind":"published_on"},{"source":"content:standardized-oidc-api-access-to-sap-s-4hana-via-sap-api-management-and-microsoft","target":"source:sap-community","kind":"published_on"},{"source":"content:standardized-oidc-api-access-to-sap-successfactors-via-sap-api-management-and-mi","target":"source:sap-community","kind":"published_on"},{"source":"content:step-by-step-guide-google-sheets-api-integration-in-sap-cpi-via-open-connectors","target":"source:sap-community","kind":"published_on"},{"source":"content:step-by-step-guide-to-display-system-details-on-sap-fiori-launchpad-shell","target":"source:sap-community","kind":"published_on"},{"source":"content:stop-building-from-scratch-unlocking-sap-cloud-integration-s-standard-content","target":"source:sap-community","kind":"published_on"},{"source":"content:storyboard-for-cloud-business-applications-using-cap-in-bas","target":"source:sap-community","kind":"published_on"},{"source":"content:streaming-llm-output-with-cap-and-websockets","target":"source:sap-community","kind":"published_on"},{"source":"content:streamline-user-targeting-with-segments-in-sap-feature-flags","target":"source:sap-community","kind":"published_on"},{"source":"content:streamlined-kyma-deployment-for-cap-applications","target":"source:sap-community","kind":"published_on"},{"source":"content:streamlining-cap-development-with-cds-graphical-modeler-in-bas","target":"source:sap-community","kind":"published_on"},{"source":"content:surviving-and-thriving-with-cap-deployment","target":"source:sap-community","kind":"published_on"},{"source":"content:surviving-and-thriving-with-the-sap-cloud-application-programming-model-local-de","target":"source:sap-community","kind":"published_on"},{"source":"content:swagger-ui-for-cds-sap-btp-extension-generators","target":"source:sap-community","kind":"published_on"},{"source":"content:taking-cap-to-the-next-level-with-typescript","target":"source:sap-community","kind":"published_on"},{"source":"content:taking-control-of-clean-core-when-to-use-project-kernseife-in-addition-to-standa","target":"source:sap-community","kind":"published_on"},{"source":"content:talk-to-the-database-cap-and-sqlite-with-gemini","target":"source:sap-community","kind":"published_on"},{"source":"content:teaching-ai-agents-best-practices-a-skills-workspace-for-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:testing-cap-hana-artifacts-with-jest","target":"source:sap-community","kind":"published_on"},{"source":"content:testing-sap-build-process-automation-task-ui-in-bas","target":"source:sap-community","kind":"published_on"},{"source":"content:the-capstone-project-a-journey-from-component-to-cloud","target":"source:sap-community","kind":"published_on"},{"source":"content:the-complete-guide-to-calling-actions-in-ui5-with-custom-code","target":"source:sap-community","kind":"published_on"},{"source":"content:the-easiest-way-to-expose-a-cap-nodejs-project-as-an-mcp-server","target":"source:sap-community","kind":"published_on"},{"source":"content:the-end2end-journey-advocates-service-odata-v2-v4-and-rest","target":"source:sap-community","kind":"published_on"},{"source":"content:the-fastest-way-to-a-deployable-cap-app-on-cloud-foundry","target":"source:sap-community","kind":"published_on"},{"source":"content:the-fastest-way-to-run-full-stack-applications-in-bas","target":"source:sap-community","kind":"published_on"},{"source":"content:the-fourth-way-to-go-offline-in-ui5-and-why-the-service-worker-stays-dumb","target":"source:sap-community","kind":"published_on"},{"source":"content:the-future-of-abap-is-here-vs-code-adt-zero-config-mcp-and-ai-co-pilots","target":"source:sap-community","kind":"published_on"},{"source":"content:the-future-of-continuous-delivery-for-cloud-sdk-and-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:the-new-way-to-consume-service-bindings-on-kyma-runtime","target":"source:sap-community","kind":"published_on"},{"source":"content:the-sap-fiori-elements-feature-showcase-with-cap-cds-annotations","target":"source:sap-community","kind":"published_on"},{"source":"content:tips-and-tricks-for-annotations-in-cap-projects-using-lsp","target":"source:sap-community","kind":"published_on"},{"source":"content:tips-for-running-cap-nodejs-in-sap-btp","target":"source:sap-community","kind":"published_on"},{"source":"content:tips-vs-code-extensions","target":"source:sap-community","kind":"published_on"},{"source":"content:tree-table-support-in-cap-is-now-generally-available","target":"source:sap-community","kind":"published_on"},{"source":"content:trigger-an-sbpa-workflow-from-cap-with-cap-js-process","target":"source:sap-community","kind":"published_on"},{"source":"content:triggering-background-jobs-from-rap-actions-a-practical-guide","target":"source:sap-community","kind":"published_on"},{"source":"content:triggering-sap-build-process-automation-processes-from-cap-apps","target":"source:sap-community","kind":"published_on"},{"source":"content:troubleshooting-deploying-a-cap-project-to-hana-cloud","target":"source:sap-community","kind":"published_on"},{"source":"content:turn-sap-apis-into-mcp-tools-for-ai-agents-using-sap-integration-suite-free-tria","target":"source:sap-community","kind":"published_on"},{"source":"content:typescript-sheriff-how-can-i-use-typescript-in-the-sap-ecosystem","target":"source:sap-community","kind":"published_on"},{"source":"content:ui-composition-with-application-frontend-service","target":"source:sap-community","kind":"published_on"},{"source":"content:ui-for-the-btp-application-vulnerability-report","target":"source:sap-community","kind":"published_on"},{"source":"content:ui5-ai-features-library-is-now-an-npm-package","target":"source:sap-community","kind":"published_on"},{"source":"content:ui5-mcp-server-got-extended-for-ui-integration-cards-generation","target":"source:sap-community","kind":"published_on"},{"source":"content:ui5-plugins-for-coding-agents-now-supporting-github-copilot","target":"source:sap-community","kind":"published_on"},{"source":"content:ui5ers-buzz-56-full-stack-ui5-sample-app-with-cap-odata-v4-and-draft","target":"source:sap-community","kind":"published_on"},{"source":"content:understanding-csn-and-its-role-in-embedded-analytics","target":"source:sap-community","kind":"published_on"},{"source":"content:understanding-entity-relationships-in-cds","target":"source:sap-community","kind":"published_on"},{"source":"content:understanding-fuzzy-search-in-sap-fiori-applications","target":"source:sap-community","kind":"published_on"},{"source":"content:understanding-projections-in-capm","target":"source:sap-community","kind":"published_on"},{"source":"content:understanding-security-approaches-in-cap-using-xsuaa-nodejs-and-mta","target":"source:sap-community","kind":"published_on"},{"source":"content:unleashing-abap-potential-an-introduction-to-extension-libraries-xco","target":"source:sap-community","kind":"published_on"},{"source":"content:unlocking-mcp-servers-in-bas-right-now","target":"source:sap-community","kind":"published_on"},{"source":"content:unlocking-the-power-of-llms-in-cap-llms-txt","target":"source:sap-community","kind":"published_on"},{"source":"content:upload-attachments-in-a-freestyle-ui5-and-cap-app","target":"source:sap-community","kind":"published_on"},{"source":"content:upload-data-from-excel-in-cap-nodejs","target":"source:sap-community","kind":"published_on"},{"source":"content:uploading-attachments-to-cap-js-attachments-from-an-external-app","target":"source:sap-community","kind":"published_on"},{"source":"content:usage-of-expand-entity-in-odata-service-consumption-model","target":"source:sap-community","kind":"published_on"},{"source":"content:use-aspects-associations-and-convert-odata-v4-to-v2-using-proxy","target":"source:sap-community","kind":"published_on"},{"source":"content:use-cap-to-do-native-development-on-hana-cloud","target":"source:sap-community","kind":"published_on"},{"source":"content:use-datastore-to-avoid-too-many-duplicate-mpl-attachments-in-exception-retries","target":"source:sap-community","kind":"published_on"},{"source":"content:use-rest-services-in-graph","target":"source:sap-community","kind":"published_on"},{"source":"content:use-sap-document-management-service-plugin-in-cap-nodejs","target":"source:sap-community","kind":"published_on"},{"source":"content:use-the-destination-service-in-nodejs-locally","target":"source:sap-community","kind":"published_on"},{"source":"content:use-typescript-with-the-sap-cloud-application-programming-model","target":"source:sap-community","kind":"published_on"},{"source":"content:useful-cap-cds-and-fiori-commands-to-accelerate-development-and-deployment","target":"source:sap-community","kind":"published_on"},{"source":"content:using-apache-kafka-for-messaging-in-cap-part-1","target":"source:sap-community","kind":"published_on"},{"source":"content:using-apache-kafka-for-messaging-in-cap-part-2","target":"source:sap-community","kind":"published_on"},{"source":"content:using-btp-document-extraction-service-into-actual-app-development","target":"source:sap-community","kind":"published_on"},{"source":"content:using-claude-for-sap-abap-development-on-rfc-only-saprouter-systems-even-ecc-r-3","target":"source:sap-community","kind":"published_on"},{"source":"content:using-cloud-sdk-for-ai-in-a-commonjs-cap-project","target":"source:sap-community","kind":"published_on"},{"source":"content:using-communication-targets-for-outbound-rfc-communication-in-abap","target":"source:sap-community","kind":"published_on"},{"source":"content:using-github-actions-to-deploy-a-cap-app-mta","target":"source:sap-community","kind":"published_on"},{"source":"content:using-hana-clouds-vector-embedding-function-in-cap","target":"source:sap-community","kind":"published_on"},{"source":"content:using-postgresql-database-in-cloud-application-programming-model","target":"source:sap-community","kind":"published_on"},{"source":"content:using-postman-for-api-testing-with-xsuaa","target":"source:sap-community","kind":"published_on"},{"source":"content:using-rfc-function-modules-and-bapis-in-sap-build-process-automation","target":"source:sap-community","kind":"published_on"},{"source":"content:using-sap-hana-tools-with-cap-projects-in-bas","target":"source:sap-community","kind":"published_on"},{"source":"content:using-sap-managed-iflows-for-time-series-data-integration-in-sap-ibp-part-1-read","target":"source:sap-community","kind":"published_on"},{"source":"content:using-sap-managed-iflows-for-time-series-data-integration-in-sap-ibp-part-2-writ","target":"source:sap-community","kind":"published_on"},{"source":"content:using-the-sap-approuter-at-dev-time","target":"source:sap-community","kind":"published_on"},{"source":"content:using-the-terraform-provider-for-btp-to-simplify-tenant-onboarding","target":"source:sap-community","kind":"published_on"},{"source":"content:using-the-ui5-mockserver-for-client-specific-data-and-testing","target":"source:sap-community","kind":"published_on"},{"source":"content:visualizing-your-sap-bill-of-materials-using-cap-and-fiori-elements","target":"source:sap-community","kind":"published_on"},{"source":"content:vs-code-tasks-to-start-a-cds-service-an-approuter-and-a-browser","target":"source:sap-community","kind":"published_on"},{"source":"content:websocket-rfc-to-cloud-using-sap-business-connector","target":"source:sap-community","kind":"published_on"},{"source":"content:what-a-second-document-ai-workshop-taught-me-about-governance","target":"source:sap-community","kind":"published_on"},{"source":"content:what-an-ai-infra-engineer-sees-when-opening-sap-s-ai-stack-1-3-the-model-gateway","target":"source:sap-community","kind":"published_on"},{"source":"content:what-happens-to-your-data-when-you-enable-sap-s-ai-features","target":"source:sap-community","kind":"published_on"},{"source":"content:what-s-new-in-mobile-development-kit-client-26-9","target":"source:sap-community","kind":"published_on"},{"source":"content:what-s-new-in-sap-cloud-application-programming-model-september-2026","target":"source:sap-community","kind":"published_on"},{"source":"content:whats-new-in-cap-january-2026","target":"source:sap-community","kind":"published_on"},{"source":"content:whats-new-in-cap-november-2025","target":"source:sap-community","kind":"published_on"},{"source":"content:whats-new-in-cap-september-2025","target":"source:sap-community","kind":"published_on"},{"source":"content:where-ord-is-used-in-sap-datasphere-sap-business-data-cloud-sap-databricks","target":"source:sap-community","kind":"published_on"},{"source":"content:why-developers-should-care-about-credential-types-for-xsuaa","target":"source:sap-community","kind":"published_on"},{"source":"content:why-our-first-document-ai-exercise-was-a-r-sum-not-an-invoice","target":"source:sap-community","kind":"published_on"},{"source":"content:why-sap-cloud-identity-matters-for-sap-task-center-it-s-about-trust-and-global-u","target":"source:sap-community","kind":"published_on"},{"source":"content:workflow-development-using-cap-and-sap-build-process-automation","target":"source:sap-community","kind":"published_on"},{"source":"content:working-with-the-attachment-plugin-cloud-application-programming","target":"source:sap-community","kind":"published_on"},{"source":"content:xml-annotations-the-essentials-before-adapting-documentation-samples","target":"source:sap-community","kind":"published_on"},{"source":"content:xsuaa-attribute-based-vs-authority-based-configuration","target":"source:sap-community","kind":"published_on"},{"source":"content:xsuaa-based-authentication-using-managed-approuter","target":"source:sap-community","kind":"published_on"},{"source":"content:xsuaa-based-authentication-using-standalone-approuter","target":"source:sap-community","kind":"published_on"},{"source":"content:xsuaa-local-testing","target":"source:sap-community","kind":"published_on"},{"source":"content:deploy-and-run-the-incident-management-application-in-the-sap-btp-kyma-runtime-w","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-group-consume-remote-services-in-a-full-stack-cap-application","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-group-create-a-simple-cap-application-and-explore-the-defaults","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-group-deploy-a-full-stack-cap-application","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-group-develop-full-stack-cap-application","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-mission-build-a-business-application-using-cap-for-java","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-mission-build-a-business-application-using-cap-for-nodejs","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-mission-extend-successfactors-with-cap","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-tutorial-add-mcp-capabilities-to-a-cap-service","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-tutorial-api-composition-supply-risk","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-tutorial-cap-define-constraints-declaratively","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-tutorial-cap-examine-mcp-startup","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-tutorial-cap-intro-to-repl","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-tutorial-cap-mocking-auth","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-tutorial-cap-self-contained-dev-env","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-tutorial-cap-soap-service","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-tutorial-cap-status-transition-flows","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-tutorial-cicd-start-cap","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-tutorial-cicd-wdi5-cap","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-tutorial-cloudsdk-integrate-cap","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-tutorial-cp-cap-java-hana-db","target":"source:sap-developers","kind":"published_on"},{"source":"content:sap-tutorial-integration-suite-mcp-server","target":"source:sap-developers","kind":"published_on"},{"source":"content:use-free-tier-to-create-a-service-instance-for-sap-document-ai","target":"source:sap-developers","kind":"published_on"},{"source":"content:use-free-tier-to-subscribe-to-sap-document-ai-basic-ui","target":"source:sap-developers","kind":"published_on"},{"source":"content:integration-suite-mcp-http-configuration","target":"source:sap-help","kind":"published_on"},{"source":"content:integration-suite-mcp-server","target":"source:sap-help","kind":"published_on"},{"source":"content:a-clearer-view-of-your-sap-integrations-under-the-new-api-policy","target":"source:zeis","kind":"published_on"},{"source":"content:abap-and-agentic-ai-the-hidden-problem-in-real-projects","target":"source:zeis","kind":"published_on"},{"source":"content:abap-development-automation-with-arc-1-and-github-workflows","target":"source:zeis","kind":"published_on"},{"source":"content:arc-1-1-0-one-deployment-multiple-sap-systems","target":"source:zeis","kind":"published_on"},{"source":"content:arc-1-on-sap-btp-secure-abap-agentic-development-beyond-the-laptop","target":"source:zeis","kind":"published_on"},{"source":"content:arc-1-with-copilot-studio-sap-system-context-beyond-developers","target":"source:zeis","kind":"published_on"},{"source":"content:arc-1-with-joule-studio-bringing-real-abap-system-context-into-joule","target":"source:zeis","kind":"published_on"},{"source":"content:before-you-upgrade-s4hana-static-ui5-checks-with-mcp","target":"source:zeis","kind":"published_on"},{"source":"content:building-an-enterprise-ready-sap-ai-agent-with-open-source","target":"source:zeis","kind":"published_on"},{"source":"content:creating-an-arc-1-btp-diagram-with-codex-and-a-drawio-skill","target":"source:zeis","kind":"published_on"},{"source":"content:finally-an-mcp-server-for-abap","target":"source:zeis","kind":"published_on"},{"source":"content:from-segw-and-legacy-ui5-to-rap-with-arc-1","target":"source:zeis","kind":"published_on"},{"source":"content:how-i-use-ai-for-development-and-why-context-matters","target":"source:zeis","kind":"published_on"},{"source":"content:introducing-arc-1-a-secure-adt-mcp-server-for-enterprise-sap-development","target":"source:zeis","kind":"published_on"},{"source":"content:introducing-open-rfc-calling-sap-rfc-from-nodejs-without-the-sdk","target":"source:zeis","kind":"published_on"},{"source":"content:ui5-has-entered-the-chat-building-interactive-mcp-apps-for-sap","target":"source:zeis","kind":"published_on"},{"source":"content:050-clean-core-measurement-preview","target":"source:software-heroes","kind":"published_on"},{"source":"content:051-abap-cleaner-in-vs-code-installation-and-guide","target":"source:software-heroes","kind":"published_on"},{"source":"content:052-10-minutes-from-start-to-launchpad","target":"source:software-heroes","kind":"published_on"},{"source":"content:abap-create-dump","target":"source:software-heroes","kind":"published_on"},{"source":"content:abap-in-practice-creating-a-setup-app","target":"source:software-heroes","kind":"published_on"},{"source":"content:btp-authorization-object","target":"source:software-heroes","kind":"published_on"},{"source":"content:btp-restriction-type","target":"source:software-heroes","kind":"published_on"},{"source":"content:ccm-calculate-key-figures","target":"source:software-heroes","kind":"published_on"},{"source":"content:rap-feature-control-part-2","target":"source:software-heroes","kind":"published_on"},{"source":"content:rap-native-file-upload","target":"source:software-heroes","kind":"published_on"},{"source":"content:rap-navigation-app-to-app","target":"source:software-heroes","kind":"published_on"},{"source":"content:rap-singleton-pattern","target":"source:software-heroes","kind":"published_on"},{"source":"content:cap-in-the-age-of-ai-1-the-mcp-adapter","target":"source:youtube","kind":"published_on"},{"source":"content:cap-in-the-age-of-ai-2-more-on-the-mcp-adapter","target":"source:youtube","kind":"published_on"},{"source":"content:cap-in-the-age-of-ai-3-from-mcp-to-a2a","target":"source:youtube","kind":"published_on"},{"source":"content:cap-in-the-age-of-ai-4-more-on-agents","target":"source:youtube","kind":"published_on"},{"source":"content:cap-in-the-age-of-ai-5-agents-wrap-up","target":"source:youtube","kind":"published_on"},{"source":"content:cap-in-the-age-of-ai-6-vector-embeddings","target":"source:youtube","kind":"published_on"},{"source":"content:cap-in-the-age-of-ai-7-vector-embeddings-wrap-up","target":"source:youtube","kind":"published_on"},{"source":"content:cap-in-the-age-of-ai","target":"source:youtube","kind":"published_on"},{"source":"content:cap-node-js-expert-session-6-the-mcp-adapter","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-aba-32-business-ai-abap-cloud","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-aba-33-embedded-analytics-abap-cloud","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-aba-44-abap-ai-sdk-islm","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-abap-development-tools-for-vs-code","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-abap-environment-partner-solutions-certification","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-agentic-development-with-sapui5","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-agentic-enterprise-automation-integration-suite-joule-studio","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-agentic-loop-with-joule-for-developers-and-adt-mcp-server","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-agentic-ui-extensibility","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-agentic-workflows-n8n-joule-studio","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-ai-assisted-cap-development","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-ai-assisted-sap-development-with-mcp","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-ai-in-abap-with-islm","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-ai21-multiple-models","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-ai22-joule-work-desktop-brain","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-bridging-python-and-sap-hana-sqlalchemy-hana","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-cap-cds-oyster-extensibility","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-cap-level-data-federation","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-cap-mcp-ui5-webmcp","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-cap-the-road-ahead","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-cds-associations-and-joins","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-cloud-integration-chamber-of-horrors","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-code-based-ai-agents-baip","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-daniel-hutzel-brain","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-dat-11-knowledge-graph-hana-cloud","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-dat-12-ai-agents-hana-embedded-ml","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-dat-13-bw-modernization-bdc","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-dat-31-bdc-contextualize-and-reason","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-dat-41-data-product-governance-bdc","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-developers-sap-com-in-your-dev-environment","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-dry-cap-plugins","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-ecc-to-cap-starter-kit","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-errors-in-bapis-or-rap-bos","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-event-driven-intelligence","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-fiori-elements-adt-vscode-ui-33","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-from-apis-to-agent-tools-mcp-gateway","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-hana-data-lake-files","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-how-to-build-application-jobs-abap-environment","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-inbox-to-quotation-react-cap","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-int-12-ai-adapter-credit-checks","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-int-13-joule-desktop-mcp-gateway","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-int-21-mcp-gateway-in-practice","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-int-31-agentic-ai-integration-suite","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-int-41-edge-integration-cell","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-int-43-event-studio","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-int23-agent-calls-sap","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-intent-to-arcade-joulebert","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-joule-work-agentic-thinking","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-meet-joule-studio-first-ai-agent","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-n8n-for-agentic-integrations","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-news-from-custom-code-migration-ecc-to-s4hana","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-rap-authorizations-business-users","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-rap-draft-handling","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-rap-side-effects","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-real-pro-code-joule-studio","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-sap-bdc-and-ai","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-sap-customers-adopted-n8n","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-sap-themes-with-coding-agents","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-tabular-foundation-models","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-tabular-predictions-tabpfn","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-token-efficiency","target":"source:youtube","kind":"published_on"},{"source":"content:devtoberfest-2026-ui5-views-type-safe-tsx","target":"source:youtube","kind":"published_on"},{"source":"content:btp-ai-bp-access-to-generative-ai-models","target":"source:btp-ai-best-practices","kind":"published_on"},{"source":"content:btp-ai-bp-agentic-ai-security-governance","target":"source:btp-ai-best-practices","kind":"published_on"},{"source":"content:btp-ai-bp-content-filtering","target":"source:btp-ai-best-practices","kind":"published_on"},{"source":"content:btp-ai-bp-custom-joule-skills","target":"source:btp-ai-best-practices","kind":"published_on"},{"source":"content:btp-ai-bp-data-masking","target":"source:btp-ai-best-practices","kind":"published_on"},{"source":"content:btp-ai-bp-document-grounding","target":"source:btp-ai-best-practices","kind":"published_on"},{"source":"content:btp-ai-bp-joule-agent-builder","target":"source:btp-ai-best-practices","kind":"published_on"},{"source":"content:btp-ai-bp-mcp","target":"source:btp-ai-best-practices","kind":"published_on"},{"source":"content:btp-ai-bp-pro-code-ai-agents","target":"source:btp-ai-best-practices","kind":"published_on"},{"source":"content:btp-ai-bp-prompt-templating","target":"source:btp-ai-best-practices","kind":"published_on"},{"source":"content:btp-ai-bp-vector-rag-vs-graph-rag","target":"source:btp-ai-best-practices","kind":"published_on"},{"source":"content:dynamic-field-control-in-cap-java-object-pages","target":"source:qiita","kind":"published_on"},{"source":"content:understanding-and-developing-fiori-plugins-with-extension-api-typescript","target":"source:kernich","kind":"published_on"},{"source":"content:teched-2026-ad162","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ad164","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ad260","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ad261","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ad262","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ad263","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ad264","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-bt106","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-bt115","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ct1085","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ct1089","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ct1091","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ct1106","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ct1133","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ct1135","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ct1136","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ct1158","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ct1163","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ct1168","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ct1207","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ct1219","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ct1222","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ct1238","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ct1239","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da100","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da104","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da105","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da112","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da113","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da114","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da160","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da161","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da162","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da163","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da164","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da200","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da204","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da205","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da206","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da260","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da261","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da262","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da263","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da264","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da802","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da806","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-da807","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-in111","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-in120","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-in160","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-in161","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-in162","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-in163","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-in200","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-in202","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-in203","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-in208","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-in211","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-in212","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-in260","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-in261","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-in262","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-in804","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-in810","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-in813","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-jw122","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-jw129","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-jw213","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-jw214","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-jw262","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-jw300","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-jw301","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-jw809","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-par1102","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-par1105","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-par1113","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-par1115","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-par1119","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-par1120","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ra106","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ra107","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ra110","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ra160","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ra162","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ra163","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-ra164","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-st100","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-st103","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-st104","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-st106","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-st107","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-st108","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-st113","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-st115","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-st122","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-st124","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-st200","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-tm100","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-tm104","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-tm105","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-tm108","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-tm109","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-tm215","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-tm260","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-tm261","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-tm262","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-tm263","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-tm265","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-tm267","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-tm268","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-tm815","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-tm817","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-tm818","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-xp100","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-xp101","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-xp104","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-xp108","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-xp112","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-xp113","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-xp160","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-xp200","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-xp201","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-xp260","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-xp263","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-xp265","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-xp266","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-xp822","target":"source:sap-teched","kind":"published_on"},{"source":"content:teched-2026-xp825","target":"source:sap-teched","kind":"published_on"},{"source":"content:patterns-for-using-llms-in-abap-development","target":"source:heliconia-labs","kind":"published_on"},{"source":"artifact:arc-mcp-arc-1","target":"instrument:sap-api-policy-v4-2026a","kind":"use-constrained-by"},{"source":"artifact:cap-js-mcp","target":"instrument:sap-api-policy-v4-2026a","kind":"governed-by"},{"source":"artifact:cesar-sap-abap-kafka-rest-proxy","target":"instrument:sap-api-policy-v4-2026a","kind":"governed-by"},{"source":"artifact:hochfrequenz-aibap-mcp","target":"instrument:sap-api-policy-v4-2026a","kind":"use-constrained-by"},{"source":"artifact:marianfoo-sap-api-policy-skill","target":"instrument:sap-api-policy-v4-2026a","kind":"assesses-against"},{"source":"artifact:rahulsethi-sap-bdc-mcp","target":"instrument:sap-api-policy-v4-2026a","kind":"assesses-against"},{"source":"artifact:rahulsethi-sap-datasphere-mcp","target":"instrument:sap-api-policy-v4-2026a","kind":"claims-alignment"},{"source":"artifact:secondsky-sap-skills","target":"instrument:sap-api-policy-v4-2026a","kind":"assesses-against"},{"source":"capability:agent-code-access","target":"instrument:sap-api-policy-v4-2026a","kind":"relevant-when"},{"source":"capability:agent-systems-access","target":"instrument:sap-api-policy-v4-2026a","kind":"relevant-when"},{"source":"capability:agent-tooling","target":"instrument:sap-api-policy-v4-2026a","kind":"relevant-when"},{"source":"capability:event-mesh","target":"instrument:sap-api-policy-v4-2026a","kind":"relevant-when"},{"source":"capability:gui-automation","target":"instrument:sap-api-policy-v4-2026a","kind":"relevant-when"},{"source":"capability:mcp-servers","target":"instrument:sap-api-policy-v4-2026a","kind":"relevant-when"},{"source":"capability:tool-governance","target":"instrument:sap-api-policy-v4-2026a","kind":"relevant-when"},{"source":"artifact:cds-kafka","target":"instrument:sap-developer-license-3-1","kind":"use-constrained-by"},{"source":"capability:agent-systems-access","target":"instrument:sap-developer-license-3-2-cap","kind":"relevant-when"},{"source":"capability:async-processing","target":"instrument:sap-developer-license-3-2-cap","kind":"relevant-when"},{"source":"capability:data-import-export","target":"instrument:sap-developer-license-3-2-cap","kind":"relevant-when"},{"source":"capability:database-connectors","target":"instrument:sap-developer-license-3-2-cap","kind":"relevant-when"},{"source":"capability:deployment","target":"instrument:sap-developer-license-3-2-cap","kind":"relevant-when"},{"source":"capability:destinations","target":"instrument:sap-developer-license-3-2-cap","kind":"relevant-when"},{"source":"capability:llm-integration","target":"instrument:sap-developer-license-3-2-cap","kind":"relevant-when"},{"source":"capability:mcp-servers","target":"instrument:sap-developer-license-3-2-cap","kind":"relevant-when"},{"source":"capability:plugin-authoring","target":"instrument:sap-developer-license-3-2-cap","kind":"relevant-when"},{"source":"capability:replication","target":"instrument:sap-developer-license-3-2-cap","kind":"relevant-when"},{"source":"capability:retrieval-augmented-generation","target":"instrument:sap-developer-license-3-2-cap","kind":"relevant-when"},{"source":"capability:rfc-connectivity","target":"instrument:sap-developer-license-3-2-cap","kind":"relevant-when"},{"source":"instrument:sap-api-policy-v4-2026a","target":"actor:sap","kind":"published_by"},{"source":"instrument:sap-developer-license-3-1","target":"actor:sap","kind":"published_by"},{"source":"instrument:sap-developer-license-3-2-cap","target":"actor:sap","kind":"published_by"},{"source":"instrument:sap-developer-license-3-2","target":"actor:sap","kind":"published_by"}],"ecosystems":[{"key":"cap","label":"CAP"},{"key":"ui5","label":"UI5"},{"key":"abap","label":"ABAP"},{"key":"btp","label":"BTP/BAIP"},{"key":"commerce","label":"SAP Commerce","product":true},{"key":"successfactors","label":"SAP SuccessFactors","product":true},{"key":"digital-manufacturing","label":"SAP Digital Manufacturing","product":true}],"domains":[{"key":"protocols-and-apis","label":"Protocols & APIs"},{"key":"data-and-persistence","label":"Data & Persistence"},{"key":"integration-and-messaging","label":"Integration & Messaging"},{"key":"ai-and-agents","label":"AI & Agents"},{"key":"security-and-compliance","label":"Security & Compliance"},{"key":"operations-and-runtime","label":"Operations & Runtime"},{"key":"developer-experience","label":"Developer Experience"},{"key":"ui-and-frontend-bridge","label":"UI & Frontend Bridge"},{"key":"process-and-workflow","label":"Process & Workflow"},{"key":"learning-and-reference","label":"Learning & Reference"}],"generated":"2026-10-26","cards":{"capability:abap-classic-ui":{"href":"/capabilities/abap-classic-ui","name":"SAP GUI screens and lists","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Building screens, lists and interactive controls for the SAP GUI","line":"Building screens, lists and interactive controls for the SAP GUI. Producing a web interface is UI written in ABAP; operating an existing screen programmatically is GUI automation.","ai":true,"meta":"SAP and community, unassessed"},"capability:abap-clean-code":{"href":"/capabilities/abap-clean-code","name":"Clean code conventions","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Naming, structure and language-subset conventions for readable code","line":"The naming, structure and language-subset conventions that make source code readable across a team — and the question of which of them a checker can enforce.","ai":true,"meta":"SAP and community, unassessed"},"capability:abap-cloud-readiness":{"href":"/capabilities/abap-cloud-readiness","name":"ABAP Cloud readiness","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Whether code can run in ABAP Cloud, and what to do when it cannot","line":"Whether code can run in ABAP Cloud — released APIs only, no direct table access, no obsolete statements — and what to do with the code that cannot.","ai":true,"meta":"SAP and community, unassessed"},"capability:abap-code-formatting":{"href":"/capabilities/abap-code-formatting","name":"Code formatting","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Rewriting source to match one layout","line":"Making source match one layout — indentation, keyword case, the shape of a statement block — by rewriting it rather than by reporting on it. Distinct from static analysis, which says what is wrong and leaves the source where it is.","ai":true,"meta":"SAP and community, unassessed"},"capability:abap-code-review":{"href":"/capabilities/abap-code-review","name":"Code review","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Reading what a change contains and deciding on each part","line":"Reading a change before it moves on: which files or objects a change contains, what changed in each since an earlier version, and what a reviewer decided about each part. Comparing two versions of one object is where it starts; the review is the record kept of the decision.","ai":true,"meta":"SAP and community, unassessed"},"capability:abap-data-browsing":{"href":"/capabilities/abap-data-browsing","name":"Browsing table data","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Looking at the data a system holds while developing or supporting it","line":"Looking 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.","ai":true,"meta":"SAP and community, unassessed"},"capability:abap-extensibility":{"href":"/capabilities/abap-extensibility","name":"Extensibility","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Changing delivered behaviour without modifying it","line":"Letting a customer change delivered behaviour without modifying it — key-user fields and logic, developer extensions, and the released extension points that make either safe across an upgrade.","ai":true,"meta":"SAP and community, unassessed"},"capability:abap-service-testing":{"href":"/capabilities/abap-service-testing","name":"Calling a service by hand","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Sending a request to an OData service or push channel by hand","line":"Sending a request to an OData service or a push channel on a system and reading what comes back, while building it or chasing an error, before any client exists. Distinct from unit testing, which proves logic in code and keeps the proof.","ai":true,"meta":"SAP and community, unassessed"},"capability:abap-source-control":{"href":"/capabilities/abap-source-control","name":"Source control","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Keeping source and development objects in version control","line":"Keeping source code and development objects in version control, comparing their revisions, and moving them between development environments. Managed delivery of changes belongs to transport management.","ai":true,"meta":"SAP and community, community owns it"},"capability:abap-static-analysis":{"href":"/capabilities/abap-static-analysis","name":"Static analysis","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Catching problems in code before execution","line":"Catching problems in code before it runs: naming, obsolete statements, security findings, and compatibility with a target environment. Style linting, security scanning and cloud-readiness checks are often treated as one concern.","ai":true,"meta":"SAP and community, narrow by design"},"capability:abap-transactional-model":{"href":"/capabilities/abap-transactional-model","name":"Transactional model","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Defining business object behaviour and who owns the transaction","line":"How a business object's behaviour is defined and who owns the transaction — the choice that shapes everything downstream in an application.","ai":true,"meta":"SAP and community, unassessed"},"capability:abap-ui-from-abap":{"href":"/capabilities/abap-ui-from-abap","name":"UI written in ABAP","kind":"capability","glyph":{"type":"coverage","state":"community-only"},"short":"Producing a web user interface from ABAP code","line":"Producing a web user interface from ABAP code, with the application’s backend language also defining what the user sees and how it behaves.","ai":true,"meta":"Community only"},"capability:abap-unit-testing":{"href":"/capabilities/abap-unit-testing","name":"Unit testing","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Testing application logic, with test doubles for its dependencies","line":"Testing application logic without a running business process — and the test doubles that make dependencies on the database and on framework services tractable.","ai":true,"meta":"SAP and community, unassessed"},"capability:accessibility":{"href":"/capabilities/accessibility","name":"Accessibility","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Making a UI usable with a screen reader or a keyboard alone","line":"Making a UI usable with a screen reader, with a keyboard alone and without seeing the layout: accessible names on controls, a heading order, landmarks, focus handling and announcements. Target size for a finger is touch operation.","ai":true,"meta":"SAP and community, unassessed"},"capability:account-provisioning":{"href":"/capabilities/account-provisioning","name":"Account provisioning","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Setting up cloud accounts, entitlements and access from code","line":"Setting up cloud accounts, their organisational structure, resource entitlements, subscriptions and access assignments so the setup can be repeated from code. Deployment puts an application onto a runtime that this account structure makes available.","ai":true,"meta":"SAP and community, unassessed"},"capability:agent-code-access":{"href":"/capabilities/agent-code-access","name":"Agent access to your code","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Letting a coding agent read and act on your project or system","line":"Letting a coding agent read the project or the system you actually have, reach its model, its objects and its checks, and act on it. In file-based environments that works out of the box; complex systems need dedicated access capabilities. Whatever the environment, the agent also needs project- and framework-specific context, so it understands the thing in front of it rather than guessing from what it remembers of its training data. The transport is incidental: an MCP server, a language server or a CLI answer the same question, and what differs between them is how much of the real thing the agent can see. Distinct from MCP servers, which is a protocol adapter on your own running service, and from agent guidance, which is knowledge handed over as files rather than read from the thing itself.","ai":true,"meta":"SAP and community, unassessed"},"capability:agent-evals":{"href":"/capabilities/agent-evals","name":"Agent evals","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Checking an AI feature still behaves after a model or prompt change","line":"Knowing whether an AI feature still behaves after a model, prompt or schema change. Regression testing for non-deterministic output, against fixtures that reflect real business data.","ai":true,"meta":"SAP and community, unassessed"},"capability:agent-guidance":{"href":"/capabilities/agent-guidance","name":"Agent guidance","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Packaged knowledge that teaches a coding agent a framework","line":"Packaged knowledge you hand a coding agent so it gets a framework right unprompted — skills, rule files, instruction packs. Distinct from agent tooling, which is about building agentic features into your application, and from agent access to your code, where the agent reads the real project instead of being handed a file about it.","ai":true,"meta":"SAP and community, core adopted it"},"capability:agent-systems-access":{"href":"/capabilities/agent-systems-access","name":"Agent access to your systems","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Giving an AI agent access to the systems you run over MCP","line":"Giving an AI agent access to the business data, configuration or operations of systems you run through an MCP server. Serving your application over MCP exposes your own service contract; system access reaches the systems behind it, and one implementation may do both. Development assistance belongs to agent access to your code.","ai":true,"meta":"SAP and community, narrow by design"},"capability:agent-tooling":{"href":"/capabilities/agent-tooling","name":"Agent tooling","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Building an agent into your own application","line":"Building an agent into your own application — the tools it may call, the state it keeps between turns, and the framework it runs in. Distinct from MCP servers, which expose an application to somebody else's agent, and from agent guidance, which is knowledge handed to a coding agent.","ai":true,"meta":"SAP and community, unassessed"},"capability:agent-workspaces":{"href":"/capabilities/agent-workspaces","name":"Agent workspaces","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Workspaces where people direct agents and work with their results","line":"Giving people a workspace to direct agents, retain the context of a task and interact with its results across connected applications. This is the user-facing experience around agents; building their logic belongs to Agent tooling, and controlling their calls belongs to Tool governance.","ai":true,"meta":"SAP only"},"capability:analytic-modelling":{"href":"/capabilities/analytic-modelling","name":"Analytic modelling","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Measures, dimensions and hierarchies an analytical client reads","line":"Defining what an analytical client actually reads — the multi-dimensional layer between stored rows and a chart: measures, dimensions, hierarchies, filters and parameters, and the associations somebody navigates them by. Distinct from analytical queries, which is a service answering the request a chart sends, and from loading a warehouse, which fills the tables underneath it.","ai":true,"meta":"SAP and community, unassessed"},"capability:analytical-models":{"href":"/capabilities/analytical-models","name":"Analytical models","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Marking up a CDS model so an analytical front end reads it as a cube","line":"Marking up a CDS model so an analytical front end can read it as a cube rather than as a list of rows, and serving it over the protocol that front end speaks. Separate from Analytical queries, which is the query shape an OData client issues against the same service: here the question is what the service declares itself to be.","ai":true,"meta":"SAP only"},"capability:analytical-queries":{"href":"/capabilities/analytical-queries","name":"Analytical queries","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Grouped, aggregated reads for analytical clients, run in the database","line":"Grouped, 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.","ai":true,"meta":"SAP only"},"capability:app-hosting":{"href":"/capabilities/app-hosting","name":"App hosting","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Hosting a frontend's built static files behind a login","line":"Where a built frontend lives and what serves it — the static files of a frontend application after the build, reachable behind a login and beside the API it talks to, without a web server of your own.","ai":true,"meta":"SAP only"},"capability:application-runtimes":{"href":"/capabilities/application-runtimes","name":"Application runtimes","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Environments that execute application code","line":"The environments that execute application code and manage its processes, containers or managed language runtime. Getting a build onto one is deployment; serving a frontend’s built static files is app hosting.","ai":true,"meta":"SAP only"},"capability:architecture-diagrams":{"href":"/capabilities/architecture-diagrams","name":"Architecture diagrams","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Drawing a solution's architecture and components","line":"Drawing the architecture and components of a solution so another person can understand their responsibilities and connections. Shared notation makes diagrams readable across teams.","ai":true,"meta":"SAP and community, narrow by design"},"capability:async-processing":{"href":"/capabilities/async-processing","name":"Async processing","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Doing work outside the request that triggered it, with retries","line":"Doing 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.","ai":true,"meta":"SAP and community, narrow by design"},"capability:attachments":{"href":"/capabilities/attachments","name":"Attachments","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Storing uploaded files next to the record they belong to","line":"Storing 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.","ai":true,"meta":"SAP and community, unassessed"},"capability:audit-logging":{"href":"/capabilities/audit-logging","name":"Audit logging","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Recording who touched personal or sensitive data, for auditors","line":"Recording who touched personal or sensitive data, in a form an auditor accepts, without hand-writing it in every handler. It is often confused with application logging, which records what the code did rather than who accessed what.","ai":true,"meta":"SAP only"},"capability:authentication":{"href":"/capabilities/authentication","name":"Authentication","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Establishing who is calling and making that identity available","line":"Establishing who is calling: validating credentials or tokens, resolving the user, and making that identity available to the application. Authorization decides what that identity may do; identity provisioning manages its lifecycle across systems.","ai":true,"meta":"SAP and community, narrow by design"},"capability:authorization":{"href":"/capabilities/authorization","name":"Authorization","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Deciding who may read or change what, down to instance level","line":"Deciding who may read or change what, at service, entity and instance level — role checks, forwarded user context, and restrictions evaluated as query filters rather than after the fact.","ai":true,"meta":"SAP and community, unassessed"},"capability:b2b-message-mapping":{"href":"/capabilities/b2b-message-mapping","name":"B2B message mapping","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Defining and mapping business messages between B2B standards","line":"Defining the structure of business messages exchanged between partners using different standards, and mapping one structure onto another. This includes interface specifications, schemas and transformations; executing them in middleware belongs to integration flows.","ai":true,"meta":"SAP only"},"capability:caching":{"href":"/capabilities/caching","name":"Caching","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Holding the result of an expensive read so the next one is cheap","line":"Holding 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.","ai":true,"meta":"SAP and community, unassessed"},"capability:certificate-management":{"href":"/capabilities/certificate-management","name":"Certificate management","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Keeping trusted and presented TLS certificates current","line":"Keeping the certificates a system trusts and presents over TLS current: importing root and intermediate CAs, requesting and importing its own signed certificate, and replacing one before it expires. Storing and rotating passwords and keys an application reads is secrets rotation.","ai":true,"meta":"SAP and community, unassessed"},"capability:change-promotion":{"href":"/capabilities/change-promotion","name":"Change promotion","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Moving a change from development through test to production","line":"Moving a change through the environments of a landscape, from development through test to production, and knowing which change has reached which environment. A CI/CD pipeline builds and tests on each source change, deployment puts a build onto its runtime, and getting source into git is source control.","ai":true,"meta":"SAP and community, unassessed"},"capability:change-tracking":{"href":"/capabilities/change-tracking","name":"Change tracking","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Keeping a readable business history of changes to a record","line":"Keeping a readable history of what changed on a record, who changed it and when — as business history rather than database journalling.","ai":true,"meta":"SAP and community, unassessed"},"capability:ci-cd":{"href":"/capabilities/ci-cd","name":"CI/CD pipelines","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Pipelines that build, test and deliver on every source change","line":"A pipeline that builds, tests and delivers an application each time its source repository changes, with a build log that shows which step failed. Deployment describes getting the build onto its target runtime.","ai":true,"meta":"SAP only"},"capability:code-metrics":{"href":"/capabilities/code-metrics","name":"Code metrics","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Measuring size, complexity, coupling and cohesion of source code","line":"Measuring source code: its size, the complexity of its conditions, the coupling between classes and the cohesion inside one, and showing where those numbers concentrate across a package. Raising findings against a rule is static analysis.","ai":true,"meta":"SAP and community, unassessed"},"capability:code-search":{"href":"/capabilities/code-search","name":"Searching code in a system","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Finding where a string or name occurs across code in a system","line":"Finding where a string, pattern or name occurs across source code and development objects held in a system. Raising findings against rules is static analysis; reading an individual change is code review.","ai":true,"meta":"SAP and community, unassessed"},"capability:concurrency-control":{"href":"/capabilities/concurrency-control","name":"Concurrency control","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Stopping concurrent edits from silently overwriting each other","line":"Stopping 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.","ai":true,"meta":"SAP and community, unassessed"},"capability:configuration":{"href":"/capabilities/configuration","name":"Configuration","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Per-environment settings without per-environment code","line":"Per-environment settings without per-environment code — profiles, layered configuration, and bindings resolved from the platform at start-up.","ai":true,"meta":"SAP only"},"capability:consumption-monitoring":{"href":"/capabilities/consumption-monitoring","name":"Consumption monitoring","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Tracking what a cloud account consumes, with budget warnings","line":"Knowing 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.","ai":true,"meta":"SAP only"},"capability:content-filtering":{"href":"/capabilities/content-filtering","name":"Content filtering","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Checking model input and output against content rules","line":"Checking what goes into a model and what comes out of it against content rules, and stopping or flagging a request that fails them. Distinct from data masking, which hides values: a filter refuses content.","ai":true,"meta":"SAP only"},"capability:data-cataloguing":{"href":"/capabilities/data-cataloguing","name":"Cataloguing and lineage","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Finding what data exists, what it promises and where it came from","line":"Finding what data exists across the estate and what it promises — catalogs and data products, the contract a consumer can rely on, where a field came from, and what a column actually contains once you profile it. The question asked before modelling starts and again when somebody asks where a number came from.","ai":true,"meta":"SAP and community, unassessed"},"capability:data-import-export":{"href":"/capabilities/data-import-export","name":"Importing and exporting table data","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Getting files into tables and table content back out as files","line":"Getting 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.","ai":true,"meta":"SAP and community, unassessed"},"capability:data-masking":{"href":"/capabilities/data-masking","name":"Data masking","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Replacing personal values in a prompt with placeholders","line":"Replacing the personal or confidential values in a prompt with placeholders before it leaves for a model, and putting them back in the answer. Anonymisation, where the values are gone for good, and pseudonymisation, where they return, are the two forms; which fields count as sensitive is the application's question, not the module's.","ai":true,"meta":"SAP only"},"capability:data-modelling":{"href":"/capabilities/data-modelling","name":"Data modelling","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Defining entities, their relations and the views services consume","line":"Defining the shape of data before anything serves it: entities and their types, how they relate, and the projections and views that services and applications consume.","ai":true,"meta":"SAP and community, unassessed"},"capability:data-privacy":{"href":"/capabilities/data-privacy","name":"Data privacy","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Handling personal data the way the law requires","line":"Doing what the law requires with personal data — knowing which fields are personal, answering a subject's request about them, and deleting them when the reason for holding them expires.","ai":true,"meta":"SAP only"},"capability:database-administration":{"href":"/capabilities/database-administration","name":"Database administration","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Monitoring, users and privileges, backups for a database","line":"Running the database a project uses once it exists: watching its health and performance, managing users and their access privileges, and keeping backups that a recovery can rest on. Connecting an application to the database is database connectors, moving files in and out of tables is importing and exporting table data, and what the instance costs is consumption monitoring.","ai":true,"meta":"SAP only"},"capability:database-connectors":{"href":"/capabilities/database-connectors","name":"Database connectors","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Connecting a data model and its queries to a database","line":"Connecting 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.","ai":true,"meta":"SAP and community, narrow by design"},"capability:debugging":{"href":"/capabilities/debugging","name":"Debugging","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Seeing what running code did between input and result","line":"Seeing what running code did between an input arriving and a result coming out: which code ran, what the values were at each point, and why a value ended up as it did.","ai":true,"meta":"SAP and community, narrow by design"},"capability:dependency-injection":{"href":"/capabilities/dependency-injection","name":"Dependency injection","kind":"capability","glyph":{"type":"coverage","state":"community-only"},"short":"Wiring an object's collaborators from outside it","line":"Wiring an object's collaborators from outside it, so a class can be swapped for another implementation without editing the code that uses it.","ai":true,"meta":"Community only"},"capability:deployment-operator":{"href":"/capabilities/deployment-operator","name":"Deployment and operator","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Automating build and deployment of multi-module projects","line":"Automating the build and deployment of a project with multiple modules: generating deployment descriptors and coordinating build, migration, deployment and validation commands. Deployment describes the target runtime and lifecycle; this concerns the tooling that drives those steps.","ai":true,"meta":"SAP only"},"capability:deployment":{"href":"/capabilities/deployment","name":"Deployment","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Getting an application onto a runtime and keeping it there","line":"Getting an application onto a runtime and keeping it there: build descriptors, deployment topology, service bindings and lifecycle operations. The target runtime determines how the application is packaged and configured.","ai":true,"meta":"SAP and community, narrow by design"},"capability:destinations":{"href":"/capabilities/destinations","name":"Destinations","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Reaching remote systems without addresses or credentials in the code","line":"Reaching 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.","ai":true,"meta":"SAP and community, unassessed"},"capability:document-extraction":{"href":"/capabilities/document-extraction","name":"Document extraction","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Getting structured data out of incoming documents","line":"Getting structured data out of a document somebody sent you — an invoice, a purchase order, a scanned form — instead of having a person key it in. The mirror image of document output, and a different problem from reading a service: the input is a file, the shape is unknown until something reads it, and the answer arrives with a confidence rather than a guarantee.","ai":true,"meta":"SAP only"},"capability:document-output":{"href":"/capabilities/document-output","name":"Document output","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Producing printed forms, PDFs and filled templates for people","line":"Producing a document a person receives — a printed form, a generated PDF, a filled template — and getting it to a printer or a queue rather than returning it as a payload.","ai":true,"meta":"SAP and community, narrow by design"},"capability:documentation":{"href":"/capabilities/documentation","name":"Documentation","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Finding answers in written documentation, and writing what is missing","line":"Finding the answer in what has already been written, and writing it where it has not — first-party documentation made searchable by something other than a person scrolling it, including by an agent, and a document of custom code produced from the code itself.","ai":true,"meta":"SAP and community, unassessed"},"capability:draft-handling":{"href":"/capabilities/draft-handling","name":"Draft handling","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Editing a record over several requests before it becomes real","line":"Letting a user edit a record over several requests before it becomes real — saving unfinished changes, locking, and activating a completed draft.","ai":true,"meta":"SAP and community, narrow by design"},"capability:editor-support":{"href":"/capabilities/editor-support","name":"Editor support","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Editor help with source: completion, navigation, errors, refactoring","line":"Working in source code with the editor helping rather than treating it as text — completion, go-to-definition, inline errors, refactoring and preview.","ai":true,"meta":"SAP and community, narrow by design"},"capability:encryption":{"href":"/capabilities/encryption","name":"Encryption and signing","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Encrypting, decrypting and signing data from application code","line":"Encrypting, decrypting and signing data from application code: a document wrapped for one recipient, a payload signed so its origin can be checked, a value enciphered with a key both sides hold. Encryption of a connection, TLS, is set up in the system and is outside this concern.","ai":true,"meta":"SAP and community, unassessed"},"capability:error-handling":{"href":"/capabilities/error-handling","name":"Error handling","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Turning a failure into a response a client can act on","line":"Turning a failure into a response a client can act on — protocol-correct error payloads, correlation, and a boundary between internal detail and what a caller sees.","ai":true,"meta":"SAP and community, unassessed"},"capability:event-mesh":{"href":"/capabilities/event-mesh","name":"Event Mesh","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Emitting and consuming business events across systems through brokers","line":"Emitting and consuming business events across systems through brokers, including subscriptions and mapping application events to broker topics. Work that must survive a request, including deferred processing and retries, belongs to async processing.","ai":true,"meta":"SAP and community, narrow by design"},"capability:feature-toggles":{"href":"/capabilities/feature-toggles","name":"Feature toggles","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Turning behaviour on and off per tenant or user at runtime","line":"Turning behaviour on and off per tenant or per user at runtime, without redeploying, and knowing which toggles are live. System-level switches for delivered objects and runtime flags for unfinished features share the name.","ai":true,"meta":"SAP and community, narrow by design"},"capability:fiori-annotations":{"href":"/capabilities/fiori-annotations","name":"Fiori annotations","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Describing a service so a Fiori client renders it without UI code","line":"Describing a service so a Fiori client can render it without hand-written UI code — titles, value helps, hierarchies and visibility expressed as model annotations rather than screen logic.","ai":true,"meta":"SAP and community, unassessed"},"capability:frontend-boundary":{"href":"/capabilities/frontend-boundary","name":"Frontend boundary","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Connecting a separately hosted frontend to an application service","line":"Connecting a separately hosted frontend to an application service: authentication, routing, access to backend systems, user identity propagation and tenant isolation across the hosting boundary.","ai":true,"meta":"SAP only"},"capability:frontend-performance":{"href":"/capabilities/frontend-performance","name":"Frontend performance","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Finding why a browser UI is slow to start or respond","line":"Finding why a browser UI is slow to start or to respond, and what to change: how many requests it sends and whether they block each other, how large its bundles are, and which OData round trips it waits on. Distinct from query profiling, which starts at the service and the database rather than at the browser's network log.","ai":true,"meta":"SAP and community, unassessed"},"capability:generative-ui":{"href":"/capabilities/generative-ui","name":"Generative UI","kind":"capability","glyph":{"type":"coverage","state":"unmapped"},"short":"Showing an interface inside an agent conversation","line":"Putting an interface inside an agent conversation: a tool result or an agent's reply shown as controls a person can work in, where text would have been. Two things go by the name. A prebuilt web UI that an MCP tool points to and the host renders in a sandboxed iframe, which the MCP Apps extension specifies, is selected by the model and not generated by it; a user interface rendered from a stream of JSON objects the agent sends, which the A2UI specification describes, is. Generating an application's source at design time is generators.","ai":true,"meta":"Unmapped"},"capability:generators":{"href":"/capabilities/generators","name":"Generators","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Starting a project, and adding pieces to one that runs","line":"Getting from nothing to a project that runs, and from a project that runs to one that has the piece you just decided you need. Two different moments: the first is a one-time decision about layout, the second recurs for the life of the project.","ai":true,"meta":"SAP and community, narrow by design"},"capability:graphql":{"href":"/capabilities/graphql","name":"GraphQL","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Serving the same model over GraphQL instead of OData","line":"Serving the same model over GraphQL instead of OData — one endpoint, the client naming the fields it wants, for consumers who expect that shape rather than an OData one.","ai":true,"meta":"SAP only"},"capability:gui-automation":{"href":"/capabilities/gui-automation","name":"Driving the SAP GUI","kind":"capability","glyph":{"type":"coverage","state":"community-only"},"short":"Operating the SAP GUI programmatically","line":"Operating the SAP GUI programmatically to perform tasks or test interactions through the actual screen. Agent access to your code works with development objects instead of the user interface.","ai":true,"meta":"Community only"},"capability:hana-native-artifacts":{"href":"/capabilities/hana-native-artifacts","name":"Native SAP HANA artifacts","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Using native SAP HANA database objects beside the generated model","line":"Using native SAP HANA database objects alongside an application’s generated data model, including objects and database features the modelling layer cannot express. Choosing a database is database connectors; changing an existing schema is schema evolution.","ai":true,"meta":"SAP only"},"capability:health-checks":{"href":"/capabilities/health-checks","name":"Health checks","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Readiness and liveness checks that mean something for a service","line":"Readiness and liveness that mean something for a service — is the database reachable, are bindings resolved, is the message broker connected — rather than merely whether the process is up.","ai":true,"meta":"SAP only"},"capability:health-data-interoperability":{"href":"/capabilities/health-data-interoperability","name":"Health data interoperability","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Exchanging health data using the HL7 FHIR standard","line":"Exchanging health-related data using the HL7 FHIR standard: FHIR resources profiled and stored for a project's own business and localization needs, reached over REST APIs, and connected to an external system through FHIR-specification messaging rather than a bespoke integration built per source.","ai":true,"meta":"SAP only"},"capability:http-clients":{"href":"/capabilities/http-clients","name":"HTTP clients","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Calling an external HTTP API from application code","line":"Calling an HTTP API outside the system from application code, with the request, the credential and the response handled by a client each time the call is made. Serving HTTP is the other direction, and where the address and the credential are kept is destinations.","ai":true,"meta":"SAP and community, unassessed"},"capability:ide-provisioning":{"href":"/capabilities/ide-provisioning","name":"IDE provisioning","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Getting the IDE and its plugins onto a developer's machine","line":"Getting the IDE onto a developer's machine with the required plugins already in it, at a version the team can name. Distinct from editor support, which is what the editor does once it is there: this is the download, the update site, the install and how the result reaches machines a developer does not administer.","ai":true,"meta":"SAP and community, unassessed"},"capability:identity-provisioning":{"href":"/capabilities/identity-provisioning","name":"Identity provisioning","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Getting users, groups and roles into every system that needs them","line":"Getting users, groups and role assignments into every system that needs them, and out again when a person leaves, through provisioning jobs or SCIM APIs. Authentication answers who is calling one request; provisioning decides whether the user exists in that system at all.","ai":true,"meta":"SAP only"},"capability:in-app-guidance":{"href":"/capabilities/in-app-guidance","name":"In-app guidance","kind":"capability","glyph":{"type":"coverage","state":"community-only"},"short":"Guided tours and contextual help inside an application","line":"Explaining an application from inside it — guided tours, hotspots and contextual help shown next to the screen a user is on, rather than in a separate manual.","ai":true,"meta":"Community only"},"capability:input-validation":{"href":"/capabilities/input-validation","name":"Input validation","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Rejecting bad input before it reaches a handler","line":"Rejecting bad input before it reaches the database. While this can be done manually inside a handler, there are solutions in place to derive type, range, enum and mandatory checks  from the model definitions.","ai":true,"meta":"SAP and community, unassessed"},"capability:integration-flows":{"href":"/capabilities/integration-flows","name":"Integration flows","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Moving and transforming messages between systems in middleware","line":"Moving and transforming messages between systems in middleware instead of in application code: an integration flow with its adapters and mappings, and the runtime it executes on. Reaching a remote system from application code is destinations, and brokering events between systems is Event Mesh.","ai":true,"meta":"SAP only"},"capability:integration-scenario-setup":{"href":"/capabilities/integration-scenario-setup","name":"Integration scenario setup","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Guided, role-assigned setup of connections between systems","line":"Walking through the technical configuration that connects systems — cloud to on-premise, or one cloud solution to another — as a guided, role-assigned checklist rather than a configuration guide followed by hand. Integration flows move and transform the messages once the connection exists; this is the setup that runs before that.","ai":true,"meta":"SAP only"},"capability:job-scheduling":{"href":"/capabilities/job-scheduling","name":"Job scheduling","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Running something later or on a cadence, and knowing it ran","line":"Running something later, or on a cadence, without keeping a process alive to do it — a nightly job, a retry in an hour, a report on the first of the month — and knowing afterwards whether it ran.","ai":true,"meta":"SAP only"},"capability:launchpad-content":{"href":"/capabilities/launchpad-content","name":"Launchpad and site content","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Getting apps, cards and pages in front of users in a launchpad","line":"Getting apps, cards, pages and workspaces in front of users in an application launchpad or portal, including content providers, content packages and access roles. Serving the application’s files is app hosting; extending the surrounding shell is launchpad plugins.","ai":true,"meta":"SAP only"},"capability:launchpad-plugins":{"href":"/capabilities/launchpad-plugins","name":"Launchpad plugins","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Extending an application launchpad's shell","line":"Extending an application launchpad’s shell rather than an individual app: adding header buttons, user-menu entries, frame areas or background behaviour shared across the apps it hosts. A development sandbox for launching an app is a separate concern.","ai":true,"meta":"SAP and community, unassessed"},"capability:linting":{"href":"/capabilities/linting","name":"Linting","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Catching problems in code, models and configuration by rules","line":"Catching in the editor what would otherwise be caught at deploy time, or not at all — problems in source code and models and in the project's configuration, found by rules rather than by review.","ai":true,"meta":"SAP and community, narrow by design"},"capability:llm-integration":{"href":"/capabilities/llm-integration","name":"LLM integration","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Calling a language model with tenant and credential handling solved","line":"Calling a language model from application code with the tenant, destination and credential handling already solved instead using an SDK call with a hand-rolled key.","ai":true,"meta":"SAP and community, narrow by design"},"capability:local-development":{"href":"/capabilities/local-development","name":"Local development","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Running the whole stack on a laptop against real bindings","line":"Running the whole stack on a laptop against real bindings — the service, the UI and the routing in front of it — without deploying to see a change.","ai":true,"meta":"SAP and community, narrow by design"},"capability:localization":{"href":"/capabilities/localization","name":"Localization","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Serving labels, messages and content per user locale","line":"Serving labels, messages and translated content per user locale, including translatable model elements and per-tenant text overrides.","ai":true,"meta":"SAP only"},"capability:location-services":{"href":"/capabilities/location-services","name":"Location services","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Geocoding, base maps and routes for business data","line":"Putting a place on business data from a location provider: an address turned into coordinates or corrected, a base map to draw on, and a route with its distance and duration between two or more points. Storing geometries in the database and querying them there is graph, spatial and document data.","ai":true,"meta":"SAP only"},"capability:logging":{"href":"/capabilities/logging","name":"Logging","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Seeing what a running service did, in a readable form","line":"Seeing what a running service did, in a form something can read afterwards — levels, a formatter that suits a laptop and one that suits a log service.","ai":true,"meta":"SAP only"},"capability:low-code-apps":{"href":"/capabilities/low-code-apps","name":"Low-code apps","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Building an application in a visual editor instead of code","line":"Building an application by arranging UI components, logic flows and formulas in a visual editor instead of writing its code, backend included. Starting a coded project from a template is generators, and building a native mobile client is mobile apps.","ai":true,"meta":"SAP only"},"capability:malware-scanning":{"href":"/capabilities/malware-scanning","name":"Malware scanning","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Checking an uploaded file before anyone can download it","line":"Checking a file somebody uploaded before anyone else can download it — where the scan runs, what happens to the file meanwhile, and who is told when it fails.","ai":true,"meta":"SAP only"},"capability:mcp-servers":{"href":"/capabilities/mcp-servers","name":"Serve your application over MCP","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Exposing application data and operations to agents over MCP","line":"Exposing selected application data and business operations to an AI agent through the Model Context Protocol. An application may also integrate remote services through service integration, connecting its exposed contract with agent access to your systems. Development assistance belongs to agent access to your code.","ai":true,"meta":"SAP and community, narrow by design"},"capability:metadata-publishing":{"href":"/capabilities/metadata-publishing","name":"Metadata publishing","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Describing a service for clients, registries and discovery","line":"Describing a service to something other than a human — service metadata for clients, and machine-readable descriptions for registries and discovery.","ai":true,"meta":"SAP and community, narrow by design"},"capability:mobile-apps":{"href":"/capabilities/mobile-apps","name":"Mobile apps","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Native iOS or Android apps over business data","line":"Building a native iOS or Android app over business data: onboarding, offline sync against an OData service, device features, and the client that runs on the phone. Distinct from a web app opened in a phone's browser; operating a web app with a finger is touch operation.","ai":true,"meta":"SAP and community, unassessed"},"capability:model-visualisation":{"href":"/capabilities/model-visualisation","name":"Model visualisation","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Turning a data or code model into a readable picture","line":"Turning a data or code model into a readable picture of its entities, classes, fields and relationships, so a reader can understand the shape of a domain without opening every source file.","ai":true,"meta":"SAP and community, unassessed"},"capability:multi-model-data":{"href":"/capabilities/multi-model-data","name":"Graph, spatial and document data","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Storing graph, spatial and document data beside the rows","line":"Storing 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.","ai":true,"meta":"SAP only"},"capability:multitenancy":{"href":"/capabilities/multitenancy","name":"Multitenancy","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Serving many tenants from one deployment","line":"Serving many tenants from one deployment — onboarding, tenant-isolated data, per-tenant schema deployment and the operational tooling around it. It is decided once, before anything is built, and narrows the artifacts in almost every capability downstream: most sharply in caching and anything else holding state in process.","ai":true,"meta":"SAP and community, narrow by design"},"capability:notifications":{"href":"/capabilities/notifications","name":"Notifications","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Telling a person something happened when they are not looking","line":"Telling a person something happened when they are not looking at the screen — a notification in the launchpad, an email, a message somewhere they already are.","ai":true,"meta":"SAP and community, narrow by design"},"capability:object-storage":{"href":"/capabilities/object-storage","name":"Object storage","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Storing application files as objects in cloud storage","line":"Storing application files as objects in a bucket or container backed by a cloud storage service. Connecting a file to a business record is the separate Attachments concern.","ai":true,"meta":"SAP only"},"capability:odata":{"href":"/capabilities/odata","name":"OData","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Exposing data and operations through OData","line":"Exposing data and operations through OData, including the service model, metadata and protocol versions clients require. Version differences affect which clients can consume a service and which query features they can use.","ai":true,"meta":"SAP and community, narrow by design"},"capability:openapi":{"href":"/capabilities/openapi","name":"OpenAPI","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Handing a service description to clients and tools","line":"Handing a description of the service to clients and tools — an API portal, a code generator, a partner who wants a contract before they write anything.","ai":true,"meta":"SAP and community, narrow by design"},"capability:operations-automation":{"href":"/capabilities/operations-automation","name":"Operations automation","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Routing alerts and running remediation without someone at the console","line":"Acting on a running landscape without someone at the console: an alert routed to where a person or a system will pick it up, and a command that troubleshoots or remediates when it arrives. Logging, telemetry and health checks observe; this acts on what they report. Running an application's own recurring work is job scheduling.","ai":true,"meta":"SAP only"},"capability:pagination-and-streaming":{"href":"/capabilities/pagination-and-streaming","name":"Pagination and streaming","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Server-driven paging and streaming of large results","line":"Returning results a client can consume without loading everything — server-driven paging, and streaming large binaries rather than buffering them.","ai":true,"meta":"SAP only"},"capability:parallel-processing":{"href":"/capabilities/parallel-processing","name":"Parallel processing","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Splitting one run's work across several work processes","line":"Splitting one run's work across several work processes so that it finishes sooner, and collecting what each part returned before the run goes on. Async processing is the neighbouring concern: work deferred past the request with a guarantee that it eventually happens, where parallel processing is throughput inside a run that waits for its results.","ai":true,"meta":"SAP and community, unassessed"},"capability:platform-migration":{"href":"/capabilities/platform-migration","name":"Platform migration","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Moving an application, integration or database to another platform","line":"Moving an application, integration or database from one platform to another: assessing what exists, converting what tooling supports, and adapting what cannot carry over. Language-level compatibility is a separate concern from moving the platform around an application.","ai":true,"meta":"SAP and community, unassessed"},"capability:plugin-authoring":{"href":"/capabilities/plugin-authoring","name":"Plugin authoring","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Writing a package that extends a framework or runtime","line":"Writing a package that extends a framework or runtime rather than an application that uses it — a reusable extension loaded by its host, and the question you arrive at once solving a problem twice makes you want to solve it once for everyone.","ai":true,"meta":"SAP only"},"capability:pod-plugins":{"href":"/capabilities/pod-plugins","name":"POD plugins","kind":"capability","glyph":{"type":"coverage","state":"community-only"},"short":"Plugins for SAP Digital Manufacturing's Production Operator Dashboard","line":"Extending SAP Digital Manufacturing's Production Operator Dashboard with plugins of your own: a view, a panel or an action that runs inside the operator's POD, packaged as an extension the product loads. Distinct from launchpad plugins, which extend a launchpad's shell around many apps.","ai":true,"meta":"Community only"},"capability:predictive-models":{"href":"/capabilities/predictive-models","name":"Predictive models","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Training, deploying and calling predictive models on tabular data","line":"Training, 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.","ai":true,"meta":"SAP only"},"capability:process-automation":{"href":"/capabilities/process-automation","name":"Process automation","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Modelling and running business processes, forms and bots","line":"Modelling and running a business process: the process flow, the forms people fill in, decision tables, bots for repetitive steps, and dashboards over the instances that run. Starting a process from an application and reacting to it is workflow integration, and the screen a person approves a task on is task and approval UIs.","ai":true,"meta":"SAP only"},"capability:product-maintenance-status":{"href":"/capabilities/product-maintenance-status","name":"Knowing the maintenance status of a release","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Whether a release is still maintained, and until when","line":"Knowing whether a release a solution runs on is still maintained, and until when: which versions get fixes, which get critical fixes only, and when maintenance ends. Upgrading to a newer release once that is known is a different job.","ai":true,"meta":"SAP and community, unassessed"},"capability:prompt-management":{"href":"/capabilities/prompt-management","name":"Prompt management","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Prompt templates stored and versioned apart from the code","line":"Keeping the prompts an application sends to a model as templates with placeholders, stored and versioned apart from the code that calls them, so a change of wording is not a deployment. What people conflate under it: the template filled at runtime, the registry it lives in, and the orchestration step that fills it.","ai":true,"meta":"SAP only"},"capability:query-profiling":{"href":"/capabilities/query-profiling","name":"Query profiling","kind":"capability","glyph":{"type":"coverage","state":"unmapped"},"short":"Finding slow application queries and what caused them","line":"Finding 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.","ai":true,"meta":"Unmapped"},"capability:rate-limiting":{"href":"/capabilities/rate-limiting","name":"Rate limiting","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Capping requests per tenant or caller","line":"Capping how many requests a service will accept per tenant or per caller, so one consumer cannot exhaust a shared deployment, whether enforced by a policy in front of the application or inside its own process.","ai":true,"meta":"SAP and community, unassessed"},"capability:reference-apps":{"href":"/capabilities/reference-apps","name":"Reference apps","kind":"capability","glyph":{"type":"coverage","state":"community-only"},"short":"Whole applications to read rather than snippets to copy","line":"A whole application to read rather than a snippet to copy — somewhere to see how the pieces sit together once there are more than three of them.","ai":true,"meta":"Community only"},"capability:replication":{"href":"/capabilities/replication","name":"Data federation","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Reading data from another system as if it were local","line":"Reading 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.","ai":true,"meta":"SAP and community, narrow by design"},"capability:responsibility-assignment":{"href":"/capabilities/responsibility-assignment","name":"Responsibility assignment","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Resolving who owns a process, document or work item","line":"Resolving who owns a business process, document or work item — a person or a team, from a condition-based rule or from a lookup mapped to an external system — and notifying them, so a framework can ask rather than hard-code an agent. Running the process itself is process automation; the screen the responsible person acts on is task and approval UIs.","ai":true,"meta":"SAP only"},"capability:retrieval-augmented-generation":{"href":"/capabilities/retrieval-augmented-generation","name":"Retrieval-augmented generation","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Grounding a model's answer in data retrieved at question time","line":"Grounding 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.","ai":true,"meta":"SAP and community, unassessed"},"capability:rfc-connectivity":{"href":"/capabilities/rfc-connectivity","name":"RFC connectivity","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Calling ABAP function modules from outside the system over RFC","line":"Calling ABAP function modules from outside the system over RFC, with destinations and connection pooling handled rather than hand-wired on the calling side.","ai":true,"meta":"SAP and community, narrow by design"},"capability:schema-evolution":{"href":"/capabilities/schema-evolution","name":"Schema evolution","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Getting a model change into a database that already holds data","line":"Getting 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.","ai":true,"meta":"SAP and community, narrow by design"},"capability:search":{"href":"/capabilities/search","name":"Search","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Free-text search across an entity, pushed into the database","line":"Free-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.","ai":true,"meta":"SAP and community, unassessed"},"capability:secrets-rotation":{"href":"/capabilities/secrets-rotation","name":"Secrets rotation","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Rotating credentials without downtime or redeployment","line":"Rotating credentials a running service depends on — service keys, destination credentials, API tokens — without downtime and without redeploying. Distinct from storing secrets, which the platform handles.","ai":true,"meta":"SAP only"},"capability:seed-data":{"href":"/capabilities/seed-data","name":"Seed data","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Getting realistic data into a service for development and demos","line":"Getting realistic data into a service so it can be developed and demonstrated — initial data, per-tenant content, and believable volumes for testing.","ai":true,"meta":"SAP and community, narrow by design"},"capability:serialisation":{"href":"/capabilities/serialisation","name":"Serialisation","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Turning typed data into JSON, CSV or protobuf and back","line":"Turning typed in-memory data into a text or binary format such as JSON, CSV or protobuf and reading it back, including the mapping of names and types the language does not do for you. The protocol that carries the payload is a separate concern: an HTTP or OData client moves the bytes, and serialisation decides what they say.","ai":true,"meta":"SAP and community, unassessed"},"capability:server-side-rendering":{"href":"/capabilities/server-side-rendering","name":"Server-side rendering","kind":"capability","glyph":{"type":"coverage","state":"community-only"},"short":"Rendering a UI on the server before it reaches the browser","line":"Rendering a UI on the server before it reaches the browser — first paint without waiting for a client framework to boot, and markup a crawler can read.","ai":true,"meta":"Community only"},"capability:service-composition":{"href":"/capabilities/service-composition","name":"Service composition","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Building one solution from reuse packages other projects published","line":"Building one solution out of parts other projects published: a reuse package brings its models, code, initial data and texts into your project through npm or Maven, you serve what you reference and extend what you import, and the same modules deploy as one application or as several on a shared database. Distinct from service integration, which reaches a service that stays deployed elsewhere, and from tenant extensibility, which is a subscriber extending a running SaaS.","ai":true,"meta":"SAP only"},"capability:service-integration":{"href":"/capabilities/service-integration","name":"Service integration","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Using a remote service as if it were one of your own","line":"Using a service that runs somewhere else as if it were one of your own: its API imported into the model, a proxy that turns a local query into the remote protocol, and a mock that stands in for it on a laptop. Distinct from destinations, which is how the address and the credentials are found, and from replication, which is holding the data locally.","ai":true,"meta":"SAP and community, narrow by design"},"capability:soft-delete":{"href":"/capabilities/soft-delete","name":"Soft delete","kind":"capability","glyph":{"type":"coverage","state":"community-only"},"short":"Deleting a record without removing it","line":"Deleting a record without removing it — flagging the row, recording who deleted it and when, and keeping it out of reads. The question underneath is what DELETE should mean to a client that cannot tell the difference, and what happens to a composition tree when its root is flagged.","ai":true,"meta":"Community only"},"capability:statistical-analysis":{"href":"/capabilities/statistical-analysis","name":"Statistical analysis","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Describing a set of values with statistics","line":"Describing a set of values with numbers: spread, quantiles, correlation, the shape of the distribution they came from, and drawing a sample from a named one. Computed in the application over data it already holds, which is what separates it from analytical queries, where a service answers the grouped read a chart sends, and from predictive models, which train and serve something that predicts a value.","ai":true,"meta":"SAP and community, unassessed"},"capability:status-flows":{"href":"/capabilities/status-flows","name":"Status flows","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Declaring allowed status transitions in the model","line":"Declaring in the model which status transitions an entity may make, so the runtime rejects a transition nobody declared and sets the status itself when the bound action runs, instead of a check written by hand in every handler. Not input validation: that checks a value, this checks a transition. Not workflow integration: that drives an external engine, and this stays inside the model.","ai":true,"meta":"SAP only"},"capability:table-maintenance":{"href":"/capabilities/table-maintenance","name":"Maintaining table entries","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Editing table rows through a generic or generated screen","line":"Editing the rows of a data or configuration table through a generic or generated screen, with value helps, checks and a managed change package, so that no maintenance application is written per table. Looking at what a table holds is browsing table data, even where one transaction does both.","ai":true,"meta":"SAP and community, unassessed"},"capability:task-uis":{"href":"/capabilities/task-uis","name":"Task and approval UIs","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Screens where a person approves a workflow or process task","line":"The screen a person approves something on — a workflow or process task rendered as a form, embedded in an inbox that supplies its context. Distinct from workflow integration, which is about driving the engine: this is the half a human touches, and its hard part is that it cannot run without the engine that normally feeds it.","ai":true,"meta":"SAP only"},"capability:telemetry":{"href":"/capabilities/telemetry","name":"Telemetry","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Traces, metrics and correlation for a running service","line":"Seeing what a running service did — traces across handlers and database calls, metrics, and correlation that survives an async boundary.","ai":true,"meta":"SAP and community, core adopted it"},"capability:temporal-data":{"href":"/capabilities/temporal-data","name":"Temporal data","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Keeping every version of a record valid for a period","line":"Keeping every version of a record that was valid for a period, and reading the one that held at a given moment — the assignment somebody had on the first of March, not the one they have now — without the application filtering time slices by hand.","ai":true,"meta":"SAP only"},"capability:tenant-extensibility":{"href":"/capabilities/tenant-extensibility","name":"Tenant extensibility","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Letting a customer extend a running SaaS model per tenant","line":"Letting a customer extend the model of a running SaaS application with extra fields and entities per tenant, without forking the application, as distinct from extending the application's code for every customer at once.","ai":true,"meta":"SAP and community, unassessed"},"capability:testing":{"href":"/capabilities/testing","name":"Testing","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Proving a service still does what it did, without a deployment","line":"Proving the service still does what it did — against the model and the handlers, without a deployed system and without a database somebody has to keep clean.","ai":true,"meta":"SAP and community, narrow by design"},"capability:third-party-connectors":{"href":"/capabilities/third-party-connectors","name":"Third-party connectors","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Reaching non-SAP cloud applications through prebuilt connectors","line":"Reaching a non-SAP cloud application through a prebuilt connector instead of coding against that vendor's API: the connector holds the credentials and presents the application's resources in one common REST form. Pointing at an endpoint whose API you call yourself is destinations, and moving and mapping the messages is integration flows.","ai":true,"meta":"SAP only"},"capability:tool-governance":{"href":"/capabilities/tool-governance","name":"Tool governance","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Controlling what an agent may call, with an audit trail","line":"Controlling what an agent may call, with which authorisations, and leaving an audit trail of what it did. The authorisation question that MCP exposure raises but does not answer.","ai":true,"meta":"SAP and community, unassessed"},"capability:trading-partner-agreements":{"href":"/capabilities/trading-partner-agreements","name":"Trading partner agreements","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Tracking trading partners and what is set up with each","line":"Keeping track of who business documents are exchanged with and what is set up with each partner: a profile per partner with its contact person, identifiers, communication protocol and B2B standards, an agreement per partner, and one generic flow parameterised from them in place of a flow per partner. What a message looks like and how it maps is B2B message mapping, and executing the exchange is integration flows.","ai":true,"meta":"SAP only"},"capability:transaction-code-lookup":{"href":"/capabilities/transaction-code-lookup","name":"Finding a transaction code","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Getting from a task to the transaction code that starts it","line":"Getting from a task to the code that starts it, and keeping the codes you use within reach. Looking at what a system holds once you are inside one is browsing table data, and driving its screens as a program is GUI automation.","ai":true,"meta":"SAP and community, unassessed"},"capability:transaction-management":{"href":"/capabilities/transaction-management","name":"Transaction management","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Deciding where a unit of work begins and ends","line":"Deciding where a unit of work begins and ends, and what travels with it: the database transaction that commits or rolls back around a request, the user, tenant and locale that every nested call inherits, and the work that must run outside the request in a transaction of its own. Distinct from concurrency control, which is two writers on one record, and from async processing, which is work that survives the commit.","ai":true,"meta":"SAP only"},"capability:typescript-patterns":{"href":"/capabilities/typescript-patterns","name":"TypeScript patterns","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"How an application is arranged once written in TypeScript","line":"How an application is arranged once it is written in TypeScript — where handlers live, what registers them, and how business logic is kept apart from persistence. Distinct from typing, which is about the model being visible to the compiler; this is about the shape of the code around it.","ai":true,"meta":"SAP and community, unassessed"},"capability:typing":{"href":"/capabilities/typing","name":"Typing","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Generated types that make the model visible to the compiler","line":"Making the model visible to the compiler — generated types for entities and events so a rename breaks the build rather than production.","ai":true,"meta":"SAP and community, unassessed"},"capability:ui5-build-tooling":{"href":"/capabilities/ui5-build-tooling","name":"Build and dev-server tooling","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Serving an app locally and building it for deployment","line":"Serving an app locally and building it for deployment — proxying a backend, transpiling, bundling, and shaping the result for whatever will host it.","ai":true,"meta":"SAP and community, narrow by design"},"capability:ui5-custom-controls":{"href":"/capabilities/ui5-custom-controls","name":"Custom controls and libraries","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Custom controls, wrappers and icon fonts packaged for reuse","line":"Extending the set of controls an app is built from: a control of its own, a wrapper around a third-party widget, or an icon font registered with the framework, packaged so another app can reuse it. Distinct from Web Components interop, which brings in standard custom elements, and from generators, which scaffold a control project rather than being one.","ai":true,"meta":"SAP and community, unassessed"},"capability:ui5-data-binding":{"href":"/capabilities/ui5-data-binding","name":"Data binding","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Keeping a control and a model in step in both directions","line":"Keeping a control and a model in step in both directions, including the formatting, type conversion and validation that sit between the two.","ai":true,"meta":"SAP and community, unassessed"},"capability:ui5-dev-server":{"href":"/capabilities/ui5-dev-server","name":"Integrated frontend dev server","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Serving a frontend and its backend services from one local origin","line":"Serving a frontend and its backend services together during development, so they can be reached through one local origin. Serving prebuilt files and integrating a frontend toolchain that assembles resources on demand are different requirements.","ai":true,"meta":"SAP and community, unassessed"},"capability:ui5-flexibility":{"href":"/capabilities/ui5-flexibility","name":"Key-user adaptation","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Changing a delivered app as layered changes that survive upgrades","line":"Changing a delivered app without modifying it — moving, hiding and adding elements as a layered set of changes that survive an upgrade.","ai":true,"meta":"SAP only"},"capability:ui5-routing":{"href":"/capabilities/ui5-routing","name":"Routing and navigation","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Turning a URL hash into a view and back in a single-page app","line":"Turning a URL hash into a view, and a view change back into a URL — so a deep link, a browser back button and a refresh all land where the user expects in a single-page app.","ai":true,"meta":"SAP only"},"capability:ui5-testing":{"href":"/capabilities/ui5-testing","name":"UI5 testing","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Unit, integration and end-to-end tests for UI5 apps","line":"Proving a UI still works — unit tests over controllers and formatters, integration tests that drive real controls, and end-to-end runs against a served app.","ai":true,"meta":"SAP and community, narrow by design"},"capability:ui5-theming":{"href":"/capabilities/ui5-theming","name":"Theming","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Consistent visual identity across controls, including custom themes","line":"Applying a consistent visual identity across every control, including the parameters an app may read and the custom themes an organisation may build.","ai":true,"meta":"SAP only"},"capability:ui5-touch-uis":{"href":"/capabilities/ui5-touch-uis","name":"Touch operation","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Operating an app by finger, stylus or gloved hand","line":"Operating an app with a finger, a stylus or a gloved hand on a tablet, kiosk or shop-floor terminal: targets large enough to hit, and input that does not assume a hardware keyboard. Distinct from responsive layout, which is about the width of the screen rather than what touches it.","ai":true,"meta":"SAP and community, unassessed"},"capability:ui5-typescript":{"href":"/capabilities/ui5-typescript","name":"TypeScript support","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Writing UI5 apps and libraries in TypeScript","line":"Writing apps and libraries in TypeScript — the type definitions, the module syntax the loader expects, and the build step that gets from one to the other.","ai":true,"meta":"SAP and community, narrow by design"},"capability:ui5-web-components":{"href":"/capabilities/ui5-web-components","name":"Web Components interop","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Using standards-based custom elements inside an app","line":"Using standards-based custom elements inside an app, and the question of which control set an app should be built from at all, two concerns that are often answered as one.","ai":true,"meta":"SAP and community, narrow by design"},"capability:value-normalisation":{"href":"/capabilities/value-normalisation","name":"Value normalisation","kind":"capability","glyph":{"type":"coverage","state":"community-only"},"short":"Making stored values consistent regardless of how they were typed","line":"Making stored values consistent regardless of how they were typed — trimming the padding, fixing the case — declared on the model rather than repeated in every handler that writes.","ai":true,"meta":"Community only"},"capability:vulnerability-scanning":{"href":"/capabilities/vulnerability-scanning","name":"Vulnerability scanning","kind":"capability","glyph":{"type":"coverage","state":"core-only"},"short":"Finding known vulnerabilities in an app's open-source dependencies","line":"Finding known vulnerabilities in the open-source components an application depends on, in the project's dependency tree before it is deployed and in the application once it runs, and following each one until it is fixed. Checking a file somebody uploaded is malware scanning, and checking an application's own source for flaws is static analysis.","ai":true,"meta":"SAP only"},"capability:warehouse-loading":{"href":"/capabilities/warehouse-loading","name":"Loading a warehouse","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Getting data into an analytical store and keeping it current","line":"Getting 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.","ai":true,"meta":"SAP and community, unassessed"},"capability:websocket":{"href":"/capabilities/websocket","name":"WebSocket","kind":"capability","glyph":{"type":"coverage","state":"community-only"},"short":"Pushing updates to a browser that already has the page open","line":"Pushing to a browser that already has the page open, rather than making it ask again — the half of a UI that polling imitates badly.","ai":true,"meta":"Community only"},"capability:workflow-integration":{"href":"/capabilities/workflow-integration","name":"Workflow integration","kind":"capability","glyph":{"type":"coverage","state":"core-and-community"},"short":"Driving an external workflow engine and reacting to what it emits","line":"Driving an external workflow or automation engine from an application and reacting to what it emits — triggering runs transactionally and importing the engine’s shape as a typed model.","ai":true,"meta":"SAP and community, core adopted it"},"capability:xml-payloads":{"href":"/capabilities/xml-payloads","name":"XML payloads","kind":"capability","glyph":{"type":"coverage","state":"community-only"},"short":"Accepting, returning and sending XML on a service","line":"Accepting and returning XML on a service, or sending it to one, for a counterpart that cannot speak JSON — usually a B2B partner or a system older than the extension in front of it.","ai":true,"meta":"Community only"},"artifact:1dsag-atc-best-practice-guide":{"href":"/abap/artifacts/1dsag-atc-best-practice-guide","name":"ATC-Best-Practice-Guide","kind":"sample","line":"Companion material to DSAG's German-language ATC best-practice guide: four custom ABAP Test Cockpit check classes for formatting, code rules, header comments and German and English texts, plus snippets.","short":"ATC check classes accompanying DSAG's ATC best-practice guide","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2019-11"},"ai":true,"meta":"independent, abap"},"actor:1dsag":{"href":"/actors/1dsag","name":"DSAG","kind":"org","glyph":{"type":"avatar","name":"DSAG","ring":"independent","src":"/avatars/1dsag.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:1nbuc-mcp-integration-suite":{"href":"/btp/artifacts/1nbuc-mcp-integration-suite","name":"mcp-integration-suite","kind":"mcp-server","line":"An experimental Node MCP server covering the general CPI functions of the Integration Suite, which its author recommends running alongside the TPM server for Trading Partner Management.","short":"MCP server for the general Integration Suite functions","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-12"},"ai":true,"meta":"independent, btp"},"actor:1nbuc":{"href":"/actors/1nbuc","name":"Noah Buchmann","kind":"person","glyph":{"type":"avatar","name":"Noah Buchmann","src":"/avatars/1nbuc.png"},"line":"maintains 2 entries, contributed to 2 entries"},"artifact:1nbuc-mcp-is-tpm":{"href":"/btp/artifacts/1nbuc-mcp-is-tpm","name":"mcp-is-tpm","kind":"mcp-server","line":"A Java MCP server for Trading Partner Management in the Integration Suite, where trading partners, their agreements and their B2B configuration live, paired by its author with the general server.","short":"Java MCP server for Integration Suite Trading Partner Management","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-07"},"ai":true,"meta":"independent, btp"},"artifact:a2a-plugin":{"href":"/cap/artifacts/a2a-plugin","name":"a2a-plugin","kind":"cds-plugin","line":"Exposes an annotated CDS service as an Agent-to-Agent protocol agent — @a2a opts the service in, @a2a.Skill declares what it offers, and an agent handler answers.","short":"Exposes an annotated CDS service as an Agent-to-Agent agent","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"independent, cap"},"artifact:abap-adt-api":{"href":"/abap/artifacts/abap-adt-api","name":"abap-adt-api","kind":"package","line":"A JS/TS client for the ADT resources an ABAP system exposes, so a program outside the system can do against it what the maintainer calls a good share of what the Eclipse tools do.","short":"JS/TS client for the ADT resources of an ABAP system","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, abap"},"actor:marcellourbani":{"href":"/actors/marcellourbani","name":"Marcello Urbani","kind":"person","glyph":{"type":"avatar","name":"Marcello Urbani","src":"/avatars/marcellourbani.png"},"line":"maintains 14 entries, contributed to 21 entries"},"artifact:abap-ai-llm-client":{"href":"/abap/artifacts/abap-ai-llm-client","name":"llm_client","kind":"package","line":"An ABAP client that gives chat-completion LLM APIs one interface for chat messages, structured output and tool calls across ten providers, from OpenAI and Anthropic to OLLAMA and AWS Bedrock.","short":"ABAP client with one interface to chat-completion LLM APIs","chip":{"label":"Repository","tier":"poor","evidence":"archived on GitHub"},"ai":true,"meta":"independent, abap"},"actor:abap-ai":{"href":"/actors/abap-ai","name":"ABAP-AI","kind":"org","glyph":{"type":"avatar","name":"ABAP-AI","ring":"independent","src":"/avatars/abap-ai.png"},"line":"maintains 3 entries","meta":"independent"},"artifact:abap-ai-mcp":{"href":"/abap/artifacts/abap-ai-mcp","name":"abap-ai/mcp","kind":"mcp-server","line":"An MCP server SDK written in ABAP to run natively on the ABAP stack, so an ABAP system can expose its own prompts, resources and tools to an agent from inside itself.","short":"MCP server SDK written in ABAP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"independent, abap"},"artifact:abap-ai-mcp2":{"href":"/abap/artifacts/abap-ai-mcp2","name":"abap-ai/mcp2","kind":"mcp-server","line":"A stateless rewrite of the ABAP MCP server SDK: one ABAP server contract answering both the 2026-07-28 protocol draft and the legacy 2025 versions, with no sessions and no SSE.","short":"Stateless ABAP MCP server SDK for the 2026-07-28 protocol draft","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"independent, abap"},"artifact:abap-cds":{"href":"/abap/artifacts/abap-cds","name":"ABAP CDS","kind":"platform","line":"The modelling layer of ABAP Cloud — view entities, projections and annotations defined above database tables, delivered with the platform rather than installed.","short":"Modelling layer of ABAP Cloud above database tables","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, abap"},"artifact:abap-logger-abap-logger":{"href":"/abap/artifacts/abap-logger-abap-logger","name":"ABAP-Logger","kind":"package","line":"A logging library for ABAP that records messages into the standard Application Log (BC-SRV-BAL) and displays them from there, installed through abapGit on ABAP 702 or higher.","short":"Logging library for ABAP over the Application Log","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"independent, abap"},"actor:abap-logger":{"href":"/actors/abap-logger","name":"ABAP-Logger","kind":"org","glyph":{"type":"avatar","name":"ABAP-Logger","ring":"independent","src":"/avatars/abap-logger.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:abap-observability-tools-abap-log-exporter":{"href":"/abap/artifacts/abap-observability-tools-abap-log-exporter","name":"abap-log-exporter","kind":"app","line":"Exports SAP NetWeaver logs from the Business Application Log to an external log system such as Graylog or Loki, converting entries to GELF or Loki format through a separately configured reader, converter and connector.","short":"Exports Business Application Log entries to Graylog or Loki","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-05"},"ai":true,"meta":"independent, abap"},"actor:abap-observability-tools":{"href":"/actors/abap-observability-tools","name":"abap-observability-tools","kind":"org","glyph":{"type":"avatar","name":"abap-observability-tools","ring":"independent","src":"/avatars/abap-observability-tools.png"},"line":"maintains 2 entries","meta":"independent"},"artifact:abap-observability-tools-abap-metrics-provider":{"href":"/abap/artifacts/abap-observability-tools-abap-metrics-provider","name":"abap-metrics-provider","kind":"app","line":"Exposes predefined or custom metrics from an ABAP stack to a monitoring tool of choice, through a provider and a scraper component that reuse the metrics format of abap-prometheus.","short":"Exposes ABAP stack metrics to a monitoring tool","chip":{"label":"Repository","tier":"poor","evidence":"archived on GitHub"},"ai":true,"meta":"independent, abap"},"artifact:abap-openapi-abap-openapi":{"href":"/abap/artifacts/abap-openapi-abap-openapi","name":"abap-openapi","kind":"generator","line":"Generates ABAP client classes and ICF server stubs from an OpenAPI v3 document, one self-contained global class and interface per definition, through a web client, a Node.js command line or ABAP itself.","short":"Generates ABAP client classes and server stubs from OpenAPI","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:abap-openapi":{"href":"/actors/abap-openapi","name":"abap-openapi","kind":"org","glyph":{"type":"avatar","name":"abap-openapi","ring":"independent","src":"/avatars/abap-openapi.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:abap2ui5-abap2ui5-local":{"href":"/abap/artifacts/abap2ui5-abap2ui5-local","name":"abap2UI5-local","kind":"package","line":"The whole abap2UI5 framework folded into the local classes of one HTTP handler, so an app runs without the framework installed as a package.","short":"abap2UI5 folded into the local classes of one HTTP handler","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"actor:abap2ui5":{"href":"/actors/abap2ui5","name":"abap2UI5","kind":"org","glyph":{"type":"avatar","name":"abap2UI5","ring":"community-org","src":"/avatars/abap2ui5.png"},"line":"maintains 18 entries","meta":"community org"},"artifact:abap2ui5-abap2ui5":{"href":"/abap/artifacts/abap2ui5-abap2ui5","name":"abap2UI5","kind":"package","line":"One ABAP class implementing z2ui5_if_app is the whole app: the browser loads a generic UI5 shell once, and every interaction after that is an HTTP roundtrip back into ABAP.","short":"UI5 apps written as one ABAP class, rendered by a generic shell","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-addons-abap-agent-runtime":{"href":"/abap/artifacts/abap2ui5-addons-abap-agent-runtime","name":"abap-agent-runtime","kind":"mcp-server","line":"An ABAP-native MCP endpoint inside the SAP system: an agent reads the screen of an opted-in abap2UI5 app as structured data, fills its fields and fires its events as the logged-on SAP user.","short":"ABAP-native MCP endpoint that drives opted-in abap2UI5 apps","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"actor:abap2ui5-addons":{"href":"/actors/abap2ui5-addons","name":"abap2UI5-addons","kind":"org","glyph":{"type":"avatar","name":"abap2UI5-addons","ring":"independent","src":"/avatars/abap2ui5-addons.png"},"line":"maintains 21 entries","meta":"independent"},"artifact:abap2ui5-addons-abap-cloud-gui":{"href":"/abap/artifacts/abap2ui5-addons-abap-cloud-gui","name":"abap-cloud-gui","kind":"package","line":"A report-style programming model for abap2UI5: one class produces a selection screen with a WRITE list or an ALV grid, running as a UI5 app on ABAP Cloud as well as on NetWeaver 7.02.","short":"Report-style programming model for abap2UI5 on ABAP Cloud","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:abap2ui5-addons-admin-cockpit":{"href":"/abap/artifacts/abap2ui5-addons-admin-cockpit","name":"admin-cockpit","kind":"app","line":"An abap2UI5 app that shows usage, errors, response times, the draft table and a security traffic light of an abap2UI5 installation.","short":"Usage, error and response-time monitor for abap2UI5","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-addons-config-management":{"href":"/abap/artifacts/abap2ui5-addons-config-management","name":"config-management","kind":"app","line":"Keeps the theme, UI5 bootstrap source, custom CSS and Content-Security-Policy of an abap2UI5 page in database tables instead of in code, with a popup app to edit them.","short":"Theme, CSS and CSP settings of abap2UI5 pages kept in tables","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-addons-custom-controls-customer":{"href":"/abap/artifacts/abap2ui5-addons-custom-controls-customer","name":"custom-controls-customer","kind":"sample","line":"A template repository for a customer's own UI5 artefacts in abap2UI5: an icon font, CSS, a reuse library or a custom control, served from a BSP of their own under the resourceRoot z2ui5_ccc.","short":"Template repository for own UI5 artefacts served to abap2UI5","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-addons-custom-controls":{"href":"/abap/artifacts/abap2ui5-addons-custom-controls","name":"custom-controls","kind":"package","line":"Thirteen custom controls for abap2UI5, a signature pad and a scanner that reads several barcodes at once among them, each one an ABAP builder class with a single render( ) method and all of them shipped in a BSP of their own.","short":"Thirteen custom UI5 controls for abap2UI5 apps","chip":{"label":"Maintenance","tier":"poor","evidence":"81 months since release"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-addons-http-connector":{"href":"/abap/artifacts/abap2ui5-addons-http-connector","name":"http-connector","kind":"app","line":"An add-on that makes the abap2UI5 apps of one ABAP system reachable through another: a thin ICF handler on the consumer system forwards every roundtrip to the source system through an SM59 destination.","short":"Forwards abap2UI5 roundtrips to another system over HTTP","chip":{"label":"Maintenance","tier":"poor","evidence":"132 months since release"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-addons-launchpad-kpi":{"href":"/abap/artifacts/abap2ui5-addons-launchpad-kpi","name":"launchpad-kpi","kind":"package","line":"An OData service and a one-method ABAP interface that put a number from an abap2UI5 app on a SAP Fiori launchpad tile.","short":"Puts a number from an abap2UI5 app on a Fiori launchpad tile","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-addons-layout-management":{"href":"/abap/artifacts/abap2ui5-addons-layout-management","name":"layout-management","kind":"package","line":"An abap2UI5 addon that renders an internal table or a structure as a UI5 table or form with a settings popup, where the user lays it out and saves the result as a layout variant.","short":"Table and form layouts with saved variants for abap2UI5","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:abap2ui5-addons-lock-manager":{"href":"/abap/artifacts/abap2ui5-addons-lock-manager","name":"lock-manager","kind":"package","line":"Holds an SAP lock across the HTTP roundtrips of a stateless abap2UI5 app, by making a background job the owner of the kernel lock and a database registry the record of who holds it.","short":"Holds SAP locks across stateless abap2UI5 roundtrips","chip":{"label":"Maintenance","tier":"poor","evidence":"74 months since release"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-addons-office-addin":{"href":"/abap/artifacts/abap2ui5-addons-office-addin","name":"abap2UI5 for Excel","kind":"app","line":"An Office add-in that runs an abap2UI5 app in Excel's task pane, where the app reads and writes the workbook through the z2ui5.cc.ExcelBridge control.","short":"Office add-in running an abap2UI5 app in Excel's task pane","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-addons-open-source-libs":{"href":"/abap/artifacts/abap2ui5-addons-open-source-libs","name":"abap2UI5-addons/open-source-libs","kind":"sample","line":"Eleven abap2UI5 apps, one per open-source ABAP library, each putting its library to work in the browser on the developer's own system.","short":"Eleven abap2UI5 apps, one per open-source ABAP library","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-addons-popups":{"href":"/abap/artifacts/abap2ui5-addons-popups","name":"abap2UI5-addons/popups","kind":"package","line":"Ready-made dialogs for an abap2UI5 app: confirm, inform, select from a list, file up- and download, table, text edit, PDF, HTML, messages, range, value help and search help, each opened with one factory( ) call.","short":"Ready-made dialogs for abap2UI5 apps","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-addons-rap-ext":{"href":"/abap/artifacts/abap2ui5-addons-rap-ext","name":"rap-ext","kind":"package","line":"Floorplan classes that read a CDS entity's UI annotations at runtime and render a list report, worklist, tree, object page, overview page, value help or action dialog as an abap2UI5 app.","short":"Floorplans rendered from CDS UI annotations as abap2UI5 apps","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-addons-rfc-connector":{"href":"/abap/artifacts/abap2ui5-addons-rfc-connector","name":"rfc-connector","kind":"app","line":"Calls abap2UI5 apps of another system over RFC: an ICF handler on the system the browser talks to forwards each roundtrip through an SM59 destination to the system the apps run on.","short":"Forwards abap2UI5 roundtrips to another system over RFC","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-addons-sapgui":{"href":"/abap/artifacts/abap2ui5-addons-sapgui","name":"sapgui","kind":"app","line":"Thirty classic transactions, SE80 and SE16N among them, rebuilt as abap2UI5 apps and installed with abapGit into a standard ABAP system.","short":"Thirty classic transactions rebuilt as abap2UI5 apps","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:abap2ui5-addons-se16n":{"href":"/abap/artifacts/abap2ui5-addons-se16n","name":"se16n","kind":"app","line":"An abap2UI5 app that browses and filters the content of a table in the browser, on ABAP Cloud systems that have no SE16N as well as on premise.","short":"Table content browser in abap2UI5, for ABAP Cloud and on premise","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:abap2ui5-addons-selection-screen":{"href":"/abap/artifacts/abap2ui5-addons-selection-screen","name":"selection-screen","kind":"package","line":"Select-options with saved variants for an abap2UI5 app, built from a database table name or from an internal table the app passes in.","short":"Select-options with saved variants for abap2UI5 apps","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:abap2ui5-addons-sql-console":{"href":"/abap/artifacts/abap2ui5-addons-sql-console","name":"sql-console","kind":"app","line":"A browser-based SQL console built on abap2UI5, in an Open SQL and a native ADBC variant, that shows a query's result as a filterable table without Eclipse or SAP GUI.","short":"Browser-based SQL console built on abap2UI5","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:abap2ui5-addons-table-content-loader":{"href":"/abap/artifacts/abap2ui5-addons-table-content-loader","name":"abap2UI5-addons/table-content-loader","kind":"app","line":"An abap2UI5 developer tool that moves the content of an ABAP table in and out of JSON, CSV or XLSX files, with a preview before download or saving to the database.","short":"Upload, edit and download ABAP table content as JSON, CSV or XLSX","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:abap2ui5-addons-table-maintenance":{"href":"/abap/artifacts/abap2ui5-addons-table-maintenance","name":"table-maintenance","kind":"app","line":"A browser-based table maintenance UI, built on abap2UI5, for editing custom and customising table entries with no Eclipse or SAP GUI install.","short":"Browser-based table maintenance UI built on abap2UI5","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:abap2ui5-app-template":{"href":"/abap/artifacts/abap2ui5-app-template","name":"app-template","kind":"sample","line":"Starter repository for an abap2UI5 app: one ABAP class with a unit test, abaplint and the abap2UI5 linter run by CI on every push, and the files an agent reads first.","short":"Starter repository for an abap2UI5 app with CI and agent setup","chip":{"label":"Maintenance","tier":"poor","evidence":"179 months since release"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-embed-control":{"href":"/ui5/artifacts/abap2ui5-embed-control","name":"@abap2ui5/embed-control","kind":"package","line":"A UI5 custom control that runs an abap2UI5 app inside a host UI5 app, with the abap2UI5 frontend loaded from the backend the app talks to.","short":"UI5 custom control that runs an abap2UI5 app inside a host app","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"community org, ui5"},"actor:oblomov-dev":{"href":"/actors/oblomov-dev","name":"oblomov-dev","kind":"person","glyph":{"type":"avatar","name":"oblomov-dev","src":"/avatars/oblomov-dev.png"},"line":"maintains 4 entries, contributed to 44 entries"},"artifact:abap2ui5-frontend-webcomponent":{"href":"/abap/artifacts/abap2ui5-frontend-webcomponent","name":"abap2UI5 frontend-webcomponent","kind":"package","line":"An alternative abap2UI5 frontend: one ES module registering <abap2ui5-app>, which renders the views an unchanged abap2UI5 app class sends with UI5 Web Components and no UI5 core.","short":"abap2UI5 frontend rendering with UI5 Web Components","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-frontend":{"href":"/abap/artifacts/abap2ui5-frontend","name":"abap2UI5 frontend","kind":"package","line":"The abap2UI5 frontend as installable ABAP artefacts: per system type one generated branch carrying the BSP or HTTP service with its handler, pulled into the system with abapGit.","short":"abap2UI5 frontend as ABAP artefacts installed with abapGit","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-headless-frontend":{"href":"/abap/artifacts/abap2ui5-headless-frontend","name":"abap2UI5 headless frontend","kind":"package","line":"Plays the frontend's side of the abap2UI5 request/response contract in ABAP, so an app class is driven and asserted on from a plain ABAP Unit test.","short":"Drives abap2UI5 app classes from ABAP Unit tests","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-layout-editor":{"href":"/abap/artifacts/abap2ui5-layout-editor","name":"abap2UI5 Layout Editor","kind":"web-tool","line":"A browser editor that lays out a UI5 view by drag and drop and writes it out as one abap2UI5 app class, pulled into the system with abapGit.","short":"Drag-and-drop UI5 view editor that writes an abap2UI5 app class","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-linter":{"href":"/abap/artifacts/abap2ui5-linter","name":"@abap2ui5/linter","kind":"cli","line":"A command line that checks an abap2UI5 app class together with the UI5 view its builder chain produces, with no SAP system and no UI5 project.","short":"Command-line checker for abap2UI5 app classes and their views","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-mcp-server":{"href":"/abap/artifacts/abap2ui5-mcp-server","name":"@abap2ui5/mcp-server","kind":"mcp-server","line":"An MCP server that puts the abap2UI5 development loop on the machine an agent runs on: check the view the ABAP builds, photograph it, deploy the class into a sandbox, boot the app headless and read the errors.","short":"MCP server for the abap2UI5 check, deploy and run loop","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-mobile-shell":{"href":"/abap/artifacts/abap2ui5-mobile-shell","name":"abap2UI5 mobile shell","kind":"desktop-app","line":"A generic native iOS and Android shell that loads one abap2UI5 endpoint in a WebView and hands the ABAP app the phone's scanner, push token and biometric check through a JavaScript bridge.","short":"Native iOS and Android shell for one abap2UI5 endpoint","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-playground":{"href":"/abap/artifacts/abap2ui5-playground","name":"abap2UI5 Playground","kind":"web-tool","line":"ABAP in the editor on the left and the abap2UI5 app it builds on the right, both inside one browser tab: the framework is transpiled to JavaScript at build time and the class in the editor is compiled when Run is pressed.","short":"In-browser ABAP editor beside the abap2UI5 app it builds","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-protocol":{"href":"/abap/artifacts/abap2ui5-protocol","name":"abap2UI5 protocol","kind":"practice","line":"The abap2UI5 roundtrip written down: a versioned specification of the wire between frontends and backends, JSON Schemas for its messages, and two conformance suites that test either side.","short":"Versioned specification of the abap2UI5 roundtrip protocol","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-samples-controls":{"href":"/abap/artifacts/abap2ui5-samples-controls","name":"abap2UI5/samples-controls","kind":"sample","line":"The UI5 Demo Kit rebuilt in ABAP: the official demo kit samples of ten UI5 libraries as ready-to-run abap2UI5 apps, installed into a system with abapGit.","short":"UI5 Demo Kit samples rebuilt as abap2UI5 apps","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-samples-stack":{"href":"/abap/artifacts/abap2ui5-samples-stack","name":"abap2UI5/samples-stack","kind":"sample","line":"Ten self-contained ABAP packages, each putting an abap2UI5 app in front of one technology the system already runs: OData V2, Smart Controls, RAP with and without draft, business events, ABAP locks, WebSockets, MIME and the Fiori Launchpad.","short":"abap2UI5 apps in front of OData, RAP, events and other technology","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-samples":{"href":"/abap/artifacts/abap2ui5-samples","name":"abap2UI5 samples","kind":"sample","line":"129 abap2UI5 sample apps, one ABAP class each, pulled into a system with abapGit and read in the order the catalogue lists them.","short":"129 abap2UI5 sample apps, one ABAP class each","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-vscode-extension":{"href":"/abap/artifacts/abap2ui5-vscode-extension","name":"abap2UI5 for VS Code","kind":"ide-extension","line":"A VS Code extension for abap2UI5 apps: F9 starts the app class in a preview beside the source, Ctrl+F3 activates the class and reloads it, and the abap2UI5 linter runs in the editor while you type.","short":"VS Code extension to preview, activate and lint abap2UI5 apps","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2ui5-web-abap2ui5":{"href":"/abap/artifacts/abap2ui5-web-abap2ui5","name":"web-abap2UI5","kind":"web-tool","line":"A build pipeline and the page it deploys: the abap2UI5 backend downported, transpiled to JavaScript and webpacked into one script that runs inside a browser tab, with no server and no SAP system behind it.","short":"abap2UI5 transpiled to JavaScript and run in a browser tab","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abap2xlsx-abap2xlsx":{"href":"/abap/artifacts/abap2xlsx-abap2xlsx","name":"abap2xlsx","kind":"package","line":"A library that reads and generates .xlsx Excel workbooks directly from ABAP data, without exporting through a list viewer, installed through abapGit and tested from SAP_ABA 731.","short":"Library that reads and generates Excel spreadsheets from ABAP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"independent, abap"},"actor:abap2xlsx":{"href":"/actors/abap2xlsx","name":"abap2xlsx","kind":"org","glyph":{"type":"avatar","name":"abap2xlsx","ring":"independent","src":"/avatars/abap2xlsx.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:abapcdsgrammar":{"href":"/abap/artifacts/abapcdsgrammar","name":"abapcdsgrammar","kind":"package","line":"An ANTLR4 grammar for ABAP CDS, with the lexer and parser generated from it, so CDS source can be read as a parse tree outside a system.","short":"ANTLR4 grammar, lexer and parser for ABAP CDS","chip":{"label":"Maintenance","tier":"poor","evidence":"80 months since release"},"ai":true,"meta":"independent, abap"},"actor:esjewett":{"href":"/actors/esjewett","name":"Ethan Jewett","kind":"person","glyph":{"type":"avatar","name":"Ethan Jewett","src":"/avatars/esjewett.png"},"line":"maintains 1 entry, contributed to 8 entries"},"artifact:abapchaoliu-abap-jwt-generator":{"href":"/abap/artifacts/abapchaoliu-abap-jwt-generator","name":"abap_jwt_generator","kind":"package","line":"Generates a signed JSON Web Token in ABAP from an explicit header and claim, a stored profile in table ZJWT_PROFILE, or a shared secret, signing through a PSE profile or with the secret.","short":"Generates signed JSON Web Tokens in ABAP","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-02"},"ai":true,"meta":"independent, abap"},"actor:abapchaoliu":{"href":"/actors/abapchaoliu","name":"Chao Liu","kind":"person","glyph":{"type":"avatar","name":"Chao Liu","src":"/avatars/abapchaoliu.png"},"line":"maintains 1 entry, contributed to 2 entries"},"artifact:abapgit-abapgit":{"href":"/abap/artifacts/abapgit-abapgit","name":"abapGit","kind":"app","line":"A Git client written in ABAP that runs inside the system, so objects are cloned, pulled and pushed without leaving it; with no package manager in ABAP, a cloned repository is how code is distributed.","short":"Git client written in ABAP that runs inside the system","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"actor:abapgit":{"href":"/actors/abapgit","name":"abapGit","kind":"org","glyph":{"type":"avatar","name":"abapGit","ring":"community-org","src":"/avatars/abapgit.png"},"line":"maintains 1 entry","meta":"community org"},"artifact:abapify-acds":{"href":"/abap/artifacts/abapify-acds","name":"@abapify/acds","kind":"package","line":"A parser for ABAP CDS DDL source — tokenizer, parser and a typed AST covering tables, structures, simple types, service definitions and metadata extensions.","short":"Parser for ABAP CDS DDL source with a typed AST","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, abap"},"actor:abapify":{"href":"/actors/abapify","name":"abapify","kind":"org","glyph":{"type":"avatar","name":"abapify","ring":"independent","src":"/avatars/abapify.png"},"line":"maintains 9 entries","meta":"independent"},"artifact:abapify-assert":{"href":"/abap/artifacts/abapify-assert","name":"assert","kind":"package","line":"A fluent assertion helper for ABAP Unit tests that wraps cl_abap_unit_assert in chained calls such as assert(x)->equals(y), also usable outside tests through ZCL_ASSERTABLE.","short":"Fluent assertion helper for ABAP Unit tests","chip":{"label":"Maintenance","tier":"poor","evidence":"38 months since release"},"ai":true,"meta":"independent, abap"},"artifact:abapify-codepage":{"href":"/abap/artifacts/abapify-codepage","name":"codepage","kind":"package","line":"A polyfill class, ZCL_ABAP_CODEPAGE, that converts strings to binary and back behind one interface, where Clean Core blocks CL_ABAP_CODEPAGE and older systems lack CL_ABAP_CONV_CODEPAGE.","short":"Polyfill for CL_ABAP_CODEPAGE under Clean Core","chip":{"label":"Maintenance","tier":"poor","evidence":"63 months since release"},"ai":true,"meta":"independent, abap"},"artifact:abapify-fetch-cloud":{"href":"/abap/artifacts/abapify-fetch-cloud","name":"abapify/fetch-cloud","kind":"package","line":"A plugin for the abapify/fetch polyfill that supplies its BAdI implementation for ABAP Cloud, where cl_http_client cannot be used directly; the polyfill is installed first.","short":"Cloud-compatible plugin for the abapify Fetch API polyfill","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-08"},"ai":true,"meta":"independent, abap"},"artifact:abapify-fetch-legacy":{"href":"/abap/artifacts/abapify-fetch-legacy","name":"abapify/fetch-legacy","kind":"package","line":"A legacy-release implementation of the Fetch API interface for outbound HTTP calls from ABAP, plugging into abapify/fetch so the calling code needs no refactoring when it moves to the cloud.","short":"Legacy-release Fetch API implementation for outbound HTTP in ABAP","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2025-02"},"ai":true,"meta":"independent, abap"},"artifact:abapify-fetch":{"href":"/abap/artifacts/abapify-fetch","name":"abapify/fetch","kind":"package","line":"A Fetch API-style polyfill for ABAP: one facade over request, response and destination, with the release-specific HTTP client of cloud or classic systems supplied by a plugin like Cloud fetch.","short":"Fetch API-style HTTP polyfill for cloud and classic ABAP","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2025-02"},"ai":true,"meta":"independent, abap"},"artifact:abapify-json":{"href":"/abap/artifacts/abapify-json","name":"ABAP JSON API","kind":"package","line":"A JSON renderer and parser for ABAP built on the standard identity transformation, adding automatic camelCase conversion and support for polymorphic arrays.","short":"JSON renderer and parser for ABAP with camelCase conversion","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2025-02"},"ai":true,"meta":"independent, abap"},"artifact:abapify-promise":{"href":"/abap/artifacts/abapify-promise","name":"abapify/promise","kind":"package","line":"A Promise and async/await implementation for ABAP, modelled on JavaScript's Promise API, that runs a resolver as a background task and offers all, race, resolve, reject and all_settled.","short":"Promise and async/await implementation for ABAP","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-10"},"ai":true,"meta":"independent, abap"},"artifact:abapify-throw":{"href":"/abap/artifacts/abapify-throw","name":"throw","kind":"package","line":"A minimalistic way to raise an ABAP exception, from a text passed directly or, with no argument, from the system fields a preceding MESSAGE statement filled, as a static method or through an interface.","short":"Raises an ABAP exception from a text or the last system message","chip":{"label":"Maintenance","tier":"poor","evidence":"65 months since release"},"ai":true,"meta":"independent, abap"},"artifact:abapinho-abak":{"href":"/abap/artifacts/abapinho-abak","name":"abaK","kind":"package","line":"A beta library for ABAP constants that lets each program register its own source, a custom table or CSV, XML or JSON content from a URL, standard text, server file or remote system, rather than one shared table.","short":"Library for managing ABAP constants from registered sources","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-05"},"ai":true,"meta":"independent, abap"},"actor:abapinho":{"href":"/actors/abapinho","name":"Abapinho","kind":"org","glyph":{"type":"avatar","name":"Abapinho","ring":"independent","src":"/avatars/abapinho.png"},"line":"maintains 2 entries","meta":"independent"},"artifact:abapinho-abaptimemachine":{"href":"/abap/artifacts/abapinho-abaptimemachine","name":"abapTimeMachine","kind":"app","line":"Shows a whole ABAP object (a class, a function group and the rest) as it stood at a past version, instead of ABAP's native include-by-include compare.","short":"Shows a whole ABAP object as it stood at a past version","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-07"},"ai":true,"meta":"independent, abap"},"artifact:abaplint-abaplint-sci-client":{"href":"/abap/artifacts/abaplint-abaplint-sci-client","name":"abaplint-sci-client","kind":"package","line":"The ABAP-side client that hands objects to the abaplint Server, so the checks of abaplint surface inside SAP Code Inspector, ABAP Test Cockpit and abapGit.","short":"ABAP client surfacing abaplint checks in Code Inspector and ATC","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"actor:abaplint":{"href":"/actors/abaplint","name":"abaplint","kind":"org","glyph":{"type":"avatar","name":"abaplint","ring":"community-org","src":"/avatars/abaplint.png"},"line":"maintains 4 entries","meta":"community org"},"artifact:abaplint-abaplint":{"href":"/abap/artifacts/abaplint-abaplint","name":"abaplint","kind":"cli","line":"Static analysis for ABAP that runs outside a system on serialised source in a repository, so ABAP checks run in a pull request and in CI before the code ever reaches a system.","short":"Static analysis for ABAP source outside a system","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:abaplint-transpiler":{"href":"/abap/artifacts/abaplint-transpiler","name":"@abaplint/transpiler","kind":"build-tool","line":"Transpiles ABAP 7.02 syntax to ES6 JavaScript, so ABAP code and its unit tests run on Node.js in CI without an ABAP system, with optional SQLite, PostgreSQL, Snowflake or SAP HANA drivers.","short":"Transpiles ABAP to JavaScript to run on Node.js","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"community org, abap"},"actor:larshp":{"href":"/actors/larshp","name":"Lars Hvam","kind":"person","glyph":{"type":"avatar","name":"Lars Hvam","src":"/avatars/larshp.png"},"line":"maintains 13 entries, wrote 1 doc, contributed to 92 entries"},"artifact:abaplint-vscode-tabl-ddic":{"href":"/abap/artifacts/abaplint-vscode-tabl-ddic","name":"vscode-tabl-ddic","kind":"ide-extension","line":"A VS Code extension that registers .tabl.ddic files, the DDIC DDL form of an ABAP table definition, as a language of their own with a TextMate grammar for syntax highlighting, and nothing more.","short":"VS Code syntax highlighting for .tabl.ddic table definitions","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"community org, abap"},"artifact:abappm-abap-strust":{"href":"/abap/artifacts/abappm-abap-strust","name":"abapPM/ABAP-Strust","kind":"package","line":"A class-based wrapper around ABAP Trust Management (STRUST) for adding, updating, removing and listing certificates from a program, with installer and updater programs for the certificates a domain needs.","short":"Class-based wrapper around STRUST certificate management","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:abappm":{"href":"/actors/abappm","name":"apm.to","kind":"org","glyph":{"type":"avatar","name":"apm.to","ring":"independent","src":"/avatars/abappm.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:abaptools-abapdomcheck":{"href":"/abap/artifacts/abaptools-abapdomcheck","name":"abapDomCheck","kind":"package","line":"Checks a structure's field values against ABAP domain fixed values and check tables outside the GUI, such as during a data import, answering with a rejected flag and the messages behind it.","short":"Checks field values against domain fixed values and check tables","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2022-04"},"ai":true,"meta":"independent, abap"},"actor:abaptools":{"href":"/actors/abaptools","name":"abapTools","kind":"org","glyph":{"type":"avatar","name":"abapTools","ring":"independent","src":"/avatars/abaptools.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:abat-tao-arc-1-bopf-enh":{"href":"/abap/artifacts/abat-tao-arc-1-bopf-enh","name":"arc-1-bopf-enh","kind":"mcp-server","line":"An extension of four tools for arc-1, with an ABAP service behind it, that lets an agent read and maintain classic BOPF enhancements of SAP standard business objects.","short":"arc-1 extension for reading and maintaining BOPF enhancements","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:abat-tao":{"href":"/actors/abat-tao","name":"abat-TAO","kind":"person","glyph":{"type":"avatar","name":"abat-TAO","src":"/avatars/abat-tao.png"},"line":"maintains 1 entry, contributed to 2 entries"},"artifact:abdulbasitg-cds-numberrange-plugin":{"href":"/cap/artifacts/abdulbasitg-cds-numberrange-plugin","name":"cds-numberrange-plugin","kind":"cds-plugin","line":"A CAP plugin that fills an annotated CDS element with the next number from a named range, optionally with prefix, suffix and padding, keeping the counter in a database entity it adds to the model.","short":"Fills a CDS element from a database-backed number range","chip":{"label":"Maintenance","tier":"fair","evidence":"6 months since release"},"ai":true,"meta":"independent, cap"},"actor:abdulbasitg":{"href":"/actors/abdulbasitg","name":"Abdulbasıt Gülşen","kind":"person","glyph":{"type":"avatar","name":"Abdulbasıt Gülşen","ring":"independent","src":"/avatars/abdulbasitg.png"},"line":"maintains 1 entry, contributed to 1 entry","meta":"independent"},"artifact:abeljohny-zap":{"href":"/abap/artifacts/abeljohny-zap","name":"abeljohny/ZAP","kind":"package","line":"A tiny DSL included into an ABAP report that replaces a SELECT and an ALV call with a pair of macros, _select to read a table and _display to show the result as an ALV list.","short":"Macro DSL turning a one-line select into an ALV list","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-11"},"ai":true,"meta":"independent, abap"},"artifact:abinayaaa-sap-cx-developer-companion":{"href":"/commerce/artifacts/abinayaaa-sap-cx-developer-companion","name":"sap-cx-developer-companion","kind":"skill","line":"An agent skill for SAP Customer Experience work that routes a request to one of three jobs: finding a Commerce Cloud, Sales Cloud or Service Cloud API, writing CDS for a CX extension, or explaining an error.","short":"Agent skill for SAP Customer Experience APIs, CDS and errors","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, commerce"},"actor:abinayaaa":{"href":"/actors/abinayaaa","name":"Abinaya Srinivasan","kind":"person","glyph":{"type":"avatar","name":"Abinaya Srinivasan","src":"/avatars/abinayaaa.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:adam0thman-sap-basis-ops":{"href":"/abap/artifacts/adam0thman-sap-basis-ops","name":"sap-basis-ops","kind":"skill","line":"Basis and technical operations at the OS and database layer — the sysadmin plane every other SAP skill set skips — as runbook skills that emit a source-cited command sequence with its pre- and post-checks.","short":"Runbook skills for Basis operations at the OS and database layer","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:adam0thman":{"href":"/actors/adam0thman","name":"adam0thman","kind":"person","glyph":{"type":"avatar","name":"adam0thman","src":"/avatars/adam0thman.png"},"line":"maintains 1 entry, contributed to 3 entries"},"artifact:aditheos-applicationlogsnotificationtofiori":{"href":"/abap/artifacts/aditheos-applicationlogsnotificationtofiori","name":"aditheos/ApplicationLogsNotificationToFiori","kind":"app","line":"Raises a Fiori launchpad notification when an application log records an error, and the notification opens the Application Logs app (F1487) on that log for review and corrective action.","short":"Fiori launchpad notification for application log errors","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-04"},"ai":true,"meta":"independent, abap"},"actor:aditheos":{"href":"/actors/aditheos","name":"Aditheos Solutions","kind":"person","glyph":{"type":"avatar","name":"Aditheos Solutions","src":"/avatars/aditheos.png"},"line":"maintains 2 entries, contributed to 2 entries"},"artifact:aditheos-attachmentcommentodataservice":{"href":"/abap/artifacts/aditheos-attachmentcommentodataservice","name":"AttachmentCommentODataService","kind":"package","line":"An ABAP OData service that uploads, downloads and deletes attachments and posts and deletes comments on an SAP business object through Generic Object Services, with a demo SAPUI5 app.","short":"ABAP OData service for attachments and comments via GOS","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-04"},"ai":true,"meta":"independent, abap"},"artifact:agiguere-scpmspushnotificationrest-api":{"href":"/abap/artifacts/agiguere-scpmspushnotificationrest-api","name":"agiguere/SCPmsPushNotificationREST_API","kind":"package","line":"ABAP classes that send push notifications from an SAP backend to iOS devices through the REST API of SAP Cloud Platform Mobile Services, reached through an RFC destination on NetWeaver 731 or higher.","short":"ABAP classes sending push notifications to Mobile Services","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2022-04"},"ai":true,"meta":"independent, abap"},"actor:agiguere":{"href":"/actors/agiguere","name":"Alexandre Giguere","kind":"person","glyph":{"type":"avatar","name":"Alexandre Giguere","src":"/avatars/agiguere.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:agraeber-cdsanalyser":{"href":"/abap/artifacts/agraeber-cdsanalyser","name":"cdsanalyser","kind":"app","line":"A search tool that maps SAP database tables and fields to the CDS view entities that expose them, and back, from an index a background job builds, for SAP S/4HANA on-premise or private cloud.","short":"Maps database tables and fields to the CDS views exposing them","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"independent, abap"},"actor:agraeber":{"href":"/actors/agraeber","name":"agraeber","kind":"person","glyph":{"type":"avatar","name":"agraeber","src":"/avatars/agraeber.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:aiadiguru-sf-mcp":{"href":"/successfactors/artifacts/aiadiguru-sf-mcp","name":"SF-MCP","kind":"mcp-server","line":"Sixty-two purpose-built tools over SAP SuccessFactors' OData APIs — employee data, permissions, compliance reports and HR administration, asked for in plain language.","short":"MCP server with 62 tools over SAP SuccessFactors OData APIs","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"independent, successfactors"},"actor:aiadiguru2025":{"href":"/actors/aiadiguru2025","name":"aiadiguru2025","kind":"person","glyph":{"type":"avatar","name":"aiadiguru2025","src":"/avatars/aiadiguru2025.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:akatuoro-vite-plugin-cds":{"href":"/cap/artifacts/akatuoro-vite-plugin-cds","name":"vite-plugin-cds","kind":"cds-plugin","line":"A CAP plugin that serves a Vite app from the app folder through cds watch, makes .cds files importable into the frontend build, and can polyfill enough of Node to run @sap/cds in the browser.","short":"Serves a Vite app through cds watch and imports .cds files","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, cap"},"actor:akatuoro":{"href":"/actors/akatuoro","name":"Johannes Vogt","kind":"person","glyph":{"type":"avatar","name":"Johannes Vogt","ring":"sap-official","src":"/avatars/akatuoro.png"},"line":"maintains 1 entry, created 10 pieces, contributed to 28 entries","meta":"sap official"},"artifact:alaible-dbg-value-statement":{"href":"/abap/artifacts/alaible-dbg-value-statement","name":"dbg_value_statement","kind":"generator","line":"An ABAP Debugger script that turns a variable's structure or table into the VALUE statement that recreates it, with a tree explorer, also callable as a function module from a report.","short":"Debugger script generating a VALUE statement for a variable","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2022-01"},"ai":true,"meta":"independent, abap"},"actor:alaible":{"href":"/actors/alaible","name":"Alex","kind":"person","glyph":{"type":"avatar","name":"Alex","src":"/avatars/alaible.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:albertmink-agentic-abap-evals":{"href":"/abap/artifacts/albertmink-agentic-abap-evals","name":"agentic-abap-evals","kind":"cli","line":"Six ABAP navigation tasks for a coding agent, each with needles and anti-needles that grade only the final answer, and a Node grader that applies them whatever agent stack produced the reply.","short":"ABAP navigation tasks and a grader for coding agents","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"independent, abap"},"actor:albertmink":{"href":"/actors/albertmink","name":"Albert Mink","kind":"person","glyph":{"type":"avatar","name":"Albert Mink","src":"/avatars/albertmink.png"},"line":"maintains 1 entry, contributed to 8 entries"},"artifact:alborghetti-abapfire":{"href":"/abap/artifacts/alborghetti-abapfire","name":"ABAPFire","kind":"package","line":"An ABAP client library for Firebase's Realtime Database REST API, with email-and-password authentication and methods to read, set, update, push and remove data at a path.","short":"ABAP client for Firebase's Realtime Database REST API","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2018-11"},"ai":true,"meta":"independent, abap"},"actor:alborghetti":{"href":"/actors/alborghetti","name":"Francesco","kind":"person","glyph":{"type":"avatar","name":"Francesco","src":"/avatars/alborghetti.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:alokm3hta-star-abap-offstack-testing":{"href":"/abap/artifacts/alokm3hta-star-abap-offstack-testing","name":"abap-offstack-aunit","kind":"skill","line":"An agent skill that bootstraps off-stack ABAP Unit tests and an abaplint gate onto an abapGit-serialised repository, with no live SAP system.","short":"Agent skill for off-stack ABAP Unit tests and an abaplint gate","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"independent, abap"},"actor:alokm3hta-star":{"href":"/actors/alokm3hta-star","name":"alokm3hta-star","kind":"person","glyph":{"type":"avatar","name":"alokm3hta-star","src":"/avatars/alokm3hta-star.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:alwinvandeput-zscv-search-cds-views":{"href":"/abap/artifacts/alwinvandeput-zscv-search-cds-views","name":"alwinvandeput/zscv_search_cds_views","kind":"app","line":"An in-system tool for searching CDS views, started from transaction ZCDS_VIEW_SEARCH and built on CDS views over how CDS views, DDIC views and database tables relate to one another.","short":"In-system search tool for CDS views","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-05"},"ai":true,"meta":"independent, abap"},"actor:alwinvandeput":{"href":"/actors/alwinvandeput","name":"Alwin van de Put","kind":"person","glyph":{"type":"avatar","name":"Alwin van de Put","src":"/avatars/alwinvandeput.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:andre-schaerpf-hammer-core-services":{"href":"/abap/artifacts/andre-schaerpf-hammer-core-services","name":"Hammer Core Services","kind":"app","line":"The ABAP-side component for Hammer, adding a connection to the SAP system, lock handling, SICF service control and abapGit integration.","short":"ABAP-side component for the Hammer editor","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"independent, abap"},"artifact:andre-schaerpf-hammer":{"href":"/abap/artifacts/andre-schaerpf-hammer","name":"Hammer","kind":"desktop-app","line":"A native macOS code editor for ABAP and CDS, with an Object Navigator, Transport Organizer, Data Browser and Gateway Client in the same app as the editor.","short":"Native macOS code editor for ABAP and CDS","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"independent, abap"},"actor:andre-schaerpf":{"href":"/actors/andre-schaerpf","name":"André Schärpf","kind":"person","glyph":{"type":"avatar","name":"André Schärpf","ring":"independent","src":"/avatars/andre-schaerpf.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:andreescocard-hybris-mcp-lite":{"href":"/commerce/artifacts/andreescocard-hybris-mcp-lite","name":"hybris-mcp-lite","kind":"mcp-server","line":"A read-only MCP server that answers questions about a local SAP Commerce Cloud instance by calling HAC, so types, beans, configuration, cronjobs, logs and FlexibleSearch come back in the editor.","short":"Read-only MCP server over a local SAP Commerce Cloud's HAC","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, commerce"},"actor:andreescocard":{"href":"/actors/andreescocard","name":"André Escocard","kind":"person","glyph":{"type":"avatar","name":"André Escocard","src":"/avatars/andreescocard.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:animb1996-cds-data-drift":{"href":"/cap/artifacts/animb1996-cds-data-drift","name":"@animb1996/cds-data-drift","kind":"cli","line":"Compares the CSV files under a CAP project's db/data with the rows in the database bound as its db service, and reports where the two have diverged without writing to either.","short":"Compares a CAP project's CSV data with its database rows","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"independent, cap"},"actor:abasu1996":{"href":"/actors/abasu1996","name":"Anim Basu","kind":"person","glyph":{"type":"avatar","name":"Anim Basu","src":"/avatars/abasu1996.png"},"line":"maintains 1 entry"},"artifact:anishk835-cds-eclipse-plugin":{"href":"/cap/artifacts/anishk835-cds-eclipse-plugin","name":"cds-eclipse-plugin","kind":"ide-extension","line":"Eclipse plugin for the CDS language.","short":"Eclipse plugin for the CDS language","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"independent, cap"},"actor:anishk835":{"href":"/actors/anishk835","name":"Anish Kumar","kind":"person","glyph":{"type":"avatar","name":"Anish Kumar","src":"/avatars/anishk835.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:antonsikidin-zcl-docx":{"href":"/abap/artifacts/antonsikidin-zcl-docx","name":"zcl_docx","kind":"package","line":"An ABAP class that fills a Word .docx template tagged with content controls, with a report, ZDOCX_GET_TYPES, that generates the ABAP types the template needs; the document opens in Word or returns as an xstring.","short":"ABAP class filling a tagged Word .docx template with data","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-01"},"ai":true,"meta":"independent, abap"},"actor:antonsikidin":{"href":"/actors/antonsikidin","name":"AntonSikidin","kind":"person","glyph":{"type":"avatar","name":"AntonSikidin","src":"/avatars/antonsikidin.png"},"line":"maintains 1 entry, contributed to 2 entries"},"artifact:appknight-dump-info":{"href":"/abap/artifacts/appknight-dump-info","name":"dump_info","kind":"app","line":"Displays the variables an ABAP short dump captured, for dumps selected on a selection screen; its documentation does not state which dumps it reads, which releases it runs on or how it installs.","short":"Displays the variables of ABAP short dumps","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-01"},"ai":true,"meta":"independent, abap"},"actor:appknight":{"href":"/actors/appknight","name":"AppKnight","kind":"org","glyph":{"type":"avatar","name":"AppKnight","ring":"independent","src":"/avatars/appknight.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:arc-mcp-adt-ls":{"href":"/abap/artifacts/arc-mcp-adt-ls","name":"@arc-mcp/adt-ls","kind":"package","line":"A TypeScript SDK over adt-ls, the headless language server SAP ships inside ABAP Development Tools for VS Code, so a program drives it without the discovery, JVM and handshake work.","short":"TypeScript SDK over SAP's headless adt-ls language server","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"independent, abap"},"actor:arc-mcp":{"href":"/actors/arc-mcp","name":"ARC MCP","kind":"org","glyph":{"type":"avatar","name":"ARC MCP","ring":"independent","src":"/avatars/arc-mcp.png"},"line":"maintains 9 entries","meta":"independent"},"actor:marianfoo":{"href":"/actors/marianfoo","name":"Marian Zeis","kind":"person","glyph":{"type":"avatar","name":"Marian Zeis","src":"/avatars/marianfoo.png"},"line":"maintains 35 entries, created 25 pieces, contributed to 86 entries"},"artifact:arc-mcp-arc-1-extension-sample":{"href":"/abap/artifacts/arc-mcp-arc-1-extension-sample","name":"arc-1-extension-sample","kind":"sample","line":"A sample arc-1 extension in TypeScript, with no ABAP, whose ten Custom_* tools each show one way the plugin API reaches SAP: ADT and OData reads, an OData write, class and report execution, a custom ICF service and classic RFC.","short":"Sample arc-1 extension in TypeScript with ten custom tools","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:arc-mcp-arc-1-lsp":{"href":"/abap/artifacts/arc-mcp-arc-1-lsp","name":"arc-1-lsp","kind":"mcp-server","line":"An edition of ARC-1 that hands every ADT interaction to SAP's own embedded adt-ls language server instead of a hand-rolled HTTP client.","short":"Edition of ARC-1 that runs ADT calls through adt-ls","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"independent, abap"},"artifact:arc-mcp-arc-1-skills":{"href":"/abap/artifacts/arc-mcp-arc-1-skills","name":"ARC-1 Skills","kind":"skill","line":"Twenty-two SKILL.md files shipped in arc-1's own skills/ directory for RAP scaffolding, unit test generation, clean-core audits and migration paths, loaded on demand by description and namespaced /arc-1:<skill> when installed through the Claude Code plugin.","short":"Twenty-two agent skills shipped with arc-1","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:arc-mcp-arc-1":{"href":"/abap/artifacts/arc-mcp-arc-1","name":"arc-1","kind":"mcp-server","line":"An MCP server in front of the ADT REST API that runs locally and on Cloud Foundry with twelve tools that read, search, write, activate, lint and transport ABAP objects.","short":"MCP server over the ADT REST API for ABAP objects","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, abap"},"artifact:arc-mcp-arc1-abap-bridge":{"href":"/abap/artifacts/arc-mcp-arc1-abap-bridge","name":"arc1-abap-bridge","kind":"package","line":"A VS Code extension between arc-1 and ABAP Development Tools for VS Code, so GitHub Copilot can open an ABAP object by name, diff the inactive version and ask the system whether an edit would be accepted.","short":"VS Code bridge between arc-1 and ADT for VS Code","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"independent, abap"},"artifact:arc-mcp-arc1-adt-ext":{"href":"/abap/artifacts/arc-mcp-arc1-adt-ext","name":"arc1-adt-abap-mcp-ext","kind":"mcp-server","line":"One JAR in Eclipse's dropins that turns on SAP's own ADT MCP server and adds read-only repository tools beside it — so an AI client reads your system without leaving Eclipse.","short":"Eclipse add-on enabling the ADT MCP server with read-only tools","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"independent, abap"},"artifact:arc-mcp-hub":{"href":"/btp/artifacts/arc-mcp-hub","name":"arc-mcp-hub","kind":"mcp-server","line":"A hub on SAP BTP that puts several arc-1 instances, one per SAP system, behind one login and a route each, exchanging the caller's token through a destination so each system still sees the real user.","short":"Hub on SAP BTP putting several arc-1 instances behind one login","chip":{"label":"Repository","tier":"poor","evidence":"archived on GitHub"},"ai":true,"meta":"independent, btp"},"artifact:arc-mcp-xsuaa-auth":{"href":"/btp/artifacts/arc-mcp-xsuaa-auth","name":"@arc-mcp/xsuaa-auth","kind":"package","line":"The client-to-server authentication stack for an MCP server on SAP BTP: an XSUAA OAuth proxy, dynamic client registration, a chained bearer verifier, and a separate entrypoint for per-user principal propagation.","short":"XSUAA authentication stack for an MCP server on SAP BTP","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, btp"},"artifact:architecture-center":{"href":"/btp/artifacts/architecture-center","name":"SAP/architecture-center","kind":"doc-source","line":"The repository the SAP Architecture Center site is built from: SAP's reference architectures, each drawn as editable draw.io diagrams, with Mermaid for flows.","short":"Source repository of SAP's reference architectures","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"actor:sap":{"href":"/actors/sap","name":"SAP","kind":"org","glyph":{"type":"avatar","name":"SAP","ring":"sap-official","src":"/avatars/sap.png"},"line":"maintains 137 entries, wrote 14 docs","meta":"sap official"},"actor:sap-architecture-center":{"href":"/actors/sap-architecture-center","name":"SAP Architecture Center","kind":"org","glyph":{"type":"avatar","name":"SAP Architecture Center","ring":"sap-official","src":"/avatars/sap-architecture-center.png"},"line":"maintains 1 entry, designed 26 reference architectures","meta":"sap official"},"artifact:arnaudbuchholz-ui5-test-runner":{"href":"/ui5/artifacts/arnaudbuchholz-ui5-test-runner","name":"ui5-test-runner","kind":"cli","line":"A standalone command line that runs a UI5 project's QUnit and OPA test pages in parallel browser instances, written for suites too large for one browser, and merges their coverage into one report.","short":"Command line running UI5 QUnit and OPA tests in parallel","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, ui5"},"actor:arnaudbuchholz":{"href":"/actors/arnaudbuchholz","name":"Arnaud Buchholz","kind":"person","glyph":{"type":"avatar","name":"Arnaud Buchholz","src":"/avatars/arnaudbuchholz.png"},"line":"maintains 1 entry, contributed to 2 entries"},"artifact:attilaberencsi-abaprapunmanaged":{"href":"/abap/artifacts/attilaberencsi-abaprapunmanaged","name":"abaprapunmanaged","kind":"sample","line":"A practice repository for the unmanaged RAP scenario: a sales order business object whose behaviour implementation delegates to an existing function group.","short":"Practice repository for the unmanaged RAP scenario","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-02"},"ai":true,"meta":"independent, abap"},"actor:attilaberencsi":{"href":"/actors/attilaberencsi","name":"Attila Berencsi","kind":"person","glyph":{"type":"avatar","name":"Attila Berencsi","src":"/avatars/attilaberencsi.png"},"line":"maintains 5 entries, contributed to 6 entries"},"artifact:attilaberencsi-abaprapunmanagedsave":{"href":"/abap/artifacts/attilaberencsi-abaprapunmanagedsave","name":"abaprapunmanagedsave","kind":"sample","line":"A practice repository for the managed RAP scenario with unmanaged save: a purchase order business object whose SAVE phase and late numbering are written by hand.","short":"Practice repository for managed RAP with unmanaged save","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-02"},"ai":true,"meta":"independent, abap"},"artifact:attilaberencsi-abapthemes":{"href":"/abap/artifacts/attilaberencsi-abapthemes","name":"abapthemes","kind":"ide-extension","line":"Three colour themes for ABAP source in ABAP Development Tools for Eclipse, shipped as an Eclipse plugin and installed from the maintainer's own update site.","short":"Three colour themes for ABAP source in ADT for Eclipse","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"independent, abap"},"artifact:attilaberencsi-abapwulu":{"href":"/abap/artifacts/attilaberencsi-abapwulu","name":"abapwulu","kind":"cli","line":"Rebuilds the where-used index for the ABAP repository objects in one package, optionally with its subpackages, as the report ZSAPDEV_WULU_RUN or as an ADT console class, for sandbox systems.","short":"Refreshes the where-used list for objects in one package","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"independent, abap"},"artifact:attilaberencsi-sapskills":{"href":"/abap/artifacts/attilaberencsi-sapskills","name":"sapskills","kind":"skill","line":"Three agent skills in one repository: Clean ABAP guidance, ADT in VS Code against the Private Cloud Edition, and general guardrails for a coding agent.","short":"Agent skills for Clean ABAP, ADT in VS Code and guardrails","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:atudor2-abap-pwnedpasswords":{"href":"/abap/artifacts/atudor2-abap-pwnedpasswords","name":"abap-pwnedpasswords","kind":"package","line":"Checks from ABAP whether a password appears in the Have I Been Pwned breached-password list, wrapping the Pwned Passwords API V3 in one call that answers with a boolean.","short":"Checks passwords against Have I Been Pwned from ABAP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"independent, abap"},"actor:atudor2":{"href":"/actors/atudor2","name":"Alistair Tudor","kind":"person","glyph":{"type":"avatar","name":"Alistair Tudor","src":"/avatars/atudor2.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:automatizatodo-capforge":{"href":"/cap/artifacts/automatizatodo-capforge","name":"capforge","kind":"mcp-server","line":"An MCP server that scaffolds CAP and CDS for a coding agent and then holds it to cds compile — the agent does not stop until the generated code builds clean.","short":"MCP server scaffolding CAP and CDS checked by cds compile","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"independent, cap"},"actor:automatizatodo":{"href":"/actors/automatizatodo","name":"automatizatodo","kind":"person","glyph":{"type":"avatar","name":"automatizatodo","src":"/avatars/automatizatodo.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:aws-abap-accelerator":{"href":"/abap/artifacts/aws-abap-accelerator","name":"ABAP Accelerator MCP Server","kind":"mcp-server","line":"AWS's ABAP MCP server for Amazon Q Developer and Kiro, deployable locally, in Docker or centrally on ECS Fargate with OAuth principal propagation; its repository is no longer maintained.","short":"AWS's ABAP MCP server for Amazon Q Developer and Kiro","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"partner, abap"},"actor:aws-solutions-library-samples":{"href":"/actors/aws-solutions-library-samples","name":"aws-solutions-library-samples","kind":"org","glyph":{"type":"avatar","name":"aws-solutions-library-samples","ring":"independent","src":"/avatars/aws-solutions-library-samples.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:aws-modernization-agents-for-sap":{"href":"/abap/artifacts/aws-modernization-agents-for-sap","name":"Modernization Agents for SAP on AWS","kind":"app","line":"AWS's suite of agents for SAP modernisation work: custom ABAP converted for S/4HANA, PI/PO interfaces moved to Integration Suite, BW objects moved to SAP Datasphere, deployed into a customer's own AWS account and reached only after registration.","short":"AWS agents for ABAP, PI/PO and BW modernisation work","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"partner, abap"},"actor:aws-for-sap":{"href":"/actors/aws-for-sap","name":"AWS for SAP","kind":"org","glyph":{"type":"avatar","name":"AWS for SAP","ring":"independent","src":"/avatars/aws-for-sap.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:aydin-ozcan-generator-ui5-react-nest":{"href":"/ui5/artifacts/aydin-ozcan-generator-ui5-react-nest","name":"generator-ui5-react-nest","kind":"generator","line":"A Yeoman generator that scaffolds a pnpm monorepo with a UI5 app and a Vite React app, which the UI5 app embeds through a custom control, UI5Nest, rather than an iframe.","short":"Yeoman generator for a UI5 app that loads a React app","chip":{"label":"Maintenance","tier":"poor","evidence":"39 months since release"},"ai":true,"meta":"independent, ui5"},"actor:aydin-ozcan":{"href":"/actors/aydin-ozcan","name":"Aydin Ozcan","kind":"person","glyph":{"type":"avatar","name":"Aydin Ozcan","src":"/avatars/aydin-ozcan.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:b-tocs-abap-btocs-core":{"href":"/abap/artifacts/b-tocs-abap-btocs-core","name":"B-Tocs ABAP SDK","kind":"package","line":"An ABAP package that carries the outbound web service call for an SAP ABAP server, with the utility and security classes it needs under it and one plugin per integration on top.","short":"Web service client and connector layer for calling out of ABAP","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-06"},"ai":true,"meta":"independent, abap"},"actor:b-tocs":{"href":"/actors/b-tocs","name":"B-Tocs.org Community","kind":"person","glyph":{"type":"avatar","name":"B-Tocs.org Community","src":"/avatars/b-tocs.png"},"line":"maintains 6 entries, contributed to 5 entries"},"artifact:b-tocs-abap-btocs-deepl":{"href":"/abap/artifacts/b-tocs-abap-btocs-deepl","name":"abap_btocs_deepl","kind":"package","line":"A plugin for the B-Tocs ABAP SDK that lets an SAP ABAP server translate with DeepL through an SM59 RFC destination, using a DeepL API key, with a demo program for the first call.","short":"DeepL translation plugin for the B-Tocs ABAP SDK","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-02"},"ai":true,"meta":"independent, abap"},"artifact:b-tocs-abap-btocs-libtrl":{"href":"/abap/artifacts/b-tocs-abap-btocs-libtrl","name":"abap_btocs_libtrl","kind":"package","line":"A plugin for the B-Tocs ABAP SDK that lets an SAP ABAP server translate with LibreTranslate through an SM59 RFC destination, against an instance hosted on-premise, on a hyperscaler, on SAP BTP or as SaaS.","short":"LibreTranslate plugin for the B-Tocs ABAP SDK","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-06"},"ai":true,"meta":"independent, abap"},"artifact:b-tocs-abap-btocs-ollama":{"href":"/abap/artifacts/b-tocs-abap-btocs-ollama","name":"abap_btocs_ollama","kind":"package","line":"An ABAP plugin, built on the B-Tocs ABAP SDK, that calls models served by Ollama through an SM59 RFC destination, implementing four of its API endpoints: generate, tags, show and embeddings.","short":"B-Tocs ABAP SDK plugin connecting to Ollama models","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-06"},"ai":true,"meta":"independent, abap"},"artifact:b-tocs-pyapi4abap":{"href":"/abap/artifacts/b-tocs-pyapi4abap","name":"pyapi4abap","kind":"sample","line":"A template that pairs a Python FastAPI service with ABAP demo reports calling it through an SM59 RFC destination, with a step-by-step guide from the first endpoint to a container image.","short":"Template pairing a FastAPI service with ABAP reports that call it","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-05"},"ai":true,"meta":"independent, abap"},"artifact:b-tocs-scec":{"href":"/btp/artifacts/b-tocs-scec","name":"scec","kind":"sample","line":"Docker Compose stacks for the edge side of an SAP BTP scenario: a ThingsBoard IoT stack with components added for an SAP Cloud landscape, and a template that builds a Cloud Connector image from SAP's own download.","short":"Docker Compose IoT edge stack that connects to SAP BTP","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-08"},"ai":true,"meta":"independent, btp"},"artifact:babamba2-abap-mcp-adt-powerup":{"href":"/abap/artifacts/babamba2-abap-mcp-adt-powerup","name":"@mcp-abap-adt/core","kind":"mcp-server","line":"A descendant of the Andreschak and fr0ster servers rebuilt on its own architecture, published as an npm scope and a Claude Code plugin, with Korean and Japanese documentation beside the English.","short":"ABAP ADT MCP server published as an npm scope and plugin","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, abap"},"actor:babamba2":{"href":"/actors/babamba2","name":"paek seunghyun","kind":"person","glyph":{"type":"avatar","name":"paek seunghyun","src":"/avatars/babamba2.png"},"line":"maintains 2 entries, contributed to 2 entries"},"actor:fr0ster":{"href":"/actors/fr0ster","name":"Oleksii Kyslytsia","kind":"person","glyph":{"type":"avatar","name":"Oleksii Kyslytsia","src":"/avatars/fr0ster.png"},"line":"maintains 2 entries, contributed to 2 entries"},"artifact:babamba2-superclaude-for-sap":{"href":"/abap/artifacts/babamba2-superclaude-for-sap","name":"SuperClaude for SAP","kind":"skill","line":"A Claude Code plugin that installs and wires its own ABAP MCP server, then puts a two-layer write guard between the agent and any system profile marked QA or production.","short":"Claude Code plugin with an ABAP MCP server and write guards","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:benjaminweisheit-abap-2-code-charta":{"href":"/abap/artifacts/benjaminweisheit-abap-2-code-charta","name":"BenjaminWeisheit/ABAP-2-CODE-CHARTA","kind":"package","line":"Converts ABAP code metrics into a JSON file for import into Code Charta, a separate visualisation tool that draws the picture; the conversion is the whole of what it does.","short":"Converts ABAP code metrics into Code Charta's JSON format","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-07"},"ai":true,"meta":"independent, abap"},"actor:benjaminweisheit":{"href":"/actors/benjaminweisheit","name":"Benjamin Weisheit","kind":"person","glyph":{"type":"avatar","name":"Benjamin Weisheit","src":"/avatars/benjaminweisheit.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:beraadim-zcl-pdf":{"href":"/abap/artifacts/beraadim-zcl-pdf","name":"zcl_pdf","kind":"package","line":"A standalone ABAP class that draws simple PDFs without Adobe Document Server: text in built-in fonts, text fitted into a box and rectangles, returned as a raw string to store, send or display.","short":"Standalone ABAP class drawing PDFs without Adobe Document Server","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:beraadim":{"href":"/actors/beraadim","name":"Bjørn Espen Raadim","kind":"person","glyph":{"type":"avatar","name":"Bjørn Espen Raadim","src":"/avatars/beraadim.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:biberm-abapparallelizationservice":{"href":"/abap/artifacts/biberm-abapparallelizationservice","name":"ABAPParallelizationService","kind":"package","line":"A generic framework, called from code, for running a function unit, report or method across many parameter combinations in parallel dialog or batch tasks.","short":"Framework for running ABAP work units in parallel tasks","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2022-01"},"ai":true,"meta":"independent, abap"},"actor:biberm":{"href":"/actors/biberm","name":"Michael Biber","kind":"person","glyph":{"type":"avatar","name":"Michael Biber","src":"/avatars/biberm.png"},"line":"maintains 1 entry, contributed to 2 entries"},"artifact:bizhuka-aqo":{"href":"/abap/artifacts/bizhuka-aqo","name":"aqo","kind":"package","line":"A library for defining ABAP application options as a structure or class, with change history, transport integration and a maintenance UI generated from that description, instead of SM30 tables or STVARV.","short":"ABAP application options as a structure with a generated editor","chip":{"label":"Maintenance","tier":"poor","evidence":"54 months since release"},"ai":true,"meta":"independent, abap"},"actor:bizhuka":{"href":"/actors/bizhuka","name":"Birzhan Moldabayev","kind":"person","glyph":{"type":"avatar","name":"Birzhan Moldabayev","src":"/avatars/bizhuka.png"},"line":"maintains 2 entries, contributed to 4 entries"},"artifact:bizhuka-xtt":{"href":"/abap/artifacts/bizhuka-xtt","name":"XTT","kind":"package","line":"An ABAP template engine that merges data, including nested structures, tables and trees, into Excel, Word, HTML and PDF templates prepared in ordinary editors with markers in curly brackets.","short":"ABAP template engine for Excel, Word, HTML and PDF","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:bluefunda-abap-odata-test":{"href":"/abap/artifacts/bluefunda-abap-odata-test","name":"abap-odata-test","kind":"package","line":"An ABAP client library for calling OData services and chaining assertions on the response, such as assert_http_200, for unit tests, ADT console runs and standalone programs; its examples show GET only.","short":"ABAP client for calling and asserting on OData services","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-04"},"ai":true,"meta":"independent, abap"},"actor:bluefunda":{"href":"/actors/bluefunda","name":"BlueFunda","kind":"org","glyph":{"type":"avatar","name":"BlueFunda","ring":"independent","src":"/avatars/bluefunda.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:blumenkuebel-sap-dm-pod2-mcp-server":{"href":"/digital-manufacturing/artifacts/blumenkuebel-sap-dm-pod2-mcp-server","name":"sap-dm-pod2-mcp-server","kind":"mcp-server","line":"An MCP server for SAP Digital Manufacturing POD 2.0 extension development: 23 tools over POD2 pattern docs, the POD2 class API, SAP DM REST and MDO specs and the SAPUI5 API, with five code-generation prompts.","short":"MCP server for SAP Digital Manufacturing POD 2.0 extensions","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, digital-manufacturing"},"actor:blumenkuebel":{"href":"/actors/blumenkuebel","name":"Philipp Domschke","kind":"person","glyph":{"type":"avatar","name":"Philipp Domschke","src":"/avatars/blumenkuebel.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:bothzoli-abap-ioc-container":{"href":"/abap/artifacts/bothzoli-abap-ioc-container","name":"bothzoli/ABAP-IoC-Container","kind":"package","line":"An inversion-of-control container for ABAP, with which collaborators are registered and resolved instead of each call site constructing what it needs; its maintainer calls it a naive implementation.","short":"Inversion-of-control container for ABAP","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-07"},"ai":true,"meta":"independent, abap"},"actor:bothzoli":{"href":"/actors/bothzoli","name":"Zoltan Both","kind":"person","glyph":{"type":"avatar","name":"Zoltan Both","src":"/avatars/bothzoli.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:boy0korea-abap2json":{"href":"/abap/artifacts/boy0korea-abap2json","name":"boy0korea/abap2json","kind":"app","line":"A report that exports ABAP table content to a JSON zip file, per table or per package, imports it back into its table, and compares or copies table content across servers.","short":"Exports and imports ABAP table content as zipped JSON","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"independent, abap"},"actor:boy0korea":{"href":"/actors/boy0korea","name":"Derby","kind":"person","glyph":{"type":"avatar","name":"Derby","src":"/avatars/boy0korea.png"},"line":"maintains 5 entries, contributed to 7 entries"},"artifact:boy0korea-abap2xlsx-helper":{"href":"/abap/artifacts/boy0korea-abap2xlsx-helper","name":"boy0korea/ABAP2XLSX_HELPER","kind":"package","line":"Helper methods over abap2xlsx to download, email or upload a table as Excel, and to convert between Excel, JSON and an ABAP table.","short":"Helper methods over abap2xlsx for Excel, JSON and tables","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"independent, abap"},"artifact:boy0korea-zfpm-tools":{"href":"/abap/artifacts/boy0korea-zfpm-tools","name":"ZFPM_TOOLS","kind":"app","line":"A report that shows the development objects of an FPM hierarchy in one view and edits, copies, deletes, imports and exports the hierarchy as a whole rather than one object at a time.","short":"Edits, copies and transports a whole FPM hierarchy at once","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-09"},"ai":true,"meta":"independent, abap"},"artifact:boy0korea-zwd-calendar-vh":{"href":"/abap/artifacts/boy0korea-zwd-calendar-vh","name":"ZWD_CALENDAR_VH","kind":"package","line":"A value help for date fields in Web Dynpro ABAP screens that shows a calendar view, so the user picks a day from it instead of typing the date.","short":"Web Dynpro ABAP calendar value help for date fields","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-01"},"ai":true,"meta":"independent, abap"},"artifact:boy0korea-zwd-code-scanner":{"href":"/abap/artifacts/boy0korea-zwd-code-scanner","name":"boy0korea/ZWD_CODE_SCANNER","kind":"app","line":"A code scanner for Web Dynpro ABAP, installed as the program ZWD_CODE_SCANNER with a transaction code of its own that starts it and shows the results in a list.","short":"Code scanner for Web Dynpro ABAP","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-06"},"ai":true,"meta":"independent, abap"},"artifact:brandeis-consulting-abap-prc":{"href":"/abap/artifacts/brandeis-consulting-abap-prc","name":"ABAP-PRC","kind":"package","line":"A framework for custom multi-step ABAP processes: a process class declares the states, and the framework runs each document through them and monitors the run.","short":"Framework for multi-step ABAP processes with monitoring","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:brandeis-consulting":{"href":"/actors/brandeis-consulting","name":"Brandeis Consulting","kind":"org","glyph":{"type":"avatar","name":"Brandeis Consulting","ring":"independent","src":"/avatars/brandeis-consulting.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:bryanmcain-zcode-scanner":{"href":"/abap/artifacts/bryanmcain-zcode-scanner","name":"bryanmcain/zcode_scanner","kind":"package","line":"An implicit enhancement to ECC's built-in code scanner, which covers only reports, function modules and classes, adding enhancement implementations, Web Dynpro components, BSP ABAP and form code.","short":"Enhancement extending ECC's code scanner to more object types","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2025-02"},"ai":true,"meta":"independent, abap"},"actor:bryanmcain":{"href":"/actors/bryanmcain","name":"bryanmcain","kind":"person","glyph":{"type":"avatar","name":"bryanmcain","src":"/avatars/bryanmcain.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:btc-ag-featuretoggle":{"href":"/abap/artifacts/btc-ag-featuretoggle","name":"Featuretoggle","kind":"package","line":"A feature toggle framework for ABAP that ships an unfinished feature to production deactivated: toggles declared as class attributes, branched on in code and switched in a UI5 GUI.","short":"Feature toggle framework for ABAP with a UI5 GUI","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2018-05"},"ai":true,"meta":"independent, abap"},"actor:btc-ag":{"href":"/actors/btc-ag","name":"BTC Business Technology Consulting AG","kind":"org","glyph":{"type":"avatar","name":"BTC Business Technology Consulting AG","ring":"independent","src":"/avatars/btc-ag.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:btp-abap-environment":{"href":"/btp/artifacts/btp-abap-environment","name":"SAP BTP ABAP environment","kind":"service","line":"SAP's ABAP runtime on BTP: ABAP systems developed in the ABAP Cloud model on SAP HANA Cloud, for cloud apps, OData services and side-by-side extensions of SAP S/4HANA.","short":"ABAP runtime on BTP for the ABAP Cloud model","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-advanced-event-mesh":{"href":"/btp/artifacts/btp-advanced-event-mesh","name":"SAP Integration Suite, advanced event mesh","kind":"service","line":"An event streaming, event management and monitoring platform for event-driven architecture, offered within SAP Integration Suite.","short":"Event streaming and management platform in Integration Suite","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-agentry":{"href":"/btp/artifacts/btp-agentry","name":"Agentry","kind":"service","line":"The SAP BTP service for developing, testing and operating Agentry mobile applications, which take the functions of an SAP back-end system to mobile users.","short":"BTP service for building and running Agentry mobile apps","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-ai-core":{"href":"/btp/artifacts/btp-ai-core","name":"SAP AI Core","kind":"service","line":"SAP's AI service on BTP: the runtime for AI assets, and through the Generative AI Hub inside it the access to foundation models, the orchestration service with its templating, masking, filtering and grounding modules, the Prompt Registry and Document Grounding.","short":"AI runtime on BTP with the Generative AI Hub","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-ai-launchpad":{"href":"/btp/artifacts/btp-ai-launchpad","name":"SAP AI Launchpad","kind":"service","line":"The SaaS front end over SAP AI Core on BTP: a Model Library, Grounding Management for document pipelines, Workspaces that connect AI runtimes, and ML Operations for the lifecycle of a scenario.","short":"SaaS front end over SAP AI Core","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-alert-notification":{"href":"/btp/artifacts/btp-alert-notification","name":"SAP Alert Notification service for SAP BTP","kind":"service","line":"A BTP service with one API for publishing alerts and subscribing to them: built-in events about BTP resources and an application's own, delivered to a communication channel or monitoring tool.","short":"Publishing and subscribing to alerts about BTP resources and apps","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-analytics-cloud":{"href":"/btp/artifacts/btp-analytics-cloud","name":"SAP Analytics Cloud","kind":"service","line":"SAP's SaaS front end for analytics: business intelligence, planning and predictive in one product, and the place a Datasphere analytic model is meant to end up being read.","short":"SaaS for business intelligence, planning and predictive analytics","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-api-composition":{"href":"/btp/artifacts/btp-api-composition","name":"API Composition","kind":"service","line":"One API over the business data in a landscape: a business data graph queried with OData V4 or GraphQL, instead of each source system's own API.","short":"Business data graph queried with OData V4 or GraphQL","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-api-management":{"href":"/btp/artifacts/btp-api-management","name":"API Management","kind":"service","line":"API proxies in front of backend services, with security and traffic management policies attached to them, and Developer Hub where consumers subscribe.","short":"API proxies with security and traffic policies and Developer Hub","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-application-autoscaler":{"href":"/btp/artifacts/btp-application-autoscaler","name":"Application Autoscaler","kind":"service","line":"A Cloud Foundry service that raises or lowers the number of an application's instances by the scaling rules and schedules in a policy the developer defines.","short":"Scales Cloud Foundry app instances by policy rules and schedules","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-application-frontend":{"href":"/btp/artifacts/btp-application-frontend","name":"SAP Application Frontend service","kind":"service","line":"One managed entry point that hosts a built frontend, serves its static files and routes its backend calls — subscribed in the cockpit rather than deployed into a runtime.","short":"Managed hosting and routing for built frontends","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-application-logging":{"href":"/btp/artifacts/btp-application-logging","name":"SAP Application Logging service for SAP BTP","kind":"service","line":"Collects an application's log lines from Cloud Foundry or Kyma into a searchable Kibana, for the retention the plan sets.","short":"Collects Cloud Foundry or Kyma logs into a searchable Kibana","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-application-vulnerability-report":{"href":"/btp/artifacts/btp-application-vulnerability-report","name":"Application Vulnerability Report","kind":"service","line":"A BTP service that tracks vulnerabilities in the open-source components of applications deployed in a BTP landscape, with an OData API for taking the report into ticketing systems.","short":"Tracks vulnerabilities in open-source components of BTP apps","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-ase":{"href":"/btp/artifacts/btp-ase","name":"SAP ASE Service","kind":"service","line":"SAP ASE database systems and tenant databases on BTP with SAP running the platform operations, used from Java applications on BTP or on premise over SQL, JPA and JDBC.","short":"Managed SAP ASE databases on BTP for Java applications","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-audit-log":{"href":"/btp/artifacts/btp-audit-log","name":"SAP Audit Log service","kind":"service","line":"Ingests compliance audit data from BTP services and applications and keeps it for ninety days by default; retrieval and longer retention are separate services.","short":"Ingests and retains compliance audit data from BTP","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-authorization-and-trust-management":{"href":"/btp/artifacts/btp-authorization-and-trust-management","name":"SAP Authorization and Trust Management service","kind":"service","line":"The OAuth server behind a BTP application: issues the JWT the app checks, holds the scopes and role collections it checks against, and brokers trust to an identity provider. Bound, never installed.","short":"OAuth server issuing JWTs and holding scopes for BTP apps","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-automation-pilot":{"href":"/btp/artifacts/btp-automation-pilot","name":"SAP Automation Pilot","kind":"service","line":"A BTP service that runs operations commands: catalogues SAP ships for BTP DevOps scenarios and commands a team composes, started by hand, on a schedule or by an event.","short":"Runs operations commands on BTP by hand, schedule or event","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-build-apps":{"href":"/btp/artifacts/btp-build-apps","name":"SAP Build Apps","kind":"service","line":"SAP's low-code platform for web and native mobile applications, built by drag and drop, with no-code backends and access to SAP systems through BTP authentication and destinations.","short":"Low-code platform for web and native mobile apps","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-build-code":{"href":"/btp/artifacts/btp-build-code","name":"SAP Build Code","kind":"service","line":"SAP's development environment on BTP for SAPUI5, SAP Fiori, mobile and CAP applications that run on the SAP BTP, Cloud Foundry Runtime, in which Joule generates models, services, logic, tests and apps.","short":"Development environment on BTP for UI5, Fiori, mobile and CAP","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-build-process-automation":{"href":"/btp/artifacts/btp-build-process-automation","name":"SAP Build Process Automation","kind":"service","line":"SAP's low-code and no-code tool for business processes: graphical process models, drag-and-drop forms, decision tables and robotic process automation bots, with dashboards over running process instances.","short":"Low-code and no-code tool for business processes and RPA bots","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-build-work-zone-advanced":{"href":"/btp/artifacts/btp-build-work-zone-advanced","name":"SAP Build Work Zone, advanced edition","kind":"service","line":"A BTP service for business sites and digital workspaces: one role-based entry point to SAP and third-party apps, processes, tasks and web content, with blogs, wikis, feeds and other collaboration beside them.","short":"Business sites and digital workspaces with collaboration tools","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-build-work-zone-standard":{"href":"/btp/artifacts/btp-build-work-zone-standard","name":"SAP Build Work Zone, standard edition","kind":"service","line":"A role-based business site on BTP that puts SAP, custom-built and third-party applications and extensions, cloud and on premise, behind one point of access.","short":"Role-based business site for SAP and third-party apps","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-business-application-studio":{"href":"/btp/artifacts/btp-business-application-studio","name":"SAP Business Application Studio","kind":"service","line":"SAP's development environment for business applications, delivered as a cloud service and opened in a browser, where work happens in preconfigured dev spaces.","short":"Browser-based development environment with dev spaces","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-business-data-cloud":{"href":"/btp/artifacts/btp-business-data-cloud","name":"SAP Business Data Cloud","kind":"service","line":"SAP's umbrella over the data estate: installed intelligent content and data products, a governed catalog they are published through, and a path out to SAP Databricks.","short":"Data products, a governed catalog and a path to SAP Databricks","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-cloud-application-event-hub":{"href":"/btp/artifacts/btp-cloud-application-event-hub","name":"SAP Cloud Application Event Hub","kind":"service","line":"Distributes the business events SAP cloud applications publish to the other SAP cloud applications in a landscape, with subscriptions managed in its own UI and no topics or queues to configure.","short":"Distributes business events between SAP cloud applications","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-cloud-foundry-runtime":{"href":"/btp/artifacts/btp-cloud-foundry-runtime","name":"SAP BTP, Cloud Foundry Runtime","kind":"service","line":"The Cloud Foundry runtime of SAP BTP: memory for applications in a Cloud Foundry org, run from SAP's Java, Node.js and Python buildpacks or community buildpacks and managed with the standard Cloud Foundry tools.","short":"Cloud Foundry runtime of SAP BTP for polyglot applications","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-cloud-identity-services":{"href":"/btp/artifacts/btp-cloud-identity-services","name":"Cloud Identity Services","kind":"service","line":"Identity Authentication and Identity Provisioning as one tenant: the login, the user store or the federation to a corporate identity provider, and the provisioning of users into whatever sits behind it.","short":"Identity Authentication and Identity Provisioning as one tenant","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-cloud-integration-automation":{"href":"/btp/artifacts/btp-cloud-integration-automation","name":"Cloud Integration Automation","kind":"service","line":"A guided, role-based workflow that partially automates the technical configuration steps needed to integrate an SAP cloud solution with on-premise and other SAP cloud solutions.","short":"Guided workflow for configuring SAP cloud solution integration","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-cloud-integration":{"href":"/btp/artifacts/btp-cloud-integration","name":"Cloud Integration","kind":"service","line":"Builds and runs integration flows that process, route and map messages between cloud and on-premise systems, SAP and non-SAP, through prebuilt adapters; available only under an SAP Integration Suite plan.","short":"Builds and runs integration flows between cloud and on premise","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-cloud-logging":{"href":"/btp/artifacts/btp-cloud-logging","name":"SAP Cloud Logging","kind":"service","line":"An instance-based observability service built on OpenSearch that stores and analyses logs, metrics and traces from Cloud Foundry, Kyma, Kubernetes and other runtime environments.","short":"OpenSearch-based store for logs, metrics and traces","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-cloud-management":{"href":"/btp/artifacts/btp-cloud-management","name":"SAP Cloud Management Service for SAP BTP","kind":"service","line":"REST APIs for the administration of a BTP account: directories and subaccounts, entitlements and quotas, subscriptions to multitenant applications, environment instances, and the events those operations raise.","short":"REST APIs for administering a BTP account","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-cloud-portal":{"href":"/btp/artifacts/btp-cloud-portal","name":"SAP Cloud Portal Service","kind":"service","line":"SAP's BTP service for role-based portal sites: pages, apps and widgets behind single sign-on for employees, customers and partners, with content from SAP products and other providers.","short":"Role-based portal sites with pages, apps and widgets","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-cloud-transport-management":{"href":"/btp/artifacts/btp-cloud-transport-management","name":"SAP Cloud Transport Management","kind":"service","line":"Moves software deliverables between SAP BTP accounts along a modelled landscape of transport nodes and routes: Multitarget Application archives, and application-specific content such as SAP Cloud Integration iFlows.","short":"Moves MTA archives and content between SAP BTP accounts","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-connectivity":{"href":"/btp/artifacts/btp-connectivity","name":"SAP Connectivity service","kind":"service","line":"The proxy through which a cloud application reaches an on-premise system behind a Cloud Connector — HTTP, RFC and raw sockets — without that system being exposed.","short":"Proxy from cloud apps to on-premise systems via Cloud Connector","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-content-agent":{"href":"/btp/artifacts/btp-content-agent","name":"SAP Content Agent Service","kind":"service","line":"A BTP service that assembles content from other BTP services into an MTAR with its dependencies, then downloads it, exports it to a transport queue or imports it into another subaccount.","short":"Assembles BTP service content into an MTAR for transport","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-continuous-integration-and-delivery":{"href":"/btp/artifacts/btp-continuous-integration-and-delivery","name":"SAP Continuous Integration and Delivery","kind":"service","line":"A BTP service that runs SAP's predefined CI/CD pipelines for designated SAP development projects, building, testing and deploying the changes pushed to a connected Git repository.","short":"Predefined CI/CD pipelines for SAP development projects","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-credential-store":{"href":"/btp/artifacts/btp-credential-store","name":"SAP Credential Store","kind":"service","line":"A vault for an application's passwords, keys and keyrings, reached over a REST API with a binding — so a secret is fetched at runtime and rotated in one place, never shipped in an environment variable.","short":"Vault for an application's passwords, keys and keyrings","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-custom-domain":{"href":"/btp/artifacts/btp-custom-domain","name":"SAP Custom Domain Service","kind":"service","line":"Exposes a BTP application publicly under the customer's own domain instead of the default subdomain, with the TLS/SSL certificate and TLS configuration that domain is served with.","short":"Serves BTP applications under the customer's own domain","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-customer-identity-and-access-management":{"href":"/btp/artifacts/btp-customer-identity-and-access-management","name":"SAP Customer Identity and Access Management for B2C","kind":"service","line":"SAP's customer identity service: registration, login and consent for the users of a company's websites and apps, kept in one profile per customer, with regional data storage and risk-based authentication as options.","short":"Registration, login and consent for customer-facing sites","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-data-attribute-recommendation":{"href":"/btp/artifacts/btp-data-attribute-recommendation","name":"Data Attribute Recommendation","kind":"service","line":"Trains and deploys machine learning models that classify records such as products or users into categories and predict a missing numerical attribute from free text, numbers and categories, over a REST API.","short":"ML models that classify records and predict attributes","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-data-privacy-integration":{"href":"/btp/artifacts/btp-data-privacy-integration","name":"SAP Data Privacy Integration","kind":"service","line":"A reuse service whose APIs an application calls for its data privacy duties: retention rules and deletion at the end of purpose, reports of the personal data held, and anonymisation of unstructured data.","short":"APIs for retention, deletion and personal data reports","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-data-quality-management-location-data":{"href":"/btp/artifacts/btp-data-quality-management-location-data","name":"SAP Data Quality Management, microservices for location data","kind":"service","line":"A BTP service of APIs for address cleansing, geocoding, reverse geocoding and type-ahead address suggestions, embedded into a business process or application.","short":"APIs for address cleansing, geocoding and suggestions","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-data-retention-manager":{"href":"/btp/artifacts/btp-data-retention-manager","name":"SAP Data Retention Manager","kind":"service","line":"A BTP service that holds residence and retention rules for applications' personal and transactional data, and triggers blocking, deletion, archiving and destruction.","short":"Retention rules triggering blocking, deletion and archiving","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-datasphere":{"href":"/btp/artifacts/btp-datasphere","name":"SAP Datasphere","kind":"service","line":"SAP's cloud data warehouse: spaces, modelled views and analytic models over data brought in or federated from source systems, with the business context carried along rather than rebuilt.","short":"Cloud data warehouse with spaces, views and analytic models","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-destination":{"href":"/btp/artifacts/btp-destination","name":"SAP Destination service","kind":"service","line":"Named, credentialed addresses of other systems, resolved at runtime — so an application holds no URL and no secret of its own, and the same code reaches a different system in every landscape.","short":"Named, credentialed addresses of other systems resolved at runtime","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-document-ai":{"href":"/btp/artifacts/btp-document-ai","name":"SAP Document AI","kind":"service","line":"Extracts header fields and line items from invoices, payment advices, purchase orders and custom document types, as structured data over a REST API — the extraction is the service's, the schema can be yours.","short":"Extracts header fields and line items from business documents","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-document-management-application":{"href":"/btp/artifacts/btp-document-management-application","name":"SAP Document Management service, application option","kind":"service","line":"A standalone, ready-to-use web application for enterprise content, with file and folder management, viewers, versioning and status, over SAP's own repository or a CMIS-compliant one.","short":"Ready-to-use web application for enterprise content","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-document-management-integration":{"href":"/btp/artifacts/btp-document-management-integration","name":"SAP Document Management service, integration option","kind":"service","line":"A BTP service of APIs and a reusable UI5 component for adding document management, with folders, versions and status, to a business application over SAP's repository or a CMIS-compliant one.","short":"APIs and a UI5 component for document management in apps","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-dynatrace-agent-activation":{"href":"/btp/artifacts/btp-dynatrace-agent-activation","name":"Agent Activation for Dynatrace Service for SAP BTP","kind":"service","line":"Injects the Dynatrace agent into Java applications on SAP BTP, so their metrics, events and end-to-end traces go to a Dynatrace SaaS monitoring environment the customer already runs.","short":"Injects the Dynatrace agent into Java applications on SAP BTP","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-event-mesh":{"href":"/btp/artifacts/btp-event-mesh","name":"Event Mesh","kind":"service","line":"Managed queues and topics over AMQP, MQTT and a REST gateway, and the bus SAP's own applications publish their business events to.","short":"Managed queues and topics over AMQP, MQTT and REST","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-feature-flags":{"href":"/btp/artifacts/btp-feature-flags","name":"SAP Feature Flags service","kind":"service","line":"Boolean and string flags toggled in a dashboard and read by an application at runtime over a binding, with a cache in the client so a flip does not need a deploy or a round-trip per check.","short":"Boolean and string flags read by applications at runtime","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-forms-service-by-adobe":{"href":"/btp/artifacts/btp-forms-service-by-adobe","name":"SAP Forms Service by Adobe","kind":"service","line":"Adobe Document Services on BTP: renders print and interactive PDF forms from stored templates, called over a REST API from a cloud application or connected to an ABAP system.","short":"Adobe Document Services on BTP for print and interactive PDFs","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-hana-cloud":{"href":"/btp/artifacts/btp-hana-cloud","name":"SAP HANA Cloud","kind":"service","line":"The managed database under most of this: CAP's default target, the store Datasphere and Analytics Cloud sit on, and a service with plans and components.","short":"Managed SAP HANA database service on BTP","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-hana-service":{"href":"/btp/artifacts/btp-hana-service","name":"SAP HANA Service (SAP Regions) for SAP BTP","kind":"service","line":"Managed SAP HANA 2.0 database systems in fixed sizes from 64 GB to 1 TB, in SAP's own regions, with tenant databases bound to applications on SAP BTP.","short":"Managed SAP HANA 2.0 databases in fixed sizes on SAP BTP","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-hana-spatial-services":{"href":"/btp/artifacts/btp-hana-spatial-services","name":"SAP HANA Spatial Services for SAP BTP","kind":"service","line":"A BTP service of four APIs, geocoding, map tiles, routing and matrix routing, over a third-party location provider whose licence the customer brings, returning results to combine with business data.","short":"APIs for geocoding, map tiles and routing","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-health-data-services-for-fhir":{"href":"/btp/artifacts/btp-health-data-services-for-fhir","name":"SAP Health Data Services for FHIR","kind":"service","line":"A cloud-native implementation of the HL7 FHIR standard for designing, storing and exchanging health-related data, reached through REST APIs and messaging endpoints and extended with custom resources and FHIR profiles.","short":"HL7 FHIR implementation for storing and exchanging health data","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-html5-application-repository":{"href":"/btp/artifacts/btp-html5-application-repository","name":"SAP HTML5 Application Repository service for SAP BTP","kind":"service","line":"Stores built UI5 and HTML5 applications and serves them at runtime through the approuter, so an app ships no static server of its own.","short":"Stores UI5 and HTML5 apps and serves them through the approuter","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-identity-provisioning":{"href":"/btp/artifacts/btp-identity-provisioning","name":"SAP Cloud Identity Services - Identity Provisioning","kind":"service","line":"Provisioning jobs that carry users and groups, with their authorisations, between cloud and on-premise business systems, SAP and non-SAP, in full or delta read mode.","short":"Provisioning jobs carrying users and groups between systems","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-integration-advisor":{"href":"/btp/artifacts/btp-integration-advisor","name":"Integration Advisor","kind":"service","line":"Specifies B2B message interfaces and the mappings between them from a library of standards, and generates the schemas and scripts an integration flow runs, inside SAP Integration Suite.","short":"B2B interface and mapping specification in Integration Suite","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-integration-suite-event-mesh":{"href":"/btp/artifacts/btp-integration-suite-event-mesh","name":"SAP Integration Suite, Event Mesh","kind":"service","line":"The event broker activated inside SAP Integration Suite: queues, topic subscriptions and webhook subscriptions, reached over AMQP, MQTT and HTTP.","short":"Event broker inside SAP Integration Suite","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-integration-suite":{"href":"/btp/artifacts/btp-integration-suite","name":"SAP Integration Suite","kind":"service","line":"SAP's integration service on BTP: Cloud Integration for orchestration, API Management in front of it, and an MCP gateway that serves a managed API to agents.","short":"Integration service on BTP with Cloud Integration and API Management","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-intelligent-situation-automation":{"href":"/btp/artifacts/btp-intelligent-situation-automation","name":"Intelligent Situation Automation","kind":"service","line":"Resolves SAP S/4HANA and SAP S/4HANA Cloud business situations automatically by applying business rules, as an extension of Situation Handling with a dashboard over the time it saves.","short":"Rule-based resolution of SAP S/4HANA business situations","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-job-scheduling":{"href":"/btp/artifacts/btp-job-scheduling","name":"SAP Job Scheduling service","kind":"service","line":"Calls an application's endpoint on a schedule or once at a time and keeps the log of every run — cron without a process of your own to keep alive.","short":"Calls an application endpoint on a schedule and logs each run","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-keystore":{"href":"/btp/artifacts/btp-keystore","name":"SAP Keystore Service","kind":"service","line":"A repository for cryptographic keys and certificates in SAP BTP's Neo data centres, which an application retrieves at runtime for signing, encryption and SSL communication.","short":"Key and certificate repository in SAP BTP's Neo data centres","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-kyma-runtime":{"href":"/btp/artifacts/btp-kyma-runtime","name":"SAP BTP, Kyma runtime","kind":"service","line":"A fully managed Kubernetes runtime on SAP BTP, based on the open-source project Kyma, where extensions to SAP solutions run as containerised microservices and serverless Functions.","short":"Managed Kubernetes runtime on SAP BTP based on Kyma","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-malware-scanning":{"href":"/btp/artifacts/btp-malware-scanning","name":"SAP Malware Scanning service","kind":"service","line":"Scans an uploaded file over a REST call, with ClamAV behind it — the check an attachments plugin runs before a file is served back.","short":"Scans uploaded files over REST with ClamAV","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-master-data-integration":{"href":"/btp/artifacts/btp-master-data-integration","name":"SAP Master Data Integration","kind":"service","line":"A multi-tenant cloud service that replicates master data between two or more clients, giving a hybrid landscape a consistent view of it, with filters set through SAP Business Data Orchestration service.","short":"Cloud service replicating master data across a hybrid landscape","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-mobile-services":{"href":"/btp/artifacts/btp-mobile-services","name":"SAP Mobile Services","kind":"service","line":"The SAP BTP service behind native and cross-platform mobile apps over enterprise data: authentication and security policies, offline OData sync, push, MDK app updates and usage reporting.","short":"SAP BTP service for native and cross-platform mobile apps","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-monitoring":{"href":"/btp/artifacts/btp-monitoring","name":"SAP Monitoring Service for SAP BTP","kind":"service","line":"Metrics, availability and JMX checks, and email or webhook alerts for Java, HTML5 and SAP HANA XS applications and database systems, in Neo regions of SAP BTP.","short":"Metrics, availability checks and alerts for apps in Neo regions","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-oauth":{"href":"/btp/artifacts/btp-oauth","name":"OAuth 2.0 on SAP BTP","kind":"service","line":"OAuth 2.0 protection for applications and APIs on SAP BTP, listed in Neo regions: the authorization code grant for web applications and the client credentials grant for API and IoT scenarios.","short":"OAuth 2.0 grant flows for applications and APIs in Neo regions","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-object-store":{"href":"/btp/artifacts/btp-object-store","name":"Object Store on SAP BTP","kind":"service","line":"SAP's binding onto a hyperscaler's object storage — S3, Azure Blob Storage or Google Cloud Storage, chosen by plan. Store, fetch and delete objects; the bytes live with the provider.","short":"Binding onto hyperscaler object storage, chosen by plan","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-open-connectors":{"href":"/btp/artifacts/btp-open-connectors","name":"Open Connectors","kind":"service","line":"Prebuilt connectors to non-SAP cloud applications, each instance called as a harmonised RESTful API, inside SAP Integration Suite.","short":"Prebuilt connectors to non-SAP cloud applications as REST APIs","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-personal-data-manager":{"href":"/btp/artifacts/btp-personal-data-manager","name":"SAP Personal Data Manager","kind":"service","line":"A BTP service that finds data subjects, tells them which of their personal data an application or service stores and uses, and handles their requests about it.","short":"Service answering data subjects about their stored personal data","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-personalized-recommendation":{"href":"/btp/artifacts/btp-personalized-recommendation","name":"Personalized Recommendation","kind":"service","line":"Trains and deploys a machine learning model over a website visitor's browsing history and item attributes, and serves next-item, similar-item, smart-search and user-affinity recommendations from it over a REST API.","short":"Machine learning recommendations over browsing history via REST","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-postgresql-hyperscaler":{"href":"/btp/artifacts/btp-postgresql-hyperscaler","name":"PostgreSQL on SAP BTP, hyperscaler option","kind":"service","line":"A managed PostgreSQL from the underlying hyperscaler — AWS, Azure, Google Cloud or Alicloud — consumed through a BTP service binding.","short":"Managed PostgreSQL from the hyperscaler via a BTP service binding","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-print":{"href":"/btp/artifacts/btp-print","name":"SAP Print service","kind":"service","line":"Print queues between cloud applications and a customer's local printers: an application queries queues and creates print queue items through public APIs, and the queues are managed in the service.","short":"Print queues between cloud applications and local printers","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-private-link-service":{"href":"/btp/artifacts/btp-private-link-service","name":"SAP Private Link Service","kind":"service","line":"A private network connection between a selected SAP BTP service and a selected service in an application's own account with a partner cloud provider, so the traffic between them never touches the public internet.","short":"Private network link between a BTP service and a partner cloud","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-redis":{"href":"/btp/artifacts/btp-redis","name":"Redis on SAP BTP, hyperscaler option","kind":"service","line":"A managed Redis from the underlying hyperscaler, consumed through a BTP service binding rather than run yourself.","short":"Managed Redis from the hyperscaler via a BTP service binding","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-responsibility-management":{"href":"/btp/artifacts/btp-responsibility-management","name":"SAP Responsibility Management service","kind":"service","line":"A BTP service that resolves who is responsible for a business process, object or work item from condition-based rules or teams, and notifies them, for a workflow or another framework to call.","short":"Resolves who is responsible for a process or item, and notifies them","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-saas-provisioning":{"href":"/btp/artifacts/btp-saas-provisioning","name":"SAP Software-as-a-Service Provisioning service","kind":"service","line":"Registers a multitenant application so that subaccounts can subscribe to it, and calls the application back on every subscribe and unsubscribe.","short":"Registers a multitenant application for subaccount subscriptions","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-service-manager":{"href":"/btp/artifacts/btp-service-manager","name":"SAP Service Manager","kind":"service","line":"The BTP registry for service brokers and environments: consumes SAP BTP services from any connected runtime environment, tracks the service instances created, and shares them between environments.","short":"Registry for service brokers, instances and environments on SAP BTP","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-solution-lifecycle-management":{"href":"/btp/artifacts/btp-solution-lifecycle-management","name":"SAP Solution Lifecycle Management service for SAP BTP","kind":"service","line":"Deploys, updates, monitors and deletes Solutions in the Neo environment of SAP BTP, each carried by a Multitarget Application archive, and subscribes a subaccount to a multitenant Solution provided by another.","short":"Deploys and manages MTA-based Solutions in the Neo environment","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-task-center":{"href":"/btp/artifacts/btp-task-center","name":"SAP Task Center","kind":"service","line":"One inbox across SAP applications: tasks from S/4HANA, SuccessFactors, Ariba and BTP workflows in one list, with a public API for a custom task provider.","short":"One inbox for tasks across SAP applications and BTP workflows","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-trading-partner-management":{"href":"/btp/artifacts/btp-trading-partner-management","name":"Trading Partner Management","kind":"service","line":"Partner profiles, agreement templates and agreements for B2B exchange, pushed into the Partner Directory of Cloud Integration so one flow serves every partner, inside SAP Integration Suite.","short":"Partner profiles and agreements for B2B exchange in Integration Suite","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-translation-hub":{"href":"/btp/artifacts/btp-translation-hub","name":"SAP Translation Hub","kind":"service","line":"SAP's translation service for software texts and documents, drawing on repositories of verified and company translations and on machine translation by SAP's neural MT or large language models.","short":"Translation service for software texts and documents","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-ui-flexibility":{"href":"/btp/artifacts/btp-ui-flexibility","name":"UI flexibility service","kind":"service","line":"Key-user adaptation and personalisation for UI5 applications on SAP BTP: UI changes, shared views, drafts and versions, stored by the service and applied at runtime.","short":"Key-user adaptation and personalisation for UI5 apps on SAP BTP","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-usage-data-management":{"href":"/btp/artifacts/btp-usage-data-management","name":"SAP Usage Data Management Service for SAP BTP","kind":"service","line":"REST APIs that return BTP usage per metric for an account, directory or region, monthly or daily, and monthly cost per subaccount under the CPEA consumption-based model.","short":"REST APIs for SAP BTP usage per metric and monthly cost","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:btp-web-ide-full-stack":{"href":"/btp/artifacts/btp-web-ide-full-stack","name":"SAP Web IDE Full-Stack","kind":"service","line":"SAP's IDE service on BTP for SAPUI5 and SAP Fiori apps, full-stack SaaS applications, SAP S/4HANA extensions, hybrid mobile apps and IoT apps, with an SDK for extending the IDE itself.","short":"IDE service on SAP BTP for SAPUI5, Fiori and full-stack apps","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:bunysae-abap-db-preparator":{"href":"/abap/artifacts/bunysae-abap-db-preparator","name":"abap_db_preparator","kind":"package","line":"A wrapper over ABAP's OpenSQL replacement service that exports chosen rows into a stored bundle and, in a unit test's setup, replays it as fake table content in two method calls.","short":"Replays stored database snapshots in ABAP unit tests","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-06"},"ai":true,"meta":"independent, abap"},"actor:bunysae":{"href":"/actors/bunysae","name":"Bunyanuch Saengnet","kind":"person","glyph":{"type":"avatar","name":"Bunyanuch Saengnet","src":"/avatars/bunysae.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:cap-attachments-plus":{"href":"/cap/artifacts/cap-attachments-plus","name":"cap-attachments-plus","kind":"cds-plugin","line":"A CAP Node.js attachments plugin with an Attachments aspect and a Fiori elements upload facet, storing content in the database locally or in AWS, Azure or GCP through a BTP destination.","short":"CAP Node.js attachments plugin with database or cloud storage","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, cap"},"artifact:cap-handler-generator":{"href":"/cap/artifacts/cap-handler-generator","name":"@cap-handler/generator","kind":"generator","line":"Interactive generator for CAP event handlers: reads the model through the reflection API, asks which service, target and phase, then writes the handler file and wires the import and registration into the service implementation.","short":"Interactive generator for CAP event handler files","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"independent, cap"},"artifact:cap-java-cds-adapter-agent":{"href":"/cap/artifacts/cap-java-cds-adapter-agent","name":"com.sap.cds:cds-adapter-agent","kind":"package","line":"The A2A agent adapter for CAP Java, turning an @agent-annotated Application Service into a conversational endpoint whose queries and unbound actions become tools for a configured LLM.","short":"A2A adapter turning a CAP Java service into an LLM-backed agent","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-adapter-mcp":{"href":"/cap/artifacts/cap-java-cds-adapter-mcp","name":"com.sap.cds:cds-adapter-mcp","kind":"package","line":"The MCP protocol adapter for CAP Java, serving an @mcp-annotated Application Service as an MCP server with three generated tools, describe, query and call, and data changes only through unbound actions.","short":"MCP adapter turning a CAP Java service into an MCP server","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-adapter-odata-v2":{"href":"/cap/artifacts/cap-java-cds-adapter-odata-v2","name":"com.sap.cds:cds-adapter-odata-v2","kind":"package","line":"The OData V2 protocol adapter for CAP Java, which the runtime serves natively once this beta module is on the classpath, so a V2 frontend keeps working without a change to the CDS model.","short":"OData V2 protocol adapter built into the CAP Java runtime","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-adapter-odata-v4":{"href":"/cap/artifacts/cap-java-cds-adapter-odata-v4","name":"com.sap.cds:cds-adapter-odata-v4","kind":"package","line":"The OData V4 protocol adapter for CAP Java, auto-exposing every Application Service in the model at /odata/v4/<Service> without protocol code of its own, active by default in the CDS Maven Archetype.","short":"OData V4 protocol adapter for CAP Java Application Services","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-ai":{"href":"/cap/artifacts/cap-java-cds-ai","name":"cap-java/cds-ai","kind":"package","line":"Bridges CAP Java to SAP AI Core and adds AI-powered field recommendations to Fiori draft UIs, as two alpha Maven modules with mock fallbacks for local development.","short":"Bridge from CAP Java to SAP AI Core, with Fiori field recommendations","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"actor:cap-java":{"href":"/actors/cap-java","name":"CAP","kind":"org","glyph":{"type":"avatar","name":"CAP","ring":"independent","src":"/avatars/cap-java.png"},"line":"maintains 10 entries","meta":"independent"},"artifact:cap-java-cds-feature-advanced-event-mesh":{"href":"/cap/artifacts/cap-java-cds-feature-advanced-event-mesh","name":"com.sap.cds:cds-feature-advanced-event-mesh","kind":"package","line":"A beta CAP Java plugin that adds SAP Integration Suite, advanced event mesh as a messaging broker, activated by setting a messaging service's kind to aem.","short":"CAP Java plugin for SAP Integration Suite, advanced event mesh","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-attachments":{"href":"/cap/artifacts/cap-java-cds-feature-attachments","name":"com.sap.cds:cds-feature-attachments","kind":"package","line":"A CAP Java attachments package that adds an Attachments aspect and stores content in the database by default, or in AWS, Azure or Google Object Store through a separate module.","short":"CAP Java attachments with database storage and an Object Store module","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-auditlog-ng":{"href":"/cap/artifacts/cap-java-cds-feature-auditlog-ng","name":"com.sap.cds:cds-feature-auditlog-ng","kind":"package","line":"A CAP Java plugin that sends audit log events to the SAP Audit Log service in the format the Audit Log Event Catalog expects.","short":"CAP Java plugin sending audit log events to SAP Audit Log service","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-auditlog-v2":{"href":"/cap/artifacts/cap-java-cds-feature-auditlog-v2","name":"com.sap.cds:cds-feature-auditlog-v2","kind":"package","line":"The CAP Java handler that sends the SDK's AuditLog events to the SAP Audit Log service over its API version 2, once a service binding is present.","short":"CAP Java handler for SAP Audit Log service API version 2","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-change-tracking":{"href":"/cap/artifacts/cap-java-cds-feature-change-tracking","name":"com.sap.cds:cds-feature-change-tracking","kind":"package","line":"Records who changed which annotated field on a CDS entity and when, as a queryable change log for CAP Java, covering every modifying CQN statement but not native SQL or JDBC.","short":"Change log of annotated entity fields for CAP Java","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-cloudfoundry":{"href":"/cap/artifacts/cap-java-cds-feature-cloudfoundry","name":"com.sap.cds:cds-feature-cloudfoundry","kind":"package","line":"A CAP Java feature that reads the environment variables of SAP BTP, Cloud Foundry at start-up and resolves bound service credentials from them, so the other features find their bindings.","short":"Reads bound service credentials on SAP BTP, Cloud Foundry for CAP Java","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-console":{"href":"/cap/artifacts/cap-java-cds-feature-console","name":"com.sap.cds:cds-feature-console","kind":"package","line":"A CAP Java plugin that connects a running application to CAP console, which consumes its remote monitoring data; CAP console itself is installed separately and still being developed.","short":"Connects a running CAP Java app to CAP console for monitoring","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-dev-dashboard":{"href":"/cap/artifacts/cap-java-cds-feature-dev-dashboard","name":"com.sap.cds:cds-feature-dev-dashboard","kind":"app","line":"A browser dashboard for a running CAP Java service that shows and manages its messaging, resilience and multitenancy state while developing, open to users with the cds.Developer role.","short":"Browser dashboard for a running CAP Java service during development","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-enterprise-messaging":{"href":"/cap/artifacts/cap-java-cds-feature-enterprise-messaging","name":"com.sap.cds:cds-feature-enterprise-messaging","kind":"package","line":"A CAP Java feature that connects a CAP messaging service to SAP Event Mesh, activated by setting the service's kind to enterprise-messaging, and looks up the bound instance.","short":"Connects CAP Java messaging to SAP Event Mesh","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-event-hub":{"href":"/cap/artifacts/cap-java-cds-feature-event-hub","name":"com.sap.cds:cds-feature-event-hub","kind":"package","line":"A CAP Java plugin that connects CAP's messaging service to SAP Cloud Application Event Hub, so an application sends and consumes business events without coding against its API.","short":"Connects CAP Java messaging to SAP Cloud Application Event Hub","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-flow":{"href":"/cap/artifacts/cap-java-cds-feature-flow","name":"com.sap.cds:cds-feature-flow","kind":"package","line":"Adds declarative status-transition flows to CAP Java: entry and target states on a bound action, validated and applied by a generic handler that answers 409 Conflict from a wrong state.","short":"Declarative status-transition flows on bound actions in CAP Java","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-hana":{"href":"/cap/artifacts/cap-java-cds-feature-hana","name":"com.sap.cds:cds-feature-hana","kind":"package","line":"The CAP Java feature that wires a Maven application to SAP HANA Cloud, the production default among CAP's supported databases.","short":"SAP HANA Cloud datasource for CAP Java applications","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-identity":{"href":"/cap/artifacts/cap-java-cds-feature-identity","name":"com.sap.cds:cds-feature-identity","kind":"package","line":"The CAP Java feature that validates OAuth2 tokens from XSUAA and SAP Cloud Identity Services and builds the request's security context from them.","short":"OAuth2 token validation from XSUAA and SAP Cloud Identity Services","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-jdbc":{"href":"/cap/artifacts/cap-java-cds-feature-jdbc","name":"com.sap.cds:cds-feature-jdbc","kind":"package","line":"Connects the CAP Java runtime to JDBC databases through the CDS4j JDBC runtime: H2 and SQLite, which capire names for local development and CI tests rather than enterprise use.","short":"JDBC runtime for H2 and SQLite in CAP Java","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-k8s":{"href":"/cap/artifacts/cap-java-cds-feature-k8s","name":"com.sap.cds:cds-feature-k8s","kind":"package","line":"A CAP Java feature that reads the service bindings the SAP BTP Operator writes on Kyma runtime at start-up, replacing the removed cds.environment.k8s property.","short":"Reads SAP BTP Operator service bindings on Kyma for CAP Java","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-kafka":{"href":"/cap/artifacts/cap-java-cds-feature-kafka","name":"com.sap.cds:cds-feature-kafka","kind":"package","line":"A CAP Java feature that connects a CAP messaging service to Apache Kafka for intra-application messaging, through the Apache Kafka client library rather than a managed SAP messaging service.","short":"Connects CAP Java messaging to Apache Kafka","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-mt":{"href":"/cap/artifacts/cap-java-cds-feature-mt","name":"com.sap.cds:cds-feature-mt","kind":"package","line":"The CAP Java feature that makes a Maven application multitenant aware: tenant lifecycle events, per-tenant database containers, and the wiring to the Node.js MTX sidecar.","short":"Multitenancy for CAP Java: tenant lifecycle and per-tenant containers","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-n8n":{"href":"/cap/artifacts/cap-java-cds-feature-n8n","name":"com.sap.cds:cds-feature-n8n","kind":"package","line":"Triggers n8n workflows from a CAP Java application through @n8n.process.start annotations or a programmatic N8nService, delivered by webhook calls through the CAP outbox.","short":"Triggers n8n workflows from CAP Java through the outbox","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-notifications":{"href":"/cap/artifacts/cap-java-cds-feature-notifications","name":"com.sap.cds:cds-feature-notifications","kind":"package","line":"Sends business notifications from a CAP Java application through SAP Alert Notification service, delivered to SAP Build Work Zone or email, or logged to the console in local mode.","short":"Business notifications from CAP Java via SAP Alert Notification","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-ord":{"href":"/cap/artifacts/cap-java-cds-feature-ord","name":"com.sap.cds:cds-feature-ord","kind":"package","line":"Generates Open Resource Discovery (ORD) documents from a CAP Java application's model, a single entry point that a static metadata catalog or a runtime landscape inspection can read.","short":"Generates Open Resource Discovery documents from a CAP Java model","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-postgresql":{"href":"/cap/artifacts/cap-java-cds-feature-postgresql","name":"com.sap.cds:cds-feature-postgresql","kind":"package","line":"The CAP Java feature that wires a Maven application to PostgreSQL as its datasource beside SAP HANA, with limitations capire lists: schema evolution first, and no multitenancy or extensibility yet.","short":"PostgreSQL datasource for CAP Java applications","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-redis":{"href":"/cap/artifacts/cap-java-cds-feature-redis","name":"com.sap.cds:cds-feature-redis","kind":"package","line":"A beta CAP Java feature that connects a CAP messaging service to Redis Pub/Sub, which broadcasts each event to every subscribed instance and does not guarantee delivery.","short":"Beta connector from CAP Java messaging to Redis Pub/Sub","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-remote-odata":{"href":"/cap/artifacts/cap-java-cds-feature-remote-odata","name":"com.sap.cds:cds-feature-remote-odata","kind":"package","line":"A CAP Java feature for consuming remote OData V2 and V4 services as Remote Services, translating CQN queries into OData requests against a destination or a service binding.","short":"Remote Services for consuming OData V2 and V4 APIs in CAP Java","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-feature-xsuaa":{"href":"/cap/artifacts/cap-java-cds-feature-xsuaa","name":"com.sap.cds:cds-feature-xsuaa","kind":"package","line":"The CAP Java feature that validated XSUAA-issued JWTs, published up to 2.10.7 before CAP Java 3.0 removed it in favour of com.sap.cds:cds-feature-identity.","short":"Former XSUAA JWT validation for CAP Java, removed in CAP Java 3.0","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-integration-cloud-sdk":{"href":"/cap/artifacts/cap-java-cds-integration-cloud-sdk","name":"com.sap.cds:cds-integration-cloud-sdk","kind":"package","line":"A CAP Java feature that integrates the SAP Cloud SDK, so features such as remote OData and enterprise messaging resolve a destination or service binding and reach a remote REST-based service.","short":"SAP Cloud SDK integration for remote REST services in CAP Java","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-maven-plugin":{"href":"/cap/artifacts/cap-java-cds-maven-plugin","name":"com.sap.cds:cds-maven-plugin","kind":"build-tool","line":"The Maven plugin that runs CDS build steps in a CAP Java project: compiling the model, generating typed Java accessor interfaces and adding facets to an existing project.","short":"Maven plugin running CDS build steps in a CAP Java project","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-services-archetype":{"href":"/cap/artifacts/cap-java-cds-services-archetype","name":"com.sap.cds:cds-services-archetype","kind":"generator","line":"A Maven archetype that generates a new CAP Java project: a Spring Boot service with a starter CDS model, wired to the CDS Maven plugin for its build.","short":"Maven archetype generating a new CAP Java project","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-cds-services-bom":{"href":"/cap/artifacts/cap-java-cds-services-bom","name":"com.sap.cds:cds-services-bom","kind":"package","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","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:cap-java-sdm":{"href":"/cap/artifacts/cap-java-sdm","name":"com.sap.cds:sdm","kind":"package","line":"A CAP Java plugin that stores attachments in an SAP Document Management repository through an Attachments aspect, with draft handling and direct creation on active entities; versioned repositories are excluded.","short":"CAP Java plugin for attachments in SAP Document Management","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-advanced-event-mesh":{"href":"/cap/artifacts/cap-js-advanced-event-mesh","name":"@cap-js/advanced-event-mesh","kind":"cds-plugin","line":"Integrates CAP with SAP Integration Suite advanced event mesh.","short":"CAP integration with SAP Integration Suite advanced event mesh","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"actor:cap-js":{"href":"/actors/cap-js","name":"SAP Cloud Application Programming Model","kind":"org","glyph":{"type":"avatar","name":"SAP Cloud Application Programming Model","ring":"sap-official","src":"/avatars/cap-js.png"},"line":"maintains 34 entries","meta":"sap official"},"artifact:cap-js-agents":{"href":"/cap/artifacts/cap-js-agents","name":"@cap-js/agents","kind":"cds-plugin","line":"SAP's own CDS plugin for building agents inside a CAP service, wired to audit logging and telemetry through peer dependencies rather than leaving observability to the author.","short":"CDS plugin for building agents inside a CAP service","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-ai":{"href":"/cap/artifacts/cap-js-ai","name":"@cap-js/ai","kind":"cds-plugin","line":"Out-of-the-box value-help recommendations powered by SAP RPT-1, SAP AI Core as a standard CAP service, and an experimental local embedding model behind SQLite's vector functions.","short":"Value-help recommendations and SAP AI Core as a CAP service","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-asyncapi":{"href":"/cap/artifacts/cap-js-asyncapi","name":"@cap-js/asyncapi","kind":"cds-plugin","line":"Exports AsyncAPI documents describing the events a CAP service emits and consumes.","short":"Exports AsyncAPI documents for a CAP service's events","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-attachments":{"href":"/cap/artifacts/cap-js-attachments","name":"@cap-js/attachments","kind":"cds-plugin","line":"An official CAP Node.js plugin for attachment handling, with local database storage and AWS S3, Azure Blob or GCP Object Store integration.","short":"CAP Node.js attachments with database, S3, Azure or GCP storage","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-audit-logging":{"href":"/cap/artifacts/cap-js-audit-logging","name":"@cap-js/audit-logging","kind":"cds-plugin","line":"Integration with the SAP Audit Log service, so operations on personal data are recorded in the form an auditor expects without the application writing the entries.","short":"CAP integration with the SAP Audit Log service","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-cap-operator-plugin":{"href":"/cap/artifacts/cap-js-cap-operator-plugin","name":"@cap-js/cap-operator-plugin","kind":"generator","line":"Generates Helm charts for deploying CAP applications with the CAP Operator on Kubernetes.","short":"Generates Helm charts for the CAP Operator on Kubernetes","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-cds-dbs":{"href":"/cap/artifacts/cap-js-cds-dbs","name":"@cap-js/cds-dbs","kind":"package","line":"The monorepo behind CAP's SQL database services — the base service, SQLite, PostgreSQL and HANA all live here, which is why they version together.","short":"Monorepo of CAP's SQL database services","chip":{"label":"Maintenance","tier":"poor","evidence":"23 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-cds-federation-synonyms":{"href":"/cap/artifacts/cap-js-cds-federation-synonyms","name":"cds-federation-synonyms","kind":"cds-plugin","line":"An experimental CAP plugin for CAP-to-CAP data federation over SAP HANA synonyms, so one project reads another's tables without the rows being copied.","short":"CAP-to-CAP data federation over SAP HANA synonyms","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-cds-intellij":{"href":"/cap/artifacts/cap-js-cds-intellij","name":"cds-intellij","kind":"ide-extension","line":"SAP CDS language support for IntelliJ IDEA.","short":"SAP CDS language support for IntelliJ IDEA","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-cds-test":{"href":"/cap/artifacts/cap-js-cds-test","name":"@cap-js/cds-test","kind":"package","line":"Test support for CAP Node.js, installed as a dev dependency: it starts the project's server for the test, hands the test an HTTP client bound to it, and carries the assertions.","short":"Test support for CAP Node.js: server start, HTTP client, assertions","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-cds-typer":{"href":"/cap/artifacts/cap-js-cds-typer","name":"@cap-js/cds-typer","kind":"build-tool","line":"Generates TypeScript types from a CDS model.","short":"Generates TypeScript types from a CDS model","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-cds-types":{"href":"/cap/artifacts/cap-js-cds-types","name":"@cap-js/cds-types","kind":"package","line":"Type definitions for the CAP Node.js SDK.","short":"Type definitions for the CAP Node.js SDK","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-cf-setup":{"href":"/cap/artifacts/cap-js-cf-setup","name":"cf-setup","kind":"build-tool","line":"GitHub Action that sets up the Cloud Foundry CLI in a workflow.","short":"GitHub Action setting up the Cloud Foundry CLI","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-change-tracking":{"href":"/cap/artifacts/cap-js-change-tracking","name":"@cap-js/change-tracking","kind":"cds-plugin","line":"Out-of-the-box change history for annotated entities.","short":"Change history for annotated CAP entities","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-community-business-metrics":{"href":"/cap/artifacts/cap-js-community-business-metrics","name":"@cap-js-community/business-metrics","kind":"cds-plugin","line":"An extension of @cap-js/telemetry that turns two CDS annotations into business metrics, a counter on an entity event or action and a gauge on numeric fields.","short":"Business-level metrics from CDS annotations via @cap-js/telemetry","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"community org, cap"},"actor:cap-js-community":{"href":"/actors/cap-js-community","name":"cap-js-community","kind":"org","glyph":{"type":"avatar","name":"cap-js-community","ring":"community-org","src":"/avatars/cap-js-community.png"},"line":"maintains 10 entries","meta":"community org"},"artifact:cap-js-community-cds-cucumber":{"href":"/cap/artifacts/cap-js-community-cds-cucumber","name":"cds-cucumber","kind":"cds-plugin","line":"Behaviour-driven tests for CAP applications: Gherkin scenarios that drive a running service rather than assertions written against handlers.","short":"Gherkin scenarios driving a running CAP service","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"community org, cap"},"artifact:cap-js-community-common":{"href":"/cap/artifacts/cap-js-community-common","name":"@cap-js-community/common","kind":"package","line":"Six independent features for CAP services in one package: replication cache, migration check, rate limiting, a Redis client broker, a local HTML5 repository and a CDM builder.","short":"Six CAP features in one package, from replication cache to rate limits","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"community org, cap"},"actor:oklemenz2":{"href":"/actors/oklemenz2","name":"Oliver Klemenz","kind":"person","glyph":{"type":"avatar","name":"Oliver Klemenz","src":"/avatars/oklemenz2.png"},"line":"maintains 4 entries, contributed to 6 entries"},"artifact:cap-js-community-event-queue":{"href":"/cap/artifacts/cap-js-community-event-queue","name":"@cap-js-community/event-queue","kind":"cds-plugin","line":"Transactional processing of asynchronous and periodic events, with instant dispatch over Redis Pub/Sub and load spread across every application instance.","short":"Transactional processing of asynchronous and periodic CAP events","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"community org, cap"},"artifact:cap-js-community-feature-toggle-library":{"href":"/cap/artifacts/cap-js-community-feature-toggle-library","name":"@cap-js-community/feature-toggle-library","kind":"package","line":"Live-updatable feature toggles for CAP applications, backed by Redis.","short":"Live-updatable feature toggles for CAP, backed by Redis","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"community org, cap"},"artifact:cap-js-community-mtx-tool":{"href":"/cap/artifacts/cap-js-community-mtx-tool","name":"@cap-js-community/mtx-tool","kind":"cli","line":"CLI for operating multitenant CAP applications — inspecting, upgrading and repairing tenants across a landscape.","short":"CLI for operating tenants of multitenant CAP applications","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"community org, cap"},"artifact:cap-js-community-odata-v2-adapter":{"href":"/cap/artifacts/cap-js-community-odata-v2-adapter","name":"@cap-js-community/odata-v2-adapter","kind":"cds-plugin","line":"Exposes a CAP service as OData V2 for clients that cannot move to V4.","short":"Exposes a CAP service as OData V2","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"community org, cap"},"artifact:cap-js-community-repository-template":{"href":"/cap/artifacts/cap-js-community-repository-template","name":"repository-template","kind":"sample","line":"The template SAP's own repositories start from — LICENSE, the REUSE dep5 file, a code of conduct and the rest of the compliance furniture, so a new project does not assemble it by hand.","short":"Repository template with LICENSE, REUSE and compliance files","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2025-03"},"ai":true,"meta":"community org, cap"},"artifact:cap-js-community-sap-afc-sdk":{"href":"/cap/artifacts/cap-js-community-sap-afc-sdk","name":"@cap-js-community/sap-afc-sdk","kind":"package","line":"SDK for building SAP Advanced Financial Closing scheduling providers on CDS.","short":"SDK for SAP Advanced Financial Closing scheduling providers on CDS","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"community org, cap"},"artifact:cap-js-community-websocket":{"href":"/cap/artifacts/cap-js-community-websocket","name":"@cap-js-community/websocket","kind":"cds-plugin","line":"A WebSocket adapter for CDS services, speaking either the plain WebSocket protocol or Socket.IO, so a service can push instead of being polled.","short":"WebSocket and Socket.IO adapter for CDS services","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"community org, cap"},"artifact:cap-js-console":{"href":"/cap/artifacts/cap-js-console","name":"@cap-js/console","kind":"cds-plugin","line":"Connects a running CAP application to the CAP console.","short":"Connects a running CAP application to the CAP console","chip":{"label":"Maintenance","tier":"fair","evidence":"12 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-data-inspector":{"href":"/cap/artifacts/cap-js-data-inspector","name":"@cap-js/data-inspector","kind":"cds-plugin","line":"Inspects database entities and their contents at the CAP service level.","short":"Inspects database entities and contents at CAP service level","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-data-privacy":{"href":"/cap/artifacts/cap-js-data-privacy","name":"@cap-js/data-privacy","kind":"cds-plugin","line":"Integration with SAP Data Privacy Integration, driven by the personal-data annotations already on the model — the annotation that marks a field is the one the service acts on.","short":"CAP integration with SAP Data Privacy Integration","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-db-service":{"href":"/cap/artifacts/cap-js-db-service","name":"@cap-js/db-service","kind":"package","line":"The base every CAP database service is built on: the shared query translation and pooling that SQLite, PostgreSQL and HANA specialise rather than reimplement.","short":"Base service shared by CAP's SQLite, PostgreSQL and HANA services","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-event-broker":{"href":"/cap/artifacts/cap-js-event-broker","name":"@cap-js/event-broker","kind":"cds-plugin","line":"Consumes events from SAP Cloud Application Event Hub.","short":"Consumes events from SAP Cloud Application Event Hub in CAP","chip":{"label":"Maintenance","tier":"fair","evidence":"12 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-graphql":{"href":"/cap/artifacts/cap-js-graphql","name":"@cap-js/graphql","kind":"cds-plugin","line":"A protocol adapter that generates a GraphQL schema from the model and serves it, so the same services answer GraphQL without a second definition of them.","short":"GraphQL protocol adapter generated from the CDS model","chip":{"label":"Maintenance","tier":"fair","evidence":"12 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-hana":{"href":"/cap/artifacts/cap-js-hana","name":"@cap-js/hana","kind":"cds-plugin","line":"The HANA database service — the production default, on the same streamlined architecture as the SQLite and PostgreSQL services.","short":"SAP HANA database service for CAP","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-mcp-server":{"href":"/cap/artifacts/cap-js-mcp-server","name":"@cap-js/mcp-server","kind":"mcp-server","line":"SAP's MCP server for CAP development, run as cds-mcp: search_model searches the project's compiled CDS model, search_docs searches the CAP documentation indexed as embeddings on the developer's own machine.","short":"MCP server for CAP development: model and docs search","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-mcp":{"href":"/cap/artifacts/cap-js-mcp","name":"@cap-js/mcp","kind":"cds-plugin","line":"A CAP plugin that serves an @mcp-annotated service over MCP with three generated tools, describe, query and call_action, and writes its endpoint into the local agent's configuration in development.","short":"Exposes CAP services as MCP servers for AI agents","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-n8n":{"href":"/cap/artifacts/cap-js-n8n","name":"@cap-js/n8n","kind":"cds-plugin","line":"Triggers n8n workflows from a CAP application through @n8n.process.start annotations or a programmatic n8n service, resolving credentials from local config, a Cloud Foundry binding or a BTP destination.","short":"Triggers n8n workflows from a CAP application","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-notifications":{"href":"/cap/artifacts/cap-js-notifications","name":"@cap-js/notifications","kind":"cds-plugin","line":"Publishes business notifications to SAP Build WorkZone from the application, so a user is told something happened without the UI polling for it.","short":"Business notifications from CAP to SAP Build WorkZone","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-openapi":{"href":"/cap/artifacts/cap-js-openapi","name":"@cap-js/openapi","kind":"cds-plugin","line":"Turns a CDS service into an OpenAPI document, derived from the model so the description cannot drift from what is served.","short":"Generates OpenAPI documents from a CDS service","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-ord":{"href":"/cap/artifacts/cap-js-ord","name":"@cap-js/ord","kind":"cds-plugin","line":"Generates Open Resource Discovery documents from a CAP model.","short":"Generates Open Resource Discovery documents from a CAP model","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-postgres":{"href":"/cap/artifacts/cap-js-postgres","name":"@cap-js/postgres","kind":"cds-plugin","line":"The PostgreSQL database service — the production option for running CAP off HANA, sharing the base service with the other three.","short":"PostgreSQL database service for CAP","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-print":{"href":"/cap/artifacts/cap-js-print","name":"@cap-js/print","kind":"cds-plugin","line":"A CDS plugin that prints a document held in a CAP entity, through SAP Print service and a @PDF.Printable annotation.","short":"Prints documents held in CAP entities through SAP Print service","chip":{"label":"Maintenance","tier":"fair","evidence":"7 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-process":{"href":"/cap/artifacts/cap-js-process","name":"@cap-js/process","kind":"cds-plugin","line":"Starts, cancels, suspends and resumes SAP Build Process Automation processes from a CAP service through entity annotations, or through a typed CDS service imported from the process definition.","short":"Starts and manages SAP Build Process Automation processes from CAP","chip":{"label":"Maintenance","tier":"fair","evidence":"6 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-sdm":{"href":"/cap/artifacts/cap-js-sdm","name":"@cap-js/sdm","kind":"cds-plugin","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","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-sqlite":{"href":"/cap/artifacts/cap-js-sqlite","name":"@cap-js/sqlite","kind":"cds-plugin","line":"The SQLite service, in memory during the inner loop — which is why a CAP project runs before anyone has provisioned a database.","short":"SQLite database service for CAP, in memory during development","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:cap-js-telemetry":{"href":"/cap/artifacts/cap-js-telemetry","name":"@cap-js/telemetry","kind":"cds-plugin","line":"Automatic OpenTelemetry instrumentation for CAP Node.js services and their database calls, exported as traces and metrics to the console, SAP Cloud Logging, Dynatrace, Jaeger or an OTLP endpoint.","short":"OpenTelemetry instrumentation for CAP services","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:cap-llm-plugin":{"href":"/cap/artifacts/cap-llm-plugin","name":"cap-llm-plugin","kind":"cds-plugin","line":"Generative AI in a CAP application with the sensitive fields anonymised through SAP HANA before the prompt leaves, so the model never sees the confidential half.","short":"Generative AI in CAP with fields anonymised through SAP HANA","chip":{"label":"Maintenance","tier":"poor","evidence":"13 months since release"},"ai":true,"meta":"independent, cap"},"artifact:cap-postgres-btp-connectivity":{"href":"/cap/artifacts/cap-postgres-btp-connectivity","name":"cap-postgres-btp-connectivity","kind":"cds-plugin","line":"Connects a CAP Node.js application to a PostgreSQL database that is not publicly reachable, tunnelling through BTP Connectivity and the Cloud Connector.","short":"Tunnels CAP Node.js to a private PostgreSQL via Cloud Connector","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"independent, cap"},"artifact:cap-rp-notifications":{"href":"/cap/artifacts/cap-rp-notifications","name":"@cap-rp/notifications","kind":"cds-plugin","line":"A derived copy of the official notifications plugin under a different scope; its readme is @cap-js/notifications' with the name swapped.","short":"Renamed copy of @cap-js/notifications under another scope","chip":{"label":"Maintenance","tier":"poor","evidence":"24 months since release"},"ai":true,"meta":"independent, cap"},"actor:rohtash":{"href":"/actors/rohtash","name":"Rohtash Poonia","kind":"person","glyph":{"type":"avatar","name":"Rohtash Poonia","src":"/avatars/rohtash.png"},"line":"maintains 1 entry"},"artifact:capire-bookshop-java":{"href":"/cap/artifacts/capire-bookshop-java","name":"bookshop-java","kind":"sample","line":"The Java implementation of the capire/bookshop primer, CAP's own getting-started sample: the same application built on Spring Boot instead of Node.js, started with mvn spring-boot:run.","short":"Java implementation of the capire/bookshop getting-started sample","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, cap"},"actor:capire":{"href":"/actors/capire","name":"Capire Docs & Samples","kind":"org","glyph":{"type":"avatar","name":"Capire Docs & Samples","ring":"sap-official","src":"/avatars/capire.png"},"line":"maintains 20 entries, wrote 1 doc","meta":"sap official"},"artifact:capire-bookshop":{"href":"/cap/artifacts/capire-bookshop","name":"capire/bookshop","kind":"sample","line":"The primer of CAP: a bookshop small enough to read in one sitting, whose Books and Authors every CAP explanation, including this graph's, assumes you have already seen.","short":"CAP's getting-started bookshop sample","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:capire-bookstore-java":{"href":"/cap/artifacts/capire-bookstore-java","name":"bookstore-java","kind":"sample","line":"The Java implementation of the capire/bookstore composite app: bookshop, reviews, orders and a common content package, each its own repository.","short":"Java implementation of the capire/bookstore composite app","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, cap"},"artifact:capire-bookstore":{"href":"/cap/artifacts/capire-bookstore","name":"capire/bookstore","kind":"sample","line":"A composite application assembled from separately deployed services — bookshop, reviews, orders and a common content package — rather than one project with more folders in it.","short":"Composite CAP app from separately deployed services","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:capire-common":{"href":"/cap/artifacts/capire-common","name":"common","kind":"sample","line":"A CAP plugin that extends @sap/cds/common with enhanced reuse data in .csv, published as a sample of how to write a CAP plugin rather than as something to run in production.","short":"Sample CAP plugin extending @sap/cds/common with reuse data","chip":{"label":"Maintenance","tier":"poor","evidence":"158 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:capire-data-viewer":{"href":"/cap/artifacts/capire-data-viewer","name":"@capire/data-viewer","kind":"sample","line":"A CAP plugin that adds a generic data browser to an application, written to show how a plugin is built rather than to be depended on, and used in the bookstore sample.","short":"Sample CAP plugin adding a generic data browser","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, cap"},"artifact:capire-docs":{"href":"/cap/artifacts/capire-docs","name":"capire/docs","kind":"doc-source","line":"The sources of capire itself, in the repository it is built from: the documentation every core_coverage claim in this graph is checked against, so a claim can be dated against a commit.","short":"Sources of capire, the CAP documentation","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:capire-incidents-app":{"href":"/cap/artifacts/capire-incidents-app","name":"capire/incidents-app","kind":"sample","line":"The Incident Management reference application — the one SAP's own tutorial paths build, step by step, and the model cds add incidents-sample drops into a project.","short":"Incident Management reference application for CAP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:capire-orders-java":{"href":"/cap/artifacts/capire-orders-java","name":"orders-java","kind":"sample","line":"A sample reuse service for managing orders, with its own Fiori UI, in the capire/orders-java repository; its README is the one orders carries and names no runtime.","short":"Sample CAP Java reuse service for orders, with a Fiori UI","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, cap"},"artifact:capire-orders":{"href":"/cap/artifacts/capire-orders","name":"orders","kind":"sample","line":"A sample reuse service for managing orders, with its own Fiori UI, written to show how a CAP plugin is built and consumed: embedded in the consuming application or run standalone over OData.","short":"Sample CAP reuse service for orders, with a Fiori UI","chip":{"label":"Maintenance","tier":"poor","evidence":"70 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:capire-reviews-java":{"href":"/cap/artifacts/capire-reviews-java","name":"reviews-java","kind":"sample","line":"A sample reuse service for managing reviews, with a Vue UI, in the capire/reviews-java repository, written to show how a CAP plugin is built and used in the bookstore sample.","short":"Sample CAP Java reuse service for reviews, with a Vue UI","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, cap"},"artifact:capire-reviews":{"href":"/cap/artifacts/capire-reviews","name":"reviews","kind":"sample","line":"A sample reuse service for managing reviews, with its own Fiori UI, written to show how a CAP plugin is built and consumed, and used in the bookstore sample.","short":"Sample CAP reuse service for reviews, with a Fiori UI","chip":{"label":"Maintenance","tier":"poor","evidence":"134 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:capire-s4":{"href":"/cap/artifacts/capire-s4","name":"capire/s4","kind":"package","line":"A pre-built integration package for SAP S/4HANA, holding the imported service definitions a CAP project would otherwise generate for itself.","short":"Prebuilt SAP S/4HANA integration package for CAP projects","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, cap"},"artifact:capire-shared-db-java":{"href":"/cap/artifacts/capire-shared-db-java","name":"shared-db-java","kind":"sample","line":"A CAP sample showing how one domain model is shared across several apps that all rely on it, in the capire/shared-db-java repository, with capire's Microservices with CAP guide as background.","short":"CAP Java sample sharing one domain model across several apps","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, cap"},"artifact:capire-shared-db":{"href":"/cap/artifacts/capire-shared-db","name":"shared-db","kind":"sample","line":"A CAP sample showing how one domain model is shared across several apps that all rely on it, used to deploy microservices against a shared database, with capire's Microservices with CAP guide as background.","short":"CAP sample sharing one domain model and database across apps","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"sap official, cap"},"artifact:capire-skills":{"href":"/cap/artifacts/capire-skills","name":"capire/skills","kind":"skill","line":"SAP's own skill set for coding agents working on CAP — cap-developer, cap-add-remote-service, cap-upgrade and cap-trivia, each a SKILL.md with references beside it.","short":"Agent skills for CAP development, each a SKILL.md with references","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:capire-xflights-java":{"href":"/cap/artifacts/capire-xflights-java","name":"xflights-java","kind":"sample","line":"The Java twin of capire/xflights: a CAP Java service managing Airlines, Airports and Flights master data, with its client package xflights-data pulled into a consuming app through Maven.","short":"CAP Java reuse package for Airlines, Airports and Flights data","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:capire-xflights":{"href":"/cap/artifacts/capire-xflights","name":"xflights","kind":"sample","line":"A reuse package serving master-data entities (Airlines, Airports and Flights) as a service that other CAP applications compose into their own data model.","short":"CAP reuse package serving Airlines, Airports and Flights data","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:capire-xtravels-java":{"href":"/cap/artifacts/capire-xtravels-java","name":"xtravels-java","kind":"sample","line":"The Java twin of xtravels: a Spring Boot travel-booking application built on master data from xflights-java, which CAP mocks automatically unless a hybrid profile connects a running instance.","short":"CAP Java travel-booking app built on xflights-java master data","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:capire-xtravels":{"href":"/cap/artifacts/capire-xtravels","name":"xtravels","kind":"sample","line":"A travel-booking application built on the master data that xflights publishes, composing another package's schema into its own rather than owning master data itself.","short":"CAP travel-booking app built on xflights master data","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:carlosorozco88-ui5-tools":{"href":"/ui5/artifacts/carlosorozco88-ui5-tools","name":"UI5 Tools","kind":"ide-extension","line":"A VS Code extension for UI5 developers that serves, proxies, builds and deploys UI5 projects from one workspace-wide configuration, with live reload, a Gateway deployer and a BSP importer.","short":"VS Code extension to serve, proxy, build and deploy UI5 projects","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, ui5"},"actor:carlosorozco88":{"href":"/actors/carlosorozco88","name":"Carlos Orozco","kind":"person","glyph":{"type":"avatar","name":"Carlos Orozco","src":"/avatars/carlosorozco88.png"},"line":"maintains 1 entry, contributed to 2 entries"},"artifact:catafeidi-abap-transport-review":{"href":"/abap/artifacts/catafeidi-abap-transport-review","name":"abap-transport-review","kind":"app","line":"A release check inside the ABAP system that turns every transport task into a GitHub pull request and refuses to release the request until a colleague has approved it.","short":"Transport release check gated by GitHub pull request approval","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:catafeidi":{"href":"/actors/catafeidi","name":"catafeidi","kind":"person","glyph":{"type":"avatar","name":"catafeidi","src":"/avatars/catafeidi.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:cbs-consulting-cds-eslint":{"href":"/cap/artifacts/cbs-consulting-cds-eslint","name":"@cbs-consulting/cds-eslint","kind":"build-tool","line":"An ESLint plugin for CDS files carrying one consultancy's own rules, published so that the consultancy's projects lint their CDS models the same way.","short":"ESLint plugin with one consultancy's rules for CDS files","chip":{"label":"Maintenance","tier":"fair","evidence":"9 months since release"},"ai":true,"meta":"independent, cap"},"artifact:cbs-consulting-tools":{"href":"/cap/artifacts/cbs-consulting-tools","name":"@cbs-consulting/tools","kind":"build-tool","line":"Shared ESLint configuration for SAPUI5 and CAP projects, the config rather than the rules, so a team adopts a house style by adding one dependency.","short":"Shared ESLint configuration for SAPUI5 and CAP projects","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, cap"},"artifact:cch-engineering-sap-cloud-integration-pipeline-concept-skill":{"href":"/btp/artifacts/cch-engineering-sap-cloud-integration-pipeline-concept-skill","name":"sap-cloud-integration-pipeline-assistant","kind":"skill","line":"An agent skill for the Pipeline Concept framework in SAP Integration Suite Cloud Integration, covering implementation, the Partner Directory, XSLT and Groovy examples and troubleshooting.","short":"Agent skill for the Pipeline Concept in SAP Cloud Integration","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, btp"},"actor:cch-engineering":{"href":"/actors/cch-engineering","name":"cch-engineering","kind":"person","glyph":{"type":"avatar","name":"cch-engineering","src":"/avatars/cch-engineering.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:cds-caching":{"href":"/cap/artifacts/cds-caching","name":"cds-caching","kind":"cds-plugin","line":"A caching plugin for CAP covering queries, requests, function results and remote service responses, through a read-through API or @cache annotations, with HCQL and MCP support.","short":"CAP caching plugin for query results and remote service responses","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"independent, cap"},"actor:mike-zaschka":{"href":"/actors/mike-zaschka","name":"Mike Zaschka","kind":"person","glyph":{"type":"avatar","name":"Mike Zaschka","ring":"independent","src":"/avatars/mike-zaschka.png"},"line":"maintains 6 entries, created 12 pieces, contributed to 9 entries","meta":"independent"},"artifact:cds-error-outbox":{"href":"/cap/artifacts/cds-error-outbox","name":"cds-error-outbox","kind":"cds-plugin","line":"A CAP plugin that captures errors raised by CAP services into a database entity, deduplicates them so a repeating failure is one alert, and mails it over SMTP or Microsoft Graph.","short":"Captures CAP service errors, deduplicates them and mails alerts","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"independent, cap"},"artifact:cds-kafka":{"href":"/cap/artifacts/cds-kafka","name":"cds-kafka","kind":"cds-plugin","line":"A Kafka adapter for CAP that registers Kafka topics as a CDS messaging service over KafkaJS, so emit and on work unchanged, with per-message keys, partitions and topics set through headers.","short":"Kafka adapter exposing topics as a CDS messaging service","chip":{"label":"Maintenance","tier":"poor","evidence":"21 months since release"},"ai":true,"meta":"independent, cap"},"artifact:cds-mongodb":{"href":"/cap/artifacts/cds-mongodb","name":"cds-mongodb","kind":"cds-plugin","line":"MongoDB as a native CAP database service, through Mongoose — CQN reads and writes, managed associations as ObjectId references, $expand resolved by populate, and cds deploy --to mongoose.","short":"MongoDB as a CAP database service through Mongoose","chip":{"label":"Maintenance","tier":"fair","evidence":"10 months since release"},"ai":true,"meta":"independent, cap"},"artifact:cds-pgroll-postgres":{"href":"/cap/artifacts/cds-pgroll-postgres","name":"@cds-pgroll/postgres","kind":"cli","line":"The destructive half of PostgreSQL schema evolution — DROP and RENAME, which CAP's own schema_evolution: alter will not perform — driven from the command line beside @cap-js/postgres.","short":"CLI for DROP and RENAME schema changes beside @cap-js/postgres","chip":{"label":"Maintenance","tier":"fair","evidence":"6 months since release"},"ai":true,"meta":"independent, cap"},"actor:medelkouch98":{"href":"/actors/medelkouch98","name":"Medelkouch98","kind":"person","glyph":{"type":"avatar","name":"Medelkouch98","src":"/avatars/medelkouch98.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:cdse":{"href":"/cap/artifacts/cdse","name":"cdse","kind":"package","line":"Resolves a destination from a CAP project's own configuration, then makes the outbound call with axios: the url, the method and the body are written at the call site.","short":"Destination resolution and axios calls from CAP configuration","chip":{"label":"Maintenance","tier":"poor","evidence":"67 months since release"},"ai":true,"meta":"independent, cap"},"actor:jcailan":{"href":"/actors/jcailan","name":"Jhodel Cailan","kind":"person","glyph":{"type":"avatar","name":"Jhodel Cailan","src":"/avatars/jcailan.png"},"line":"maintains 1 entry, wrote 3 posts, contributed to 1 entry"},"artifact:cdsmbt01":{"href":"/cap/artifacts/cdsmbt01","name":"cdsmbt01","kind":"cds-plugin","line":"This is CDS plugin that enable OData change tracking for CAP applications","short":"CDS plugin for OData change tracking in CAP applications","chip":{"label":"Maintenance","tier":"poor","evidence":"19 months since release"},"ai":true,"meta":"independent, cap"},"artifact:cesar-sap-abap-fm-json":{"href":"/abap/artifacts/cesar-sap-abap-fm-json","name":"abap_fm_json","kind":"package","line":"A JSON adapter that exposes ABAP function modules over HTTP: a handler class in an ICF service calls the module named in the URL and serialises its parameters to and from JSON.","short":"JSON adapter exposing ABAP function modules over HTTP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"independent, abap"},"actor:cesar-sap":{"href":"/actors/cesar-sap","name":"Cesar Martin","kind":"person","glyph":{"type":"avatar","name":"Cesar Martin","src":"/avatars/cesar-sap.png"},"line":"maintains 2 entries, contributed to 2 entries"},"artifact:cesar-sap-abap-kafka-rest-proxy":{"href":"/abap/artifacts/cesar-sap-abap-kafka-rest-proxy","name":"cesar-sap/abap_kafka_rest_proxy","kind":"package","line":"An ABAP connector that produces and consumes data to and from Kafka through the Confluent Kafka REST Proxy, since SAP NetWeaver ABAP has no native Kafka client; tested on ABAP 7.5x.","short":"ABAP connector to Kafka through the Confluent Kafka REST Proxy","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2022-01"},"ai":true,"meta":"independent, abap"},"artifact:chandrashekhar-mahajan-abap-mcp-server":{"href":"/abap/artifacts/chandrashekhar-mahajan-abap-mcp-server","name":"chandrashekhar-mahajan/abap-mcp-server","kind":"mcp-server","line":"Fifteen ADT tools behind five pluggable authentication strategies — Kerberos/SPNEGO, OAuth 2.0, X.509, browser SSO and basic — for systems where basic auth is not an option.","short":"ABAP MCP server with ADT tools and five authentication strategies","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"independent, abap"},"artifact:chgeo-cds-swagger-ui-express":{"href":"/cap/artifacts/chgeo-cds-swagger-ui-express","name":"cds-swagger-ui-express","kind":"cds-plugin","line":"Serves a CAP service's OpenAPI definition as a browsable Swagger UI, which is the page @cap-js/openapi's document does not come with.","short":"Swagger UI for a CAP service's OpenAPI definition","chip":{"label":"Maintenance","tier":"fair","evidence":"9 months since release"},"ai":true,"meta":"independent, cap"},"actor:chgeo":{"href":"/actors/chgeo","name":"Christian Georgi","kind":"person","glyph":{"type":"avatar","name":"Christian Georgi","ring":"sap-official","src":"/avatars/chgeo.png"},"line":"maintains 1 entry, contributed to 53 entries","meta":"sap official"},"artifact:christianguenter2-abap-deepl-client":{"href":"/abap/artifacts/christianguenter2-abap-deepl-client","name":"ABAP_DeepL_client","kind":"package","line":"An ABAP client for the DeepL translation service, so text can be sent for translation from inside the system rather than through a tool outside it.","short":"ABAP client for the DeepL translation service","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2022-04"},"ai":true,"meta":"independent, abap"},"actor:christianguenter2":{"href":"/actors/christianguenter2","name":"Christian Günter","kind":"person","glyph":{"type":"avatar","name":"Christian Günter","src":"/avatars/christianguenter2.png"},"line":"maintains 1 entry, contributed to 12 entries"},"artifact:chuckberrry-cds-event-monitoring":{"href":"/cap/artifacts/chuckberrry-cds-event-monitoring","name":"cds-event-monitoring","kind":"cds-plugin","line":"A CAP plugin that stores every event received on its configured messaging topics in a table, with a Fiori-annotated service to browse them, resend events and drain a dead-message queue.","short":"Stores, browses and resends messages a CAP service receives","chip":{"label":"Maintenance","tier":"poor","evidence":"15 months since release"},"ai":true,"meta":"independent, cap"},"actor:chuckberrry":{"href":"/actors/chuckberrry","name":"Armin Hatting","kind":"person","glyph":{"type":"avatar","name":"Armin Hatting","src":"/avatars/chuckberrry.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:clementringot-lisa":{"href":"/abap/artifacts/clementringot-lisa","name":"LISA","kind":"mcp-server","line":"An MCP server that lets an AI client read and write the translations of ABAP repository objects through three tools, backed by an ABAP HTTP service on SAP's XCO i18n APIs.","short":"MCP server for reading and writing ABAP object translations","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:clementringot":{"href":"/actors/clementringot","name":"Clément Ringot","kind":"person","glyph":{"type":"avatar","name":"Clément Ringot","src":"/avatars/clementringot.png"},"line":"maintains 2 entries, contributed to 3 entries"},"artifact:clementringot-rosa":{"href":"/abap/artifacts/clementringot-rosa","name":"ROSA","kind":"mcp-server","line":"Answers whether an SAP object is released for ABAP Cloud, and what to use instead when it is not — served from SAP's own Cloudification Repository over MCP and over plain REST.","short":"MCP server answering whether SAP objects are released for ABAP Cloud","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:cogniac-sap-pod-extension":{"href":"/digital-manufacturing/artifacts/cogniac-sap-pod-extension","name":"Cogniac SAP DM POD 2.0 Extension","kind":"package","line":"A POD 2.0 plugin for SAP Digital Manufacturing that captures an image through a proxy in front of Cogniac EdgeFlow inference hardware and draws the returned detections over it inside an operator's POD panel.","short":"SAP Digital Manufacturing POD plugin for Cogniac image detections","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"independent, digital-manufacturing"},"actor:cogniac":{"href":"/actors/cogniac","name":"Cogniac","kind":"org","glyph":{"type":"avatar","name":"Cogniac","ring":"independent","src":"/avatars/cogniac.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:concircle-i18n-ai-translator":{"href":"/ui5/artifacts/concircle-i18n-ai-translator","name":"@concircle/i18n-ai-translator","kind":"cli","line":"A CLI that translates a UI5 app's i18n.properties with OpenAI and writes the language files back, masking placeholders, applying a glossary and caching what has been translated.","short":"CLI translating UI5 i18n.properties files with OpenAI","chip":{"label":"Maintenance","tier":"fair","evidence":"7 months since release"},"ai":true,"meta":"independent, ui5"},"actor:concircle":{"href":"/actors/concircle","name":"Concircle","kind":"org","glyph":{"type":"avatar","name":"Concircle","ring":"independent","src":"/avatars/concircle.png"},"line":"maintains 1 entry","meta":"independent"},"actor:hkaintz":{"href":"/actors/hkaintz","name":"Herbert Kaintz","kind":"person","glyph":{"type":"avatar","name":"Herbert Kaintz","src":"/avatars/hkaintz.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:consetto-calmcp":{"href":"/btp/artifacts/consetto-calmcp","name":"calmcp","kind":"mcp-server","line":"An MCP server in front of the SAP Cloud ALM APIs: four read tools over tasks, projects, features, documents, tests and analytics, run over stdio locally or Streamable HTTP on Cloud Foundry.","short":"MCP server with read tools over the SAP Cloud ALM APIs","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, btp"},"actor:consetto":{"href":"/actors/consetto","name":"Consetto","kind":"org","glyph":{"type":"avatar","name":"Consetto","ring":"independent","src":"/avatars/consetto.png"},"line":"maintains 2 entries","meta":"independent"},"actor:michaelconsetto":{"href":"/actors/michaelconsetto","name":"Michael Scharf","kind":"person","glyph":{"type":"avatar","name":"Michael Scharf","src":"/avatars/michaelconsetto.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:consetto-cloudalmlink":{"href":"/abap/artifacts/consetto-cloudalmlink","name":"Cloud ALM Link for ADT","kind":"ide-extension","line":"An Eclipse plugin that shows the transports and SAP Cloud ALM features behind an ABAP object, and turns Cloud ALM IDs in source comments into links.","short":"Eclipse plugin linking ABAP transports to SAP Cloud ALM features","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:coreline-zddic-finder":{"href":"/abap/artifacts/coreline-zddic-finder","name":"coreline/ZDDIC_FINDER","kind":"app","line":"A finder for ABAP Dictionary objects, searching domains, data elements, tables and structures, table types and ranges tables, installed with abapGit or as a program named ZDDIC_FINDER.","short":"Finder for ABAP Dictionary objects","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-11"},"ai":true,"meta":"independent, abap"},"actor:coreline":{"href":"/actors/coreline","name":"coreline","kind":"person","glyph":{"type":"avatar","name":"coreline","src":"/avatars/coreline.png"},"line":"maintains 2 entries, contributed to 2 entries"},"artifact:coreline-zuml-diagram":{"href":"/abap/artifacts/coreline-zuml-diagram","name":"ZUML_DIAGRAM","kind":"app","line":"An ABAP program that draws a UML class diagram of chosen objects, rendered over the internet through PlantUML and shown inline in CL_GUI_HTML_VIEWER.","short":"ABAP program drawing UML class diagrams through PlantUML","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2022-03"},"ai":true,"meta":"independent, abap"},"artifact:costinggeek-sap-mcp":{"href":"/btp/artifacts/costinggeek-sap-mcp","name":"CostingGeek/sap-mcp","kind":"mcp-server","line":"A Python server that fetches sales orders from SAP's business data graph and hands them to Claude Desktop — the only entry here pointed at that API rather than at one system's own services.","short":"Python MCP server fetching sales orders from SAP's business data graph","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-04"},"ai":true,"meta":"independent, btp"},"actor:costinggeek":{"href":"/actors/costinggeek","name":"CostingGeek","kind":"person","glyph":{"type":"avatar","name":"CostingGeek","src":"/avatars/costinggeek.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:coveles-claude-abap-dev":{"href":"/abap/artifacts/coveles-claude-abap-dev","name":"claude-abap-dev","kind":"skill","line":"Five ABAP workflows for Claude Code — ATC fixing, a clean-core audit, a Clean ABAP review, ABAP Unit and debugging — that ship no system access of their own and run on whichever community MCP servers are already configured.","short":"Five ABAP workflows for Claude Code on existing MCP servers","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:coveles":{"href":"/actors/coveles","name":"CoVeles","kind":"person","glyph":{"type":"avatar","name":"CoVeles","src":"/avatars/coveles.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:dankromp-skilloverflow":{"href":"/cap/artifacts/dankromp-skilloverflow","name":"DanKromp/skillOverflow","kind":"skill","line":"A collection of 41 agent skills, 37 for CAP, Fiori, BTP, UI5, ABAP, Integration Suite and HANA work and four for creating, reviewing and retiring skills, each with its own eval.","short":"Collection of 41 agent skills, 37 for SAP development tasks","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"independent, cap"},"actor:dankromp":{"href":"/actors/dankromp","name":"DanKromp","kind":"person","glyph":{"type":"avatar","name":"DanKromp","src":"/avatars/dankromp.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:dassianinc-dassian-adt":{"href":"/abap/artifacts/dassianinc-dassian-adt","name":"dassian-adt","kind":"mcp-server","line":"A fork of mcp-abap-abap-adt-api hardened for use: 25 tools, input validation, error intelligence, MCP elicitation, session recovery and a test suite.","short":"Fork of mcp-abap-abap-adt-api with 25 tools and session recovery","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:dassianinc":{"href":"/actors/dassianinc","name":"Dassian Inc.","kind":"org","glyph":{"type":"avatar","name":"Dassian Inc.","ring":"independent","src":"/avatars/dassianinc.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:datazoode-erpl-adt":{"href":"/abap/artifacts/datazoode-erpl-adt","name":"erpl-adt","kind":"mcp-server","line":"One C++ binary that speaks the ADT REST API as a CLI and as an MCP server — no Eclipse, no NetWeaver RFC SDK, no JVM — and reaches BW/4HANA modelling as well as ABAP.","short":"C++ binary speaking the ADT REST API as a CLI and MCP server","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:datazoode":{"href":"/actors/datazoode","name":"DataZoo GmbH","kind":"org","glyph":{"type":"avatar","name":"DataZoo GmbH","ring":"independent","src":"/avatars/datazoode.png"},"line":"maintains 3 entries","meta":"independent"},"artifact:datazoode-erpl-node-rfc":{"href":"/abap/artifacts/datazoode-erpl-node-rfc","name":"erpl-node-rfc","kind":"package","line":"An SAP RFC client for Node.js and TypeScript that implements the protocol in Rust and ships prebuilt for seven platforms behind node-rfc's API, so there is no SAP NW RFC SDK to download.","short":"RFC client for Node.js and TypeScript without the NW RFC SDK","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, abap"},"artifact:datazoode-erpl":{"href":"/abap/artifacts/datazoode-erpl","name":"ERPL","kind":"package","line":"A DuckDB extension that reads SAP ERP tables, CDS views and BW queries from SQL over RFC, BICS and ODP, and can mount an SAP system as a DuckDB catalog to join against other data.","short":"DuckDB extension reading SAP ERP tables, CDS views and BW queries","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:derekvincent-mcp-sap-focusedrun":{"href":"/btp/artifacts/derekvincent-mcp-sap-focusedrun","name":"mcp-sap-focusedrun","kind":"mcp-server","line":"SAP Focused Run's Landscape Management Database as MCP tools — hosts, systems, databases, cloud tenants, technical instances, ABAP clients, software components and product versions.","short":"MCP tools over SAP Focused Run's Landscape Management Database","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"independent, btp"},"actor:derekvincent":{"href":"/actors/derekvincent","name":"Derek Vincent","kind":"person","glyph":{"type":"avatar","name":"Derek Vincent","src":"/avatars/derekvincent.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:dergutewolf-abap-translation-hub":{"href":"/abap/artifacts/dergutewolf-abap-translation-hub","name":"ABAP_TRANSLATION_HUB","kind":"app","line":"A report that pushes an ABAP object list to SAP Translation Hub and pulls the finished translations back, meant to run as a job after the evaluation job has finished.","short":"Report pushing ABAP objects to SAP Translation Hub and back","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-03"},"ai":true,"meta":"independent, abap"},"actor:dergutewolf":{"href":"/actors/dergutewolf","name":"DerGuteWolf","kind":"person","glyph":{"type":"avatar","name":"DerGuteWolf","src":"/avatars/dergutewolf.png"},"line":"maintains 1 entry, contributed to 5 entries"},"artifact:devepos-abap-call-hierarchy-ui":{"href":"/abap/artifacts/devepos-abap-call-hierarchy-ui","name":"ABAP Call Hierarchy","kind":"ide-extension","line":"An Eclipse plugin that shows which members a class method, function module or subroutine calls, read from its own ADT backend in the system and published on a beta update site only.","short":"Eclipse plugin showing the call hierarchy of ABAP members","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-01"},"ai":true,"meta":"independent, abap"},"actor:devepos":{"href":"/actors/devepos","name":"DevEpos","kind":"org","glyph":{"type":"avatar","name":"DevEpos","ring":"independent","src":"/avatars/devepos.png"},"line":"maintains 11 entries","meta":"independent"},"actor:stockbal":{"href":"/actors/stockbal","name":"Ludwig Stockbauer-Muhr","kind":"person","glyph":{"type":"avatar","name":"Ludwig Stockbauer-Muhr","src":"/avatars/stockbal.png"},"line":"maintains 5 entries, contributed to 21 entries"},"artifact:devepos-abap-call-hierarchy":{"href":"/abap/artifacts/devepos-abap-call-hierarchy","name":"abap-call-hierarchy","kind":"package","line":"The ADT backend needed by the separate ABAP Call Hierarchy Eclipse plugin, installed in the ABAP system with abapGit and still in beta, which its maintainer calls not feature complete.","short":"ADT backend for the ABAP Call Hierarchy Eclipse plugin","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-07"},"ai":true,"meta":"independent, abap"},"artifact:devepos-abap-code-search-tools":{"href":"/abap/artifacts/devepos-abap-code-search-tools","name":"abap-code-search-tools","kind":"package","line":"A backend that searches ABAP source objects for a string or regular expression entirely in ABAP, instead of through the ADT source search, used from an Eclipse plugin or the report ZADCOSET_SEARCH.","short":"In-system ABAP source search by string or regular expression","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-09"},"ai":true,"meta":"independent, abap"},"artifact:devepos-abap-code-search-ui":{"href":"/abap/artifacts/devepos-abap-code-search-ui","name":"ABAP Code Search","kind":"ide-extension","line":"An Eclipse plugin that searches ABAP sources from the Eclipse search dialog, either in the client over the ADT API or inside the system through its own backend.","short":"Eclipse plugin searching ABAP sources from the search dialog","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-01"},"ai":true,"meta":"independent, abap"},"artifact:devepos-abap-db-browser":{"href":"/abap/artifacts/devepos-abap-db-browser","name":"abap-db-browser","kind":"app","line":"An SAP GUI program for browsing tables, views, CDS views, custom queries and joins, installed with abapGit together with two other repositories from the same maintainer and needing ABAP 7.50.","short":"SAP GUI browser for tables, views, CDS views and joins","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"independent, abap"},"artifact:devepos-abap-search-tools-ui":{"href":"/abap/artifacts/devepos-abap-search-tools-ui","name":"ABAP Search and Analysis Tools","kind":"ide-extension","line":"An Eclipse plugin with an object search dialog over repository objects and a view that analyses CDS views top-down and answers where-used questions, fed by its own ADT backend in the system.","short":"Eclipse plugin for ABAP object search and CDS view analysis","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-01"},"ai":true,"meta":"independent, abap"},"artifact:devepos-abap-search-tools":{"href":"/abap/artifacts/devepos-abap-search-tools","name":"abap-search-tools","kind":"package","line":"The ADT backend the separate ABAP Search and Analysis Tools Eclipse plugin needs, installed in the ABAP system.","short":"ADT backend for the ABAP Search and Analysis Tools plugin","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-01"},"ai":true,"meta":"independent, abap"},"artifact:devepos-abap-tags-backend":{"href":"/abap/artifacts/devepos-abap-tags-backend","name":"abap-tags-backend","kind":"package","line":"The ADT backend needed by the separate ABAP Tags Eclipse plugin, installed in the ABAP system with abapGit; an upgrade to v2.0.0 or later runs a migration program for its new database tables.","short":"ADT backend for the ABAP Tags Eclipse plugin","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-01"},"ai":true,"meta":"independent, abap"},"artifact:devepos-abap-tags-ui":{"href":"/abap/artifacts/devepos-abap-tags-ui","name":"ABAP Tags","kind":"ide-extension","line":"An Eclipse plugin for putting arbitrary tags on repository objects, with a Tag Manager view, tagged object search and tag import and export, served by its own ADT backend in the system.","short":"Eclipse plugin for tagging ABAP repository objects","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-01"},"ai":true,"meta":"independent, abap"},"artifact:devepos-abap-ui-toolbox":{"href":"/abap/artifacts/devepos-abap-ui-toolbox","name":"abap-ui-toolbox","kind":"package","line":"A collection of ABAP classes for classic SAP GUI development: an enhanced, editable ALV grid, a single-container screen framework, and a tree wrapper.","short":"ABAP classes for classic SAP GUI development: ALV, screens, trees","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"independent, abap"},"artifact:devepos-eclipsadt-o-mat":{"href":"/abap/artifacts/devepos-eclipsadt-o-mat","name":"eclipsADT-o-mat","kind":"cli","line":"A Windows PowerShell wizard that downloads an Eclipse release, installs ABAP Development Tools into it with the p2 director, and adds the ADT plugins picked from a catalog of fifteen.","short":"PowerShell wizard installing Eclipse with ADT and plugins","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:dnic-dev-bw-modeling-mcp":{"href":"/btp/artifacts/dnic-dev-bw-modeling-mcp","name":"bw-modeling-mcp","kind":"mcp-server","line":"Reads, creates and modifies BW/4HANA modelling objects through the same internal APIs Eclipse BWMT and the BW/4HANA Cockpit use — and can run centrally on BTP with each caller reaching BW as themselves.","short":"MCP server for BW/4HANA modelling objects","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, btp"},"actor:dnic-dev":{"href":"/actors/dnic-dev","name":"dnic-dev","kind":"person","glyph":{"type":"avatar","name":"dnic-dev","src":"/avatars/dnic-dev.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:dominikpanzer-cacamber-bdd-for-abap":{"href":"/abap/artifacts/dominikpanzer-cacamber-bdd-for-abap","name":"cacamber-BDD-for-ABAP","kind":"package","line":"A BDD framework for ABAP that turns Gherkin-style Given/When/Then scenarios into ABAP Unit test steps, matching each step against a regular expression and calling the test class method it maps to.","short":"BDD framework turning Given/When/Then into ABAP Unit steps","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-05"},"ai":true,"meta":"independent, abap"},"actor:dominikpanzer":{"href":"/actors/dominikpanzer","name":"Dominik Panzer","kind":"person","glyph":{"type":"avatar","name":"Dominik Panzer","src":"/avatars/dominikpanzer.png"},"line":"maintains 2 entries, contributed to 4 entries"},"artifact:dominikpanzer-result-for-abap":{"href":"/abap/artifacts/dominikpanzer-result-for-abap","name":"RESULT-for-ABAP","kind":"package","line":"An ABAP implementation of the result pattern: a method returns an object built with ok or fail instead of raising an exception for an expected failure, and several results combine into one.","short":"Result pattern for ABAP instead of exceptions for expected failures","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-11"},"ai":true,"meta":"independent, abap"},"artifact:dongitran-sapbruno":{"href":"/cap/artifacts/dongitran-sapbruno","name":"sapbruno","kind":"cli","line":"A terminal UI that runs Bruno collections against a CAP service, fetching an OAuth2 client_credentials token before each run so collections that fail with 401 under bru run work in CI.","short":"Terminal UI running Bruno collections against a CAP service","chip":{"label":"Maintenance","tier":"fair","evidence":"6 months since release"},"ai":true,"meta":"independent, cap"},"actor:dong-tran":{"href":"/actors/dong-tran","name":"Đông Trần","kind":"person","glyph":{"type":"avatar","name":"Đông Trần","ring":"independent","src":"/avatars/dong-tran.png"},"line":"maintains 18 entries, contributed to 18 entries","meta":"independent"},"artifact:drydumbhead-easyhtmlemail":{"href":"/abap/artifacts/drydumbhead-easyhtmlemail","name":"DryDumbHead/easyHtmlEmail","kind":"package","line":"A helper class that builds HTML emails in ABAP from an HTML template uploaded through SMW0, with placeholders replaced at runtime, so only the dynamic values are handled in code.","short":"ABAP helper class building HTML emails from templates","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2022-05"},"ai":true,"meta":"independent, abap"},"actor:drydumbhead":{"href":"/actors/drydumbhead","name":"NitinKumar Gupta","kind":"person","glyph":{"type":"avatar","name":"NitinKumar Gupta","src":"/avatars/drydumbhead.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:dxfrontier-cds-ts-dispatcher":{"href":"/cap/artifacts/dxfrontier-cds-ts-dispatcher","name":"@dxfrontier/cds-ts-dispatcher","kind":"package","line":"Decorator-driven handler registration for CAP in TypeScript, where handlers are declared on a class rather than wired up one by one in an init function.","short":"Decorator-driven handler registration for CAP in TypeScript","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"independent, cap"},"actor:dxfrontier":{"href":"/actors/dxfrontier","name":"dx frontier GmbH","kind":"org","glyph":{"type":"avatar","name":"dx frontier GmbH","ring":"independent","src":"/avatars/dxfrontier.png"},"line":"maintains 2 entries","meta":"independent"},"artifact:dxfrontier-cds-ts-repository":{"href":"/cap/artifacts/dxfrontier-cds-ts-repository","name":"@dxfrontier/cds-ts-repository","kind":"package","line":"A typed BaseRepository over CAP entities, so persistence is called through a class with methods rather than through CQN written inline in each handler.","short":"Typed BaseRepository over CAP entities","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"independent, cap"},"artifact:emenowicz-sap-commerce-skill":{"href":"/commerce/artifacts/emenowicz-sap-commerce-skill","name":"sap-commerce-skill","kind":"skill","line":"An agent skill for SAP Commerce Cloud 2211-jdk21.1 and later: 21 reference guides, 58 code templates and three shell scripts, installed through the skills CLI.","short":"Agent skill for SAP Commerce Cloud 2211-jdk21.1 and later","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, commerce"},"actor:emenowicz":{"href":"/actors/emenowicz","name":"Dawid Michałowicz","kind":"person","glyph":{"type":"avatar","name":"Dawid Michałowicz","src":"/avatars/emenowicz.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:endresshauser-infoserve-abap-utesthelp":{"href":"/abap/artifacts/endresshauser-infoserve-abap-utesthelp","name":"abap-utesthelp","kind":"package","line":"Two helper classes for ABAP Unit tests: one verifies a domain constant class against its domain's fixed values, the other creates test doubles without naming the interface.","short":"Helper classes for ABAP Unit tests and test doubles","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"independent, abap"},"actor:endresshauser-infoserve":{"href":"/actors/endresshauser-infoserve","name":"Endress+Hauser InfoServe GmbH+Co. KG","kind":"org","glyph":{"type":"avatar","name":"Endress+Hauser InfoServe GmbH+Co. KG","ring":"independent","src":"/avatars/endresshauser-infoserve.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:erhan-epod-adt-mcp-server":{"href":"/abap/artifacts/erhan-epod-adt-mcp-server","name":"EPOD ADT MCP Server","kind":"mcp-server","line":"An MCP server for ABAP that runs inside ABAP Development Tools for Eclipse on the ADT session of each connected project, with a standalone mode that runs with no IDE open.","short":"MCP server for ABAP on the ADT session, in Eclipse or standalone","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"independent, abap"},"artifact:etosin-arc-draw":{"href":"/btp/artifacts/etosin-arc-draw","name":"ARC-DRAW","kind":"mcp-server","line":"An MCP server that draws BTP solution diagrams onto a live draw.io canvas, with 111 SAP BTP icons as native shapes and SAP's diagram guidelines handed to the client as drawing rules.","short":"MCP server drawing BTP solution diagrams on a draw.io canvas","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, btp"},"actor:etosin":{"href":"/actors/etosin","name":"Emerson Tosin","kind":"person","glyph":{"type":"avatar","name":"Emerson Tosin","ring":"independent","src":"/avatars/etosin.png"},"line":"maintains 1 entry, contributed to 1 entry","meta":"independent"},"artifact:expertum-cap-email-plugin":{"href":"/cap/artifacts/expertum-cap-email-plugin","name":"@expertum/cap-email-plugin","kind":"cds-plugin","line":"Sends mail on entity lifecycle events from an annotation — @email.enabled on an entity, an HTML template with {{placeholder}} substitution, and a plugin-owned log entity recording what went out and what failed.","short":"Annotation-driven mail on CAP entity lifecycle events","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"independent, cap"},"actor:expertum-net":{"href":"/actors/expertum-net","name":"Expertum","kind":"org","glyph":{"type":"avatar","name":"Expertum","ring":"independent","src":"/avatars/expertum-net.png"},"line":"maintains 1 entry","meta":"independent"},"actor:stijnme":{"href":"/actors/stijnme","name":"Stijn Mertens","kind":"person","glyph":{"type":"avatar","name":"Stijn Mertens","src":"/avatars/stijnme.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:eyupbaycol-cap-toolkit":{"href":"/cap/artifacts/eyupbaycol-cap-toolkit","name":"cap-toolkit","kind":"package","line":"A utility bundle for CAP handlers, with a chainable HandlerBuilder, role checks, validation rules and query helpers, collecting boilerplate that otherwise repeats across projects into one dependency.","short":"Utility bundle for CAP handlers: builder, roles, validation, queries","chip":{"label":"Maintenance","tier":"fair","evidence":"7 months since release"},"ai":true,"meta":"independent, cap"},"actor:eyupbaycol":{"href":"/actors/eyupbaycol","name":"Eyüp Bayçöl","kind":"person","glyph":{"type":"avatar","name":"Eyüp Bayçöl","src":"/avatars/eyupbaycol.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:f-wer-zarc1-extension-forms":{"href":"/abap/artifacts/f-wer-zarc1-extension-forms","name":"ZARC1_EXTENSION_FORMS","kind":"mcp-server","line":"An extension of four tools for arc-1, with an ABAP backend behind it, that reaches the classic form objects ADT has no API for: SAPscript layout sets, Smart Styles and the TADIR record of a Smart Form.","short":"arc-1 extension for SAPscript and Smart Forms objects","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:f-wer":{"href":"/actors/f-wer","name":"F-Wer","kind":"person","glyph":{"type":"avatar","name":"F-Wer","src":"/avatars/f-wer.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:fabianlupa-abap-log":{"href":"/abap/artifacts/fabianlupa-abap-log","name":"abap-log","kind":"package","line":"A logging library for ABAP with one logger interface in front of several targets, from the Application Log and the job log to database tables, files and the Eclipse console.","short":"ABAP logging library with one interface across output targets","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-09"},"ai":true,"meta":"independent, abap"},"actor:fabianlupa":{"href":"/actors/fabianlupa","name":"Fabian Lupa","kind":"person","glyph":{"type":"avatar","name":"Fabian Lupa","src":"/avatars/fabianlupa.png"},"line":"maintains 1 entry, contributed to 7 entries"},"artifact:fatihpense-zcl-mdp-json":{"href":"/abap/artifacts/fatihpense-zcl-mdp-json","name":"zcl_mdp_json","kind":"package","line":"An ABAP library that generates and parses JSON strings, documented in the repository's wiki rather than its README, which names no ABAP release or installation method.","short":"ABAP library generating and parsing JSON strings","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2019-04"},"ai":true,"meta":"independent, abap"},"actor:fatihpense":{"href":"/actors/fatihpense","name":"Fatih Pense","kind":"person","glyph":{"type":"avatar","name":"Fatih Pense","src":"/avatars/fatihpense.png"},"line":"maintains 1 entry, contributed to 8 entries"},"artifact:fermeregali-cap-mtx-scaffold":{"href":"/cap/artifacts/fermeregali-cap-mtx-scaffold","name":"cap-mtx-scaffold","kind":"skill","line":"An agent skill for CAP multitenancy scaffolding that reads what a project already declares before it runs a single cds command.","short":"Agent skill for CAP multitenancy scaffolding","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"independent, cap"},"actor:fermeregali":{"href":"/actors/fermeregali","name":"Fernando Meregali Xavier","kind":"person","glyph":{"type":"avatar","name":"Fernando Meregali Xavier","src":"/avatars/fermeregali.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:fgalastri-mcp-abap":{"href":"/abap/artifacts/fgalastri-mcp-abap","name":"fgalastri/MCP_ABAP","kind":"mcp-server","line":"Validates an ABAP class before it is deployed by converting the global class to a local one and syntax-checking that — plus CDS DDL and table metadata retrieval.","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-08"},"ai":true,"meta":"independent, abap"},"actor:fgalastri":{"href":"/actors/fgalastri","name":"fgalastri","kind":"person","glyph":{"type":"avatar","name":"fgalastri","src":"/avatars/fgalastri.png"},"line":"maintains 1 entry"},"artifact:fidley-json2abaptype":{"href":"/abap/artifacts/fidley-json2abaptype","name":"JSON2ABAPType","kind":"generator","line":"A generator that produces an ABAP type definition from a JSON structure, with the repository holding the code and pointing to a blog article and an SAP blog post for the rest.","short":"Generator of ABAP type definitions from JSON structures","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-05"},"ai":true,"meta":"independent, abap"},"actor:fidley":{"href":"/actors/fidley","name":"Łukasz Pęgiel","kind":"person","glyph":{"type":"avatar","name":"Łukasz Pęgiel","src":"/avatars/fidley.png"},"line":"maintains 1 entry, contributed to 4 entries"},"artifact:fr0ster-mcp-abap-adt":{"href":"/abap/artifacts/fr0ster-mcp-abap-adt","name":"fr0ster/mcp-abap-adt","kind":"mcp-server","line":"Full CRUD across on-premise and ABAP Cloud systems, with five authentication methods and three transports: a library under Apache-2.0 and a standalone server under AGPL-3.0-only.","short":"ABAP MCP server with full CRUD on on-premise and ABAP Cloud","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:franzreitmayer-abap-logging":{"href":"/abap/artifacts/franzreitmayer-abap-logging","name":"ABAP_LOGGING","kind":"package","line":"An object-oriented wrapper around SAP's Business Application Log (BAL) for ABAP NetWeaver, chaining texts, messages and exceptions onto a log header that persists in its own or the same connection.","short":"Object-oriented wrapper around the Business Application Log","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-10"},"ai":true,"meta":"independent, abap"},"actor:franzreitmayer":{"href":"/actors/franzreitmayer","name":"franzreitmayer","kind":"person","glyph":{"type":"avatar","name":"franzreitmayer","src":"/avatars/franzreitmayer.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:freight-art-abapsmith":{"href":"/abap/artifacts/freight-art-abapsmith","name":"abapsmith","kind":"mcp-server","line":"An MCP server that lets an LLM develop in ABAP on a live system over ADT, with writes off by default and every mutation recorded in a local journal that can undo it.","short":"ABAP MCP server over ADT with a local journal that can undo writes","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:freight-art":{"href":"/actors/freight-art","name":"Freight Art","kind":"org","glyph":{"type":"avatar","name":"Freight Art","ring":"independent","src":"/avatars/freight-art.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:furkanaksy838-cap-mcp-guard":{"href":"/cap/artifacts/furkanaksy838-cap-mcp-guard","name":"cap-mcp-guard","kind":"cds-plugin","line":"A CDS plugin — the trust layer for AI agents accessing SAP CAP business data — request interception, policy enforcement, field masking/pseudonymization, and OpenTelemetry-native observability for MCP-enabled applications.","short":"Policy enforcement and field masking for MCP-enabled CAP apps","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, cap"},"actor:furkanaksy838":{"href":"/actors/furkanaksy838","name":"Furkan Aksoy","kind":"person","glyph":{"type":"avatar","name":"Furkan Aksoy","src":"/avatars/furkanaksy838.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:furkancosgun-abap-cache-box":{"href":"/abap/artifacts/furkancosgun-abap-cache-box","name":"ABAP-CACHE-BOX","kind":"generator","line":"Macros that generate a singleton ABAP cache class for a data type or object reference, backed by a hashed internal table and exposing put, get, delete, clear and size.","short":"Generates singleton ABAP cache classes from a macro call","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-08"},"ai":true,"meta":"independent, abap"},"actor:furkancosgun":{"href":"/actors/furkancosgun","name":"Furkan COSGUN","kind":"person","glyph":{"type":"avatar","name":"Furkan COSGUN","src":"/avatars/furkancosgun.png"},"line":"maintains 6 entries, contributed to 8 entries"},"artifact:furkancosgun-abap-database-manager":{"href":"/abap/artifacts/furkancosgun-abap-database-manager","name":"ABAP_DATABASE_MANAGER","kind":"app","line":"A report that runs custom SQL queries against the SAP database or an external connection, shows the results in an ALV grid, and inserts, updates and deletes data in the connected database.","short":"ABAP report running custom SQL queries into an ALV grid","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-10"},"ai":true,"meta":"independent, abap"},"artifact:furkancosgun-coroutines4abap":{"href":"/abap/artifacts/furkancosgun-coroutines4abap","name":"COROUTINES4ABAP","kind":"package","line":"A coroutine framework for ABAP that launches a piece of work, such as a database query or a background task, as a task the caller awaits later while carrying on with other work.","short":"Coroutine framework for ABAP with awaitable results","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-08"},"ai":true,"meta":"independent, abap"},"artifact:furkancosgun-either-for-abap":{"href":"/abap/artifacts/furkancosgun-either-for-abap","name":"EITHER-FOR-ABAP","kind":"package","line":"An ABAP class implementing the Either pattern, holding a success value or an error from a method call in one object, with checks for which side it holds and exceptions for misuse.","short":"ABAP class implementing the Either pattern","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-08"},"ai":true,"meta":"independent, abap"},"artifact:furkancosgun-transport-management-tool":{"href":"/abap/artifacts/furkancosgun-transport-management-tool","name":"furkancosgun/Transport-Management-Tool","kind":"app","line":"An ABAP tool that uploads and downloads transport requests as files from a selection screen, and can import an uploaded transport into the system directly rather than as a separate step.","short":"Uploads, downloads and imports ABAP transport requests as files","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"independent, abap"},"artifact:furkancosgun-zwarp":{"href":"/abap/artifacts/furkancosgun-zwarp","name":"furkancosgun/ZWARP","kind":"app","line":"An ABAP utility that finds the custom development objects a program or function module depends on, across nineteen object types, and adds the ones selected to a transport request.","short":"Adds a program's dependent objects to a transport request","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-08"},"ai":true,"meta":"independent, abap"},"artifact:gavdi-cap-mcp":{"href":"/cap/artifacts/gavdi-cap-mcp","name":"@gavdi/cap-mcp","kind":"cds-plugin","line":"Generates an MCP server from the CDS model — annotated entities become resources and annotated actions become tools, so an agent reaches the service without a second server being written.","short":"Generates an MCP server from annotated CDS entities and actions","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"independent, cap"},"actor:gavdilabs":{"href":"/actors/gavdilabs","name":"Gavdi Labs","kind":"org","glyph":{"type":"avatar","name":"Gavdi Labs","ring":"independent","src":"/avatars/gavdilabs.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:geert-janklaps-abap-openapi-ui":{"href":"/abap/artifacts/geert-janklaps-abap-openapi-ui","name":"ABAP OpenAPI UI","kind":"app","line":"An ABAP app that puts a Swagger UI in front of SAP NetWeaver Gateway services, built on Swagger UI and Odata-OpenAPI, installed through abapGit and opened from transaction ZGW_OPENAPI.","short":"Swagger UI for SAP NetWeaver Gateway services","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2022-09"},"ai":true,"meta":"independent, abap"},"actor:geert-janklaps":{"href":"/actors/geert-janklaps","name":"Geert-Jan Klaps","kind":"person","glyph":{"type":"avatar","name":"Geert-Jan Klaps","src":"/avatars/geert-janklaps.png"},"line":"maintains 4 entries, wrote 4 posts, contributed to 11 entries"},"artifact:geert-janklaps-cds-launchpad-plugin":{"href":"/cap/artifacts/geert-janklaps-cds-launchpad-plugin","name":"cds-launchpad-plugin","kind":"cds-plugin","line":"Indexes every SAPUI5 application in a workspace into one sandbox launchpad served by the CDS server, so all of them can be opened from a single page while developing.","short":"Sandbox launchpad for all SAPUI5 apps in a CAP workspace","chip":{"label":"Maintenance","tier":"fair","evidence":"6 months since release"},"ai":true,"meta":"independent, cap"},"artifact:geertjanklaps-cds-toon-ai-protocol-adapter":{"href":"/cap/artifacts/geertjanklaps-cds-toon-ai-protocol-adapter","name":"@geertjanklaps/cds-toon-ai-protocol-adapter","kind":"cds-plugin","line":"A protocol adapter that serves CAP data as TOON — Token-Oriented Object Notation — instead of JSON, so a payload bound for a language model costs fewer tokens to send.","short":"Protocol adapter serving CAP data as TOON instead of JSON","chip":{"label":"Maintenance","tier":"fair","evidence":"9 months since release"},"ai":true,"meta":"independent, cap"},"artifact:germanysources-regression-test":{"href":"/abap/artifacts/germanysources-regression-test","name":"regression_test","kind":"package","line":"A snapshot library for ABAP that records a value once and compares against it on every later run, from either the debugger or a unit test, storing snapshots in eCATT test data containers.","short":"Snapshot testing library for ABAP, from debugger or unit test","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-06"},"ai":true,"meta":"independent, abap"},"actor:germanysources":{"href":"/actors/germanysources","name":"Johannes Gerbershagen","kind":"person","glyph":{"type":"avatar","name":"Johannes Gerbershagen","src":"/avatars/germanysources.png"},"line":"maintains 1 entry, contributed to 7 entries"},"artifact:gprs555-abap-soql-query":{"href":"/abap/artifacts/gprs555-abap-soql-query","name":"abap-soql-query","kind":"app","line":"An ABAP report that runs Salesforce SOQL queries against standard or custom objects through a connected app, shows the rows in an ALV grid and exports them to CSV or Excel.","short":"ABAP report that runs Salesforce SOQL queries and exports results","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2019-03"},"ai":true,"meta":"independent, abap"},"actor:gprs555":{"href":"/actors/gprs555","name":"Mark Saks","kind":"person","glyph":{"type":"avatar","name":"Mark Saks","src":"/avatars/gprs555.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:grahamrobbo-building-gateway-services":{"href":"/abap/artifacts/grahamrobbo-building-gateway-services","name":"building_gateway_services","kind":"sample","line":"The ABAP code and slides for a presentation on building SAP Gateway services, pulled with abapGit into a local package, with a system alias to maintain once the objects are activated.","short":"ABAP code and slides from a talk on building SAP Gateway services","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-04"},"ai":true,"meta":"independent, abap"},"actor:grahamrobbo":{"href":"/actors/grahamrobbo","name":"Graham Robinson","kind":"person","glyph":{"type":"avatar","name":"Graham Robinson","src":"/avatars/grahamrobbo.png"},"line":"maintains 1 entry, contributed to 2 entries"},"artifact:gregorwolf-abapoauthazure":{"href":"/abap/artifacts/gregorwolf-abapoauthazure","name":"abapOAuthAzure","kind":"package","line":"An Enhancement Spot OA2C_SPECIFICS implementation for Microsoft Azure, written against ABAP's OAuth 2.0 Client API, with a one-sentence README that leaves configuration to SAP's help page.","short":"OA2C_SPECIFICS implementation for Microsoft Azure OAuth 2.0 in ABAP","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-07"},"ai":true,"meta":"independent, abap"},"actor:gregorwolf":{"href":"/actors/gregorwolf","name":"Gregor Wolf","kind":"person","glyph":{"type":"avatar","name":"Gregor Wolf","ring":"independent","src":"/avatars/gregorwolf.png"},"line":"maintains 17 entries, wrote 2 posts, contributed to 59 entries","meta":"independent"},"artifact:gregorwolf-aws-sns4abap":{"href":"/abap/artifacts/gregorwolf-aws-sns4abap","name":"gregorwolf/AWS_SNS4ABAP","kind":"package","line":"An ICF handler that receives Amazon SNS notifications in an ABAP system as an HTTPS subscriber endpoint, leaving what happens to a notification once it arrives to the caller.","short":"ICF handler receiving Amazon SNS notifications in an ABAP system","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-06"},"ai":true,"meta":"independent, abap"},"artifact:gregorwolf-bookshop-ams":{"href":"/cap/artifacts/gregorwolf-bookshop-ams","name":"bookshop-ams","kind":"sample","line":"CAP bookshop wired to the Authorization Management Service.","short":"CAP bookshop wired to the Authorization Management Service","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"independent, cap"},"artifact:gregorwolf-bookshop-demo":{"href":"/cap/artifacts/gregorwolf-bookshop-demo","name":"bookshop-demo","kind":"sample","line":"Simple CDS bookshop — the reference model most CAP explanations build on.","short":"Simple CDS bookshop model used across CAP explanations","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, cap"},"artifact:gregorwolf-cap-azure-ad-b2c":{"href":"/cap/artifacts/gregorwolf-cap-azure-ad-b2c","name":"cap-azure-ad-b2c","kind":"sample","line":"Authenticating a CAP service against Azure AD B2C — an identity provider outside the SAP platform.","short":"Authenticating a CAP service against Azure AD B2C","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"independent, cap"},"artifact:gregorwolf-cap-replication-demo":{"href":"/cap/artifacts/gregorwolf-cap-replication-demo","name":"cap-replication-demo","kind":"sample","line":"Replication between systems with CAP.","short":"Replication between systems with CAP","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-12"},"ai":true,"meta":"independent, cap"},"artifact:gregorwolf-cap-rfc":{"href":"/cap/artifacts/gregorwolf-cap-rfc","name":"cap-rfc","kind":"sample","line":"Calling ABAP function modules over RFC from a CAP service.","short":"Calling ABAP function modules over RFC from a CAP service","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, cap"},"artifact:gregorwolf-cap-sflight-hierarchy":{"href":"/cap/artifacts/gregorwolf-cap-sflight-hierarchy","name":"cap-sflight-hierarchy","kind":"sample","line":"The sflight example extended with hierarchy support.","short":"sflight example extended with hierarchy support","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-01"},"ai":true,"meta":"independent, cap"},"artifact:gregorwolf-cap-typescript":{"href":"/cap/artifacts/gregorwolf-cap-typescript","name":"cap-typescript","kind":"sample","line":"Minimal CAP project in TypeScript.","short":"Minimal CAP project in TypeScript","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-12"},"ai":true,"meta":"independent, cap"},"artifact:gregorwolf-cap-websockets":{"href":"/cap/artifacts/gregorwolf-cap-websockets","name":"cap-websockets","kind":"sample","line":"WebSocket push from a CAP service.","short":"WebSocket push from a CAP service","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"independent, cap"},"artifact:gregorwolf-cloud-alm-itsm-mcp":{"href":"/btp/artifacts/gregorwolf-cloud-alm-itsm-mcp","name":"cloud-alm-itsm-mcp","kind":"mcp-server","line":"Queries installations through SAP Cloud ALM's ITSM API — filtered by system type or customer number, with OAuth token handling and caching done for you.","short":"MCP server querying installations via the SAP Cloud ALM ITSM API","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"independent, btp"},"artifact:gregorwolf-mtxs-reviews":{"href":"/cap/artifacts/gregorwolf-mtxs-reviews","name":"mtxs-reviews","kind":"sample","line":"Multitenant CAP application using cds-mtxs.","short":"Multitenant CAP application using cds-mtxs","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-05"},"ai":true,"meta":"independent, cap"},"artifact:gregorwolf-pg-beershop":{"href":"/cap/artifacts/gregorwolf-pg-beershop","name":"pg-beershop","kind":"sample","line":"CAP beershop running on PostgreSQL, from before an official adapter existed.","short":"CAP beershop on PostgreSQL, predating an official adapter","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-12"},"ai":true,"meta":"independent, cap"},"artifact:gregorwolf-sap-npm-api-collection":{"href":"/cap/artifacts/gregorwolf-sap-npm-api-collection","name":"SAP-NPM-API-collection","kind":"doc-source","line":"Collected API documentation extracted from SAP-published npm packages, including the ones that ship no public repository.","short":"API documentation extracted from SAP-published npm packages","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, cap"},"artifact:greltel-abap-cloud-logger":{"href":"/abap/artifacts/greltel-abap-cloud-logger","name":"abap-cloud-logger","kind":"package","line":"A logging library for ABAP Cloud that wraps the released class CL_BALI_LOG in a chainable logger, collecting exceptions, messages and tables, with a stopwatch and a sticky context tag.","short":"Chainable logger for ABAP Cloud around CL_BALI_LOG","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:greltel":{"href":"/actors/greltel","name":"George Drakos","kind":"person","glyph":{"type":"avatar","name":"George Drakos","src":"/avatars/greltel.png"},"line":"maintains 4 entries, contributed to 7 entries"},"artifact:greltel-abap-dynamic-assignment":{"href":"/abap/artifacts/greltel-abap-dynamic-assignment","name":"abap-dynamic-assignment","kind":"package","line":"A framework for maintaining runtime parameters, ranges and value mappings in ABAP instead of hard-coded values or TVARVC, checked against data elements and maintained in a RAP Fiori app.","short":"Framework for runtime parameters, ranges and value mappings in ABAP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:greltel-abap-form-translator":{"href":"/abap/artifacts/greltel-abap-form-translator","name":"abap-form-translator","kind":"package","line":"A runtime translation layer for Smartform and Adobe form labels, matching structure fields against a table maintained in a RAP Fiori app, so a label changes without SE63 or a transport.","short":"Runtime translation layer for SAP form labels, kept in a table","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:greltel-abap-point-gate":{"href":"/abap/artifacts/greltel-abap-point-gate","name":"abap-point-gate","kind":"package","line":"A configuration-driven framework that decouples custom ABAP enhancements from standard SAP objects, activating and sequencing them through a Fiori app instead of code changes.","short":"Framework activating custom ABAP enhancements through a Fiori app","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:grknylmz-sap-ai-dev-toolkit":{"href":"/abap/artifacts/grknylmz-sap-ai-dev-toolkit","name":"sap-ai-dev-toolkit","kind":"mcp-server","line":"An MCP proxy that pins an agent's ABAP tools to one SAP system: setup reads the BAS destinations or the local SAP GUI landscape and writes one stdio server per system, leaving the credentials in the destination or in the editor's own login prompts.","short":"MCP proxy pinning an agent's ABAP tools to one SAP system","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, abap"},"actor:grknylmz":{"href":"/actors/grknylmz","name":"Gurkan Yilmaz","kind":"person","glyph":{"type":"avatar","name":"Gurkan Yilmaz","src":"/avatars/grknylmz.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:hasanciftci26-ui5-antares":{"href":"/ui5/artifacts/hasanciftci26-ui5-antares","name":"ui5-antares","kind":"package","line":"A SAPUI5 library that generates OData V2 metadata-based dialogs, object pages and value helps with input validation, and wraps OData V2 requests in promises.","short":"SAPUI5 library generating OData V2 metadata-based dialogs and pages","chip":{"label":"Maintenance","tier":"poor","evidence":"26 months since release"},"ai":true,"meta":"independent, ui5"},"actor:hasanciftci26":{"href":"/actors/hasanciftci26","name":"Hasan Çiftçi","kind":"person","glyph":{"type":"avatar","name":"Hasan Çiftçi","src":"/avatars/hasanciftci26.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:hatrigt-hana-mcp-server":{"href":"/btp/artifacts/hatrigt-hana-mcp-server","name":"hana-mcp-server","kind":"mcp-server","line":"Schema discovery and guard-railed SQL against SAP HANA and HANA Cloud, with an optional layer of business metadata so an agent reads a coded column the way the business does.","short":"MCP server for schema discovery and guarded SQL on SAP HANA","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"independent, btp"},"actor:hatrigt":{"href":"/actors/hatrigt","name":"AjeethKumar R","kind":"person","glyph":{"type":"avatar","name":"AjeethKumar R","src":"/avatars/hatrigt.png"},"line":"maintains 2 entries, contributed to 3 entries"},"artifact:hatrigt-sap-cap-debugger":{"href":"/cap/artifacts/hatrigt-sap-cap-debugger","name":"sap-cap-debugger","kind":"cli","line":"Attaches a debugger to a CAP application already running on Cloud Foundry — enables the Node inspector inside the container, assigns a port and hands you a Chrome DevTools or VS Code attach.","short":"Attaches a debugger to a CAP app running on Cloud Foundry","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"independent, cap"},"artifact:hdb":{"href":"/btp/artifacts/hdb","name":"hdb","kind":"package","line":"SAP's HANA driver for Node.js, written entirely in JavaScript so installing it pulls in no native client, running SQL against SAP HANA and SAP HANA Cloud with streams and prepared statements.","short":"Pure JavaScript SAP HANA driver for Node.js","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"sap official, btp"},"actor:alexpenev-s":{"href":"/actors/alexpenev-s","name":"Alexander Penev","kind":"person","glyph":{"type":"avatar","name":"Alexander Penev","src":"/avatars/alexpenev-s.png"},"line":"maintains 1 entry, contributed to 1 entry"},"actor:holgerkoser":{"href":"/actors/holgerkoser","name":"Holger Koser","kind":"person","glyph":{"type":"avatar","name":"Holger Koser","src":"/avatars/holgerkoser.png"},"line":"maintains 1 entry, contributed to 1 entry"},"actor:jeffalbion":{"href":"/actors/jeffalbion","name":"Jeff Albion","kind":"person","glyph":{"type":"avatar","name":"Jeff Albion","src":"/avatars/jeffalbion.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:heliconialabs-abap-opentelemetry":{"href":"/abap/artifacts/heliconialabs-abap-opentelemetry","name":"abap-opentelemetry","kind":"package","line":"An ABAP library that serialises OpenTelemetry Protocol (OTLP) traces, metrics and logs for sending to a collector, documenting the HTTP request to Elastic 8.8 and later.","short":"OTLP serialisation of traces, metrics and logs in ABAP","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-09"},"ai":true,"meta":"independent, abap"},"actor:heliconialabs":{"href":"/actors/heliconialabs","name":"Heliconia Labs","kind":"org","glyph":{"type":"avatar","name":"Heliconia Labs","ring":"independent","src":"/avatars/heliconialabs.png"},"line":"maintains 2 entries","meta":"independent"},"artifact:heliconialabs-abap-protobuf":{"href":"/abap/artifacts/heliconialabs-abap-protobuf","name":"abap-protobuf","kind":"package","line":"An implementation of Protocol Buffers in ABAP, stating support for proto2 syntax only; its repository description names gRPC, which the README says nothing further about.","short":"Protocol Buffers (proto2) implementation in ABAP","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-10"},"ai":true,"meta":"independent, abap"},"artifact:hhelibeb-abap-data-validator":{"href":"/abap/artifacts/hhelibeb-abap-data-validator","name":"abap-data-validator","kind":"package","line":"A validation library for ABAP that checks values such as dates, emails, URLs, JSON and GUIDs against type rules through one interface, or a whole internal table against a set of rules.","short":"Validation library for ABAP checking dates, emails and GUIDs","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-06"},"ai":true,"meta":"independent, abap"},"actor:hhelibeb":{"href":"/actors/hhelibeb","name":"He H","kind":"person","glyph":{"type":"avatar","name":"He H","src":"/avatars/hhelibeb.png"},"line":"maintains 3 entries, contributed to 6 entries"},"artifact:hhelibeb-abap-fm-logger":{"href":"/abap/artifacts/hhelibeb-abap-fm-logger","name":"abap-fm-logger","kind":"package","line":"A logger for ABAP function modules (RFC) that stores each call's parameters as JSON in one table, with a viewer report to search the log and reprocess a record, akin to WE10 and WE19.","short":"Logger storing RFC function module call parameters as JSON","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"independent, abap"},"artifact:hhelibeb-blowfish-abap":{"href":"/abap/artifacts/hhelibeb-blowfish-abap","name":"hhelibeb/blowfish-abap","kind":"package","line":"A Blowfish cipher implemented directly in ABAP after Bruce Schneier's definition, encrypting and decrypting strings in ECB and CBC mode through one class, on ABAP 750 or higher.","short":"Blowfish cipher in ABAP, ECB and CBC modes","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2019-11"},"ai":true,"meta":"independent, abap"},"artifact:hochfrequenz-aibap-mcp":{"href":"/abap/artifacts/hochfrequenz-aibap-mcp","name":"aibap.mcp","kind":"mcp-server","line":"A Go server that closes the loop: after create, write and activate it can run the class it just wrote through ADT's classrun and hand the console output back.","short":"Go MCP server that writes, activates and runs ABAP classes via ADT","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"independent, abap"},"artifact:hochfrequenz-sapgui-mcp":{"href":"/abap/artifacts/hochfrequenz-sapgui-mcp","name":"sapgui.mcp","kind":"mcp-server","line":"Drives the SAP desktop GUI and the Web GUI, and is built for the jobs a REST client cannot do — end-to-end testing against the real screen, visual validation, and screenshots for documentation.","short":"MCP server driving SAP GUI and Web GUI for end-to-end testing","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"independent, abap"},"artifact:htammen-ui5-cc-timerbutton":{"href":"/ui5/artifacts/htammen-ui5-cc-timerbutton","name":"ui5-cc-timerbutton","kind":"package","line":"A UI5 control library with TimerButton, an sap.m.Button that delays becoming enabled or visible and shows other text or an icon in the meantime, with the delay set in milliseconds.","short":"UI5 control library with a button that delays enabling or showing","chip":{"label":"Maintenance","tier":"poor","evidence":"31 months since release"},"ai":true,"meta":"independent, ui5"},"actor:htammen":{"href":"/actors/htammen","name":"Helmut Tammen","kind":"person","glyph":{"type":"avatar","name":"Helmut Tammen","src":"/avatars/htammen.png"},"line":"maintains 1 entry, wrote 2 posts, contributed to 2 entries"},"artifact:i562693-vkn-scaffold-fiori-ai-bridge":{"href":"/ui5/artifacts/i562693-vkn-scaffold-fiori-ai-bridge","name":"scaffold-fiori-ai-bridge","kind":"skill","line":"An agent skill that makes a UI5 or Fiori app AI-callable: it generates the JavaScript bridge and the SAP Joule Frontend Actions YAML the app needs before an agent can reach into it.","short":"Agent skill generating a Joule Frontend Actions bridge for UI5 apps","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, ui5"},"actor:i562693-vkn":{"href":"/actors/i562693-vkn","name":"Vinay K N","kind":"person","glyph":{"type":"avatar","name":"Vinay K N","src":"/avatars/i562693-vkn.png"},"line":"maintains 1 entry, contributed to 2 entries"},"artifact:ibm-abap-sdk-nwas-x":{"href":"/abap/artifacts/ibm-abap-sdk-nwas-x","name":"abap-sdk-nwas-x","kind":"package","line":"An ABAP client library for IBM's watsonx.ai and watsonx.ai Runtime APIs, installed into an SAP NetWeaver AS ABAP system through abapGit, generating and refreshing the IAM token from an API key.","short":"ABAP client library for IBM watsonx.ai APIs","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-12"},"ai":true,"meta":"independent, abap"},"actor:ibm":{"href":"/actors/ibm","name":"International Business Machines","kind":"org","glyph":{"type":"avatar","name":"International Business Machines","ring":"independent","src":"/avatars/ibm.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:iljapostnovs-ui5plugin-linter":{"href":"/ui5/artifacts/iljapostnovs-ui5plugin-linter","name":"ui5plugin-linter","kind":"cli","line":"A command-line linter for UI5 projects, run as ui5linter, that checks JavaScript and TypeScript classes, XML views and fragments, and i18n properties files.","short":"Command-line linter for UI5 classes, XML views and i18n files","chip":{"label":"Maintenance","tier":"poor","evidence":"16 months since release"},"ai":true,"meta":"independent, ui5"},"actor:iljapostnovs":{"href":"/actors/iljapostnovs","name":"Ilja Postnovs","kind":"person","glyph":{"type":"avatar","name":"Ilja Postnovs","src":"/avatars/iljapostnovs.png"},"line":"maintains 3 entries, contributed to 3 entries"},"artifact:iljapostnovs-ui5plugin-parser":{"href":"/ui5/artifacts/iljapostnovs-ui5plugin-parser","name":"ui5plugin-parser","kind":"package","line":"An npm library that reads the metadata of the standard SAPUI5 classes and parses a project's own UI5 classes into objects listing their fields, methods, properties, aggregations, associations and events.","short":"npm library parsing SAPUI5 and project UI5 class metadata","chip":{"label":"Maintenance","tier":"poor","evidence":"16 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:iljapostnovs-ui5plugin":{"href":"/ui5/artifacts/iljapostnovs-ui5plugin","name":"ui5plugin","kind":"ide-extension","line":"The SAPUI5 Extension for Visual Studio Code: completion, definitions, CodeLens, diagnostics, code actions, hover and an XML formatter for UI5 views, controllers and manifest.json.","short":"SAPUI5 extension for Visual Studio Code","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-02"},"ai":true,"meta":"independent, ui5"},"artifact:invixo-abapmq":{"href":"/abap/artifacts/invixo-abapmq","name":"INVIXO/abapMQ","kind":"package","line":"An MQTT client implemented in ABAP, supporting protocol version 3.1.1, so an ABAP program can publish and subscribe to a broker; it requires ABAP 750sp01 and installs through abapGit.","short":"MQTT 3.1.1 client implemented in ABAP","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-02"},"ai":true,"meta":"independent, abap"},"actor:invixo":{"href":"/actors/invixo","name":"INVIXO Consulting Group A/S","kind":"org","glyph":{"type":"avatar","name":"INVIXO Consulting Group A/S","ring":"independent","src":"/avatars/invixo.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:irodrigob-alv-utilities":{"href":"/abap/artifacts/irodrigob-alv-utilities","name":"alv_utilities","kind":"package","line":"A single ABAP class that wraps the SALV framework so a report, dynpro or popup listing sets column text, colour, alignment, layout and sorting in single method calls, built against ABAP 7.0.","short":"ABAP class wrapping SALV to set column properties in one call","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2020-03"},"ai":true,"meta":"independent, abap"},"actor:irodrigob":{"href":"/actors/irodrigob","name":"Iván Rodrigo","kind":"person","glyph":{"type":"avatar","name":"Iván Rodrigo","src":"/avatars/irodrigob.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:irumudipriyan-sap-tcode-runner":{"href":"/abap/artifacts/irumudipriyan-sap-tcode-runner","name":"SAP TCode Runner","kind":"ide-extension","line":"A VS Code extension that opens an SAP transaction inside VS Code's Simple Browser through the system's WebGUI endpoint, with a sidebar for the code, its favourites and the transactions run last.","short":"VS Code sidebar that opens SAP transactions through WebGUI","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"independent, abap"},"artifact:ivanfemia-abap2gapps":{"href":"/abap/artifacts/ivanfemia-abap2gapps","name":"abap2gapps","kind":"package","line":"An ABAP API for Google Apps integration, with a program, ZGAPPS_UPLOAD, that uploads a chosen file from the SAP system to Google Docs through a consumer registered for OAuth 2.0.","short":"ABAP API for Google Apps, with upload to Google Docs","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2018-08"},"ai":true,"meta":"independent, abap"},"actor:ivanfemia":{"href":"/actors/ivanfemia","name":"Ivan","kind":"person","glyph":{"type":"avatar","name":"Ivan","src":"/avatars/ivanfemia.png"},"line":"maintains 2 entries, contributed to 4 entries"},"artifact:ivanfemia-abap2oauth2":{"href":"/abap/artifacts/ivanfemia-abap2oauth2","name":"abap2oauth2","kind":"package","line":"An ABAP API for OAuth 2.0 authentication that registers a provider's client ID and secret as a named consumer and implements signature method 3, the one Google uses.","short":"ABAP API for OAuth 2.0 authentication","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2018-08"},"ai":true,"meta":"independent, abap"},"artifact:jchirk-ui5-i18n-excel-converter":{"href":"/ui5/artifacts/jchirk-ui5-i18n-excel-converter","name":"ui5-i18n-excel-converter","kind":"cli","line":"A command-line tool that exports a UI5 app's i18n properties files to an Excel sheet of keys and languages for translators and imports the translated sheet back into the files.","short":"CLI converting UI5 i18n properties files to Excel and back","chip":{"label":"Maintenance","tier":"poor","evidence":"39 months since release"},"ai":true,"meta":"independent, ui5"},"actor:jchirk":{"href":"/actors/jchirk","name":"jchirk","kind":"person","glyph":{"type":"avatar","name":"jchirk","src":"/avatars/jchirk.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:jerome-benoit-sap-ai-provider":{"href":"/cap/artifacts/jerome-benoit-sap-ai-provider","name":"@jerome-benoit/sap-ai-provider","kind":"package","line":"A provider for the Vercel AI SDK that speaks to SAP AI Core through its orchestration or foundation models API, so an application written against that SDK runs on SAP's models without being rewritten.","short":"Vercel AI SDK provider for SAP AI Core","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"independent, cap"},"actor:jerome-benoit":{"href":"/actors/jerome-benoit","name":"Jérôme Benoit","kind":"person","glyph":{"type":"avatar","name":"Jérôme Benoit","src":"/avatars/jerome-benoit.png"},"line":"maintains 1 entry, contributed to 6 entries"},"artifact:jfilak-sapcli-claude-plugin":{"href":"/abap/artifacts/jfilak-sapcli-claude-plugin","name":"sapcli Claude Code Plugin","kind":"skill","line":"Two agents and two skills for Claude Code that drive sapcli, the long-standing command line to SAP products, to explore and develop classic ABAP objects rather than speaking ADT directly.","short":"Agents and skills that drive sapcli instead of ADT","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"independent, abap"},"actor:jfilak":{"href":"/actors/jfilak","name":"Jakub Filak","kind":"person","glyph":{"type":"avatar","name":"Jakub Filak","src":"/avatars/jfilak.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:jrgkraus-abap-alv-struc-viewer":{"href":"/abap/artifacts/jrgkraus-abap-alv-struc-viewer","name":"abap-alv-struc-viewer","kind":"package","line":"An ABAP tool that generates an ALV table view straight from a DDIC structure, as a control-driven substitute for classic dynpro fields, with search help, validation and formatting from the structure.","short":"ALV table view generated from a DDIC structure","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-09"},"ai":true,"meta":"independent, abap"},"actor:jrgkraus":{"href":"/actors/jrgkraus","name":"Jörg Krause","kind":"person","glyph":{"type":"avatar","name":"Jörg Krause","src":"/avatars/jrgkraus.png"},"line":"maintains 5 entries, contributed to 6 entries"},"artifact:jrgkraus-abap-gencust":{"href":"/abap/artifacts/jrgkraus-abap-gencust","name":"abap-gencust","kind":"package","line":"A generic customizing table pair and reader class for ad hoc configuration parameters in ABAP, replacing a new table, view and access routine per parameter, with values per user or key date.","short":"Generic customizing table and reader for ad hoc ABAP parameters","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"independent, abap"},"artifact:jrgkraus-abap-ui-tools":{"href":"/abap/artifacts/jrgkraus-abap-ui-tools","name":"abap-ui-tools","kind":"package","line":"A helper class for the classic ABAP dynpro UI: hiding, disabling and requiring screen fields, setting dropdown values, and asking yes/no questions, in single calls.","short":"Helper class for classic ABAP dynpro field handling and popups","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"independent, abap"},"artifact:jrgkraus-tool-bi":{"href":"/abap/artifacts/jrgkraus-tool-bi","name":"tool-bi","kind":"package","line":"Builds an ABAP batch input transaction through chained method calls, one per screen, field and value, then runs it directly or writes it to a batch input session.","short":"Chained-call builder for ABAP batch input transactions","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-04"},"ai":true,"meta":"independent, abap"},"artifact:jrgkraus-zotr-utility":{"href":"/abap/artifacts/jrgkraus-zotr-utility","name":"ZOTR_UTILITY","kind":"package","line":"A small ABAP framework that reads language-dependent texts from SAP's online text repository through inheritance and named constants rather than a direct API call with a string alias.","short":"ABAP framework reading texts from SAP's online text repository","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-04"},"ai":true,"meta":"independent, abap"},"artifact:jrodriguez-rc-abap-tasks-tracker":{"href":"/abap/artifacts/jrodriguez-rc-abap-tasks-tracker","name":"abap-tasks-tracker","kind":"sample","line":"A task-management tool for SAP projects, built on a CDS view over a BOPF business object with a Fiori list report as its interface, showing that transactional model wired end to end.","short":"Task tracker on a BOPF-backed CDS view with a Fiori list report","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2022-09"},"ai":true,"meta":"independent, abap"},"actor:jrodriguez-rc":{"href":"/actors/jrodriguez-rc","name":"Jaime Rodriguez Capote","kind":"person","glyph":{"type":"avatar","name":"Jaime Rodriguez Capote","src":"/avatars/jrodriguez-rc.png"},"line":"maintains 1 entry, contributed to 9 entries"},"artifact:jumenengels-sac-mcp":{"href":"/btp/artifacts/jumenengels-sac-mcp","name":"sap_analytics_cloud_mcp","kind":"mcp-server","line":"The SAP Analytics Cloud REST API as ninety tools across eleven service areas — content, data import and export, user management, transport, scheduling and translation.","short":"MCP server for the SAP Analytics Cloud REST API","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"independent, btp"},"actor:jumenengels":{"href":"/actors/jumenengels","name":"Jumen Engels","kind":"person","glyph":{"type":"avatar","name":"Jumen Engels","src":"/avatars/jumenengels.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:kallolchakraborty-cap-guardian":{"href":"/cap/artifacts/kallolchakraborty-cap-guardian","name":"CAP Guardian","kind":"skill","line":"A CAP review skill for coding agents with hard gates, red flags and prohibitions across nine reference modules, each rule citing the capire page behind it in an evidence ledger.","short":"CAP review skill for coding agents with gates and prohibitions","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"independent, cap"},"artifact:kamilkov-supply-chain-rescue":{"href":"/cap/artifacts/kamilkov-supply-chain-rescue","name":"Supply Chain Rescue","kind":"sample","line":"A CAP and SAPUI5 demo of recovery from a supply disruption: the server calculates every proposal and an approver applies it, with a battery recall traced in an ABAP system through HANA Graph openCypher.","short":"CAP and SAPUI5 demo of recovery from a supply disruption","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, cap"},"actor:kamilkov":{"href":"/actors/kamilkov","name":"Kamil Kováč","kind":"person","glyph":{"type":"avatar","name":"Kamil Kováč","src":"/avatars/kamilkov.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:kamlendra-search-vocab":{"href":"/cap/artifacts/kamlendra-search-vocab","name":"@kamlendra/search-vocab","kind":"cds-plugin","line":"A CDS annotation vocabulary for entity search — @search.entity.group, @search.autocomplete and friends — with a schema-discovery service exposing getEntities and getSchema.","short":"CDS annotation vocabulary for entity search with schema discovery","chip":{"label":"Maintenance","tier":"fair","evidence":"12 months since release"},"ai":true,"meta":"independent, cap"},"artifact:kamlendra-urp-vocab":{"href":"/cap/artifacts/kamlendra-urp-vocab","name":"urp-vocab","kind":"package","line":"A CDS vocabulary for User-Rendered Patterns, with @urp.display annotations describing views, card templates, layouts and sections on an entity, consumed by the author's own matching renderer.","short":"CDS vocabulary for User-Rendered Patterns display annotations","chip":{"label":"Maintenance","tier":"poor","evidence":"13 months since release"},"ai":true,"meta":"independent, cap"},"artifact:kaszub09-abapdatatotableimport":{"href":"/abap/artifacts/kaszub09-abapdatatotableimport","name":"abapDataToTableImport","kind":"package","line":"An ABAP framework that declares a target structure in code and maps data a user supplies from a clipboard, an Excel file, a text file or an internal table onto it, with drag-and-drop column mapping.","short":"Maps clipboard, Excel or text data onto a declared ABAP structure","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:kaszub09":{"href":"/actors/kaszub09","name":"Marcin Kaszuba","kind":"person","glyph":{"type":"avatar","name":"Marcin Kaszuba","src":"/avatars/kaszub09.png"},"line":"maintains 6 entries, contributed to 8 entries"},"artifact:kaszub09-abapeasyalv":{"href":"/abap/artifacts/kaszub09-abapeasyalv","name":"abapEasyALV","kind":"package","line":"Wrapper classes over the classic ALV and SALV frameworks that collect commonly used reporting actions behind fewer method calls, so a report displays a table with set_data and display_data.","short":"Wrapper classes over classic ALV and SALV reporting","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, abap"},"artifact:kaszub09-abaptoc":{"href":"/abap/artifacts/kaszub09-abaptoc","name":"abapToC","kind":"app","line":"An SAP GUI transaction, ZTOC, that creates, releases and imports a transport of copies from one screen, retrying the import until the copy is visible on the target system.","short":"SAP GUI transaction for one-click transports of copies","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:kaszub09-zabap-sap-enhancements":{"href":"/abap/artifacts/kaszub09-zabap-sap-enhancements","name":"ZABAP_SAP_ENHANCEMENTS","kind":"app","line":"A report that lists the user-exits, BAdIs and enhancement spots available for an SAP program, with each implementation and whether it is active or for SAP-internal use only.","short":"Report listing user-exits, BAdIs and enhancement spots of a program","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-09"},"ai":true,"meta":"independent, abap"},"artifact:kaszub09-zabap-table-edit":{"href":"/abap/artifacts/kaszub09-zabap-table-edit","name":"ZABAP_TABLE_EDIT","kind":"app","line":"A generic ABAP transaction that edits any table's rows and writes its own change documents, without generating an SM30 maintenance dialog, and is extended per table through an interface.","short":"Generic ABAP table editor writing its own change documents","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, abap"},"artifact:kaszub09-zabap-translations":{"href":"/abap/artifacts/kaszub09-zabap-translations","name":"ZABAP_TRANSLATIONS","kind":"app","line":"An ABAP tool that exports the texts of a package or program to an Excel file and imports them back in bulk once translated, covering eight object types from programs and classes to domain values.","short":"Excel export and import of ABAP package or program texts","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-07"},"ai":true,"meta":"independent, abap"},"artifact:keelside-mcp-sap-cpi":{"href":"/btp/artifacts/keelside-mcp-sap-cpi","name":"mcp-sap-cpi","kind":"mcp-server","line":"The runtime half of Cloud Integration: failed messages with their full processing logs and traces, artifact deployment, security material, and a health summary.","short":"MCP server for Cloud Integration runtime: messages, logs, deployment","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"independent, btp"},"actor:keelside":{"href":"/actors/keelside","name":"Keelside","kind":"org","glyph":{"type":"avatar","name":"Keelside","ring":"independent","src":"/avatars/keelside.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:khalidmh-capx":{"href":"/cap/artifacts/khalidmh-capx","name":"@khalidmh/capx","kind":"generator","line":"An opinionated installer for CAP Node.js projects — asks a short set of questions, runs cds init, adds the chosen facets, then writes the configuration and starter files that make those choices work together.","short":"Interactive project installer for CAP Node.js","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, cap"},"actor:khalidmh":{"href":"/actors/khalidmh","name":"Khalid Marhoum","kind":"person","glyph":{"type":"avatar","name":"Khalid Marhoum","src":"/avatars/khalidmh.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:krish469-sap-cap-mongodb":{"href":"/cap/artifacts/krish469-sap-cap-mongodb","name":"sap-cap-mongodb","kind":"sample","line":"A CAP service reading and writing MongoDB from hand-written handlers that replace the persistence layer while keeping the CDS model and service, with a UI5 front end over the v2 proxy.","short":"CAP service reading and writing MongoDB from custom handlers","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-01"},"ai":true,"meta":"independent, cap"},"actor:krish469":{"href":"/actors/krish469","name":"krish469","kind":"person","glyph":{"type":"avatar","name":"krish469","ring":"independent","src":"/avatars/krish469.png"},"line":"maintains 1 entry, wrote 1 post, contributed to 1 entry","meta":"independent"},"artifact:kseretis-abap-metrics":{"href":"/abap/artifacts/kseretis-abap-metrics","name":"abap-metrics","kind":"app","line":"An ABAP program that calculates software-engineering metrics for a class or a whole package, from lines of code and statements to complexity, coupling between objects and lack of cohesion.","short":"Software-engineering metrics for an ABAP class or package","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-03"},"ai":true,"meta":"independent, abap"},"actor:kseretis":{"href":"/actors/kseretis","name":"Seretis Kleanthis","kind":"person","glyph":{"type":"avatar","name":"Seretis Kleanthis","src":"/avatars/kseretis.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:ktaubmann-bella":{"href":"/abap/artifacts/ktaubmann-bella","name":"Bella","kind":"ide-extension","line":"An Eclipse plugin that puts Claude into ABAP Development Tools: explain, generate, rework and implement from the editor's context menu, completion as ghost text, and a chat whose tools reach the system through the developer's existing ADT logon.","short":"Eclipse plugin bringing Claude into ABAP Development Tools","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:ktaubmann":{"href":"/actors/ktaubmann","name":"Kilian Taubmann","kind":"person","glyph":{"type":"avatar","name":"Kilian Taubmann","src":"/avatars/ktaubmann.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:kts982-mcp-sap-gui":{"href":"/abap/artifacts/kts982-mcp-sap-gui","name":"kts982/mcp-sap-gui","kind":"mcp-server","line":"SAP GUI for Windows through the Scripting API, deliberately client-agnostic, with CI, docs, a dependency audit and tagged releases wired up around it.","short":"MCP server for SAP GUI for Windows via the Scripting API","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:kts982":{"href":"/actors/kts982","name":"Kostas T.","kind":"person","glyph":{"type":"avatar","name":"Kostas T.","src":"/avatars/kts982.png"},"line":"maintains 2 entries, contributed to 5 entries"},"artifact:kts982-sap-odata-explorer":{"href":"/btp/artifacts/kts982-sap-odata-explorer","name":"sap-odata-explorer","kind":"desktop-app","line":"A Rust CLI and desktop app for exploring and testing SAP OData services against real systems — catalog discovery, metadata browsing, an F4 value-help picker and a Fiori-readiness linter — with an agent skill shipped beside it.","short":"Rust CLI and desktop app for exploring SAP OData services","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, btp"},"artifact:larshp-abap-object-visualizer":{"href":"/abap/artifacts/larshp-abap-object-visualizer","name":"ABAP-Object-Visualizer","kind":"app","line":"A debugger script that writes an object hierarchy to the clipboard at a breakpoint as a Graphviz description, for pasting into a renderer such as webgraphviz.com.","short":"Debugger script exporting an object hierarchy as Graphviz","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-03"},"ai":true,"meta":"independent, abap"},"artifact:larshp-abap-swagger":{"href":"/abap/artifacts/larshp-abap-swagger","name":"ABAP-Swagger","kind":"package","line":"An ABAP library that exposes a class's public methods as REST services, registered through the ZIF_SWAG_HANDLER interface, with a Swagger UI on the same base path describing them.","short":"Exposes ABAP class methods as REST services with Swagger UI","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2022-11"},"ai":true,"meta":"independent, abap"},"artifact:larshp-abapcov":{"href":"/abap/artifacts/larshp-abapcov","name":"abapCov","kind":"app","line":"A report, ZABAPCOV, that uploads ABAP Unit test code coverage results to codecov.io, once the repository is installed through abapGit and codecov.io's certificates through STRUST.","short":"Uploads ABAP Unit code coverage to codecov.io","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-03"},"ai":true,"meta":"independent, abap"},"artifact:larshp-abapgitserver":{"href":"/abap/artifacts/larshp-abapgitserver","name":"abapGitServer","kind":"app","line":"A git server implemented in ABAP, so an SAP system can host repositories with branches and merge requests that an abapGit client pulls from and pushes to.","short":"Git server implemented in ABAP for abapGit clients","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"independent, abap"},"artifact:larshp-abapntlm":{"href":"/abap/artifacts/larshp-abapntlm","name":"abapNTLM","kind":"package","line":"An HTTP NTLM client for ABAP, with the RC4, MD4 and DES algorithms the protocol needs implemented in ABAP, which its maintainer says seems to work only some of the time.","short":"HTTP NTLM client for ABAP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"independent, abap"},"artifact:larshp-abapopenchecks":{"href":"/abap/artifacts/larshp-abapopenchecks","name":"abapOpenChecks","kind":"package","line":"An open-source rule pack for SAP Code Inspector and ABAP Test Cockpit, installed via abapGit and activated as a check variant.","short":"Open-source rule pack for SAP Code Inspector and ATC","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:larshp-abapopenreview":{"href":"/abap/artifacts/larshp-abapopenreview","name":"abapOpenReview","kind":"app","line":"A code-review tool for SAP GUI that ties a checklist to a transport request: a transport whose diff contains code must be approved before it can be released.","short":"SAP GUI code review tied to transport release","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-03"},"ai":true,"meta":"independent, abap"},"artifact:larshp-abappgp":{"href":"/abap/artifacts/larshp-abappgp","name":"abapPGP","kind":"package","line":"An OpenPGP implementation in ABAP, scoped to signing and marked work in progress, whose own README warns that it will most certainly contain severe bugs and points to established PGP software.","short":"OpenPGP implementation in ABAP, scoped to signing","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:larshp-formfactor":{"href":"/abap/artifacts/larshp-formfactor","name":"FORMfactor","kind":"generator","line":"A report that generates local classes with static methods from an old FORM-based ABAP program, as code to paste in by hand, without support for 740 constructs, TABLES parameters or INCLUDEs.","short":"Generates local classes from FORM-based ABAP programs","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-03"},"ai":true,"meta":"independent, abap"},"artifact:larshp-updownci":{"href":"/abap/artifacts/larshp-updownci","name":"upDOWNci","kind":"app","line":"A tool that uploads and downloads SAP Code Inspector check variants as XML files, one variant at a time or several in one ZIP file, installed through abapGit.","short":"Uploads and downloads Code Inspector check variants as XML","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"independent, abap"},"artifact:larshp-vscode-abap":{"href":"/abap/artifacts/larshp-vscode-abap","name":"ABAP Syntax Highlighting","kind":"ide-extension","line":"A VS Code extension that registers .abap files as the language abap and colours them with a TextMate grammar.","short":"VS Code syntax highlighting for .abap files","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-07"},"ai":true,"meta":"independent, abap"},"artifact:lemaiwo-ai-core-mcp-server":{"href":"/btp/artifacts/lemaiwo-ai-core-mcp-server","name":"AI Core MCP Server","kind":"mcp-server","line":"An MCP server that exposes SAP AI Core's APIs as tools, defined entirely in one JSON config file for a proxy, so deployments, configurations and scenarios are managed through an assistant.","short":"SAP AI Core APIs as MCP tools from one JSON config file","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"independent, btp"},"actor:lemaiwo":{"href":"/actors/lemaiwo","name":"Wouter Lemaire","kind":"person","glyph":{"type":"avatar","name":"Wouter Lemaire","ring":"independent","src":"/avatars/lemaiwo.png"},"line":"maintains 25 entries, created 12 pieces, contributed to 39 entries","meta":"independent"},"artifact:lemaiwo-btp-agent":{"href":"/cap/artifacts/lemaiwo-btp-agent","name":"btp-agent","kind":"sample","line":"One LangGraph agent in a CAP service, with a UI5 chat screen in front of it and four odata-mcp-proxy MCP server modules behind it, deployed to Cloud Foundry as a single MTA.","short":"LangGraph agent and UI5 chat screen over four BTP MCP servers","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"independent, cap"},"artifact:lemaiwo-btp-application-vulnerability-report-ui":{"href":"/cap/artifacts/lemaiwo-btp-application-vulnerability-report-ui","name":"btpvulnerabilityreport","kind":"sample","line":"A CAP application that displays findings from the BTP Application Vulnerability Report, a working CAP and Fiori app running on HANA.","short":"CAP and Fiori app showing BTP Application Vulnerability Report data","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-02"},"ai":true,"meta":"independent, cap"},"artifact:lemaiwo-btp-cf-mcp-server":{"href":"/btp/artifacts/lemaiwo-btp-cf-mcp-server","name":"BTP CF MCP Server","kind":"mcp-server","line":"The Cloud Foundry V3 API on SAP BTP as MCP tools — apps, orgs, spaces, services, routes and quotas — declared in one JSON config file and run by odata-mcp-proxy.","short":"Cloud Foundry V3 API on SAP BTP as MCP tools","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"independent, btp"},"artifact:lemaiwo-btp-drawio-skill":{"href":"/btp/artifacts/lemaiwo-btp-drawio-skill","name":"btp-solution-diagram-generator","kind":"skill","line":"A Claude plugin that writes BTP solution diagrams as .drawio files in the style of the SAP BTP Solution Diagram Guidelines.","short":"Claude plugin writing BTP solution diagrams as .drawio files","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"independent, btp"},"artifact:lemaiwo-btp-mcp-server":{"href":"/btp/artifacts/lemaiwo-btp-mcp-server","name":"BTP MCP Server","kind":"mcp-server","line":"BTP Core Services as MCP tools, and the only server in this corner that renders dashboards inside the chat — a subaccount overview with drill-down, a geomap of data-centre locations, consumption and users.","short":"BTP Core Services as MCP tools with in-chat dashboards","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"independent, btp"},"artifact:lemaiwo-btp-sap-odata-to-mcp-server":{"href":"/btp/artifacts/lemaiwo-btp-sap-odata-to-mcp-server","name":"btp-sap-odata-to-mcp-server","kind":"mcp-server","line":"Exposes every OData service on an S/4HANA or ECC system as MCP tools, in three discovery levels so a large catalogue does not have to be loaded at once.","short":"Exposes S/4HANA or ECC OData services as MCP tools","chip":{"label":"Maintenance","tier":"poor","evidence":"13 months since release"},"ai":true,"meta":"independent, btp"},"artifact:lemaiwo-cap-agent-ui5-webui-sample":{"href":"/cap/artifacts/lemaiwo-cap-agent-ui5-webui-sample","name":"cap-agent-ui5-webui-sample","kind":"sample","line":"A worked example of the cap-agent-ui5-webui plugin, shown running locally, in hybrid mode against SAP AI Core, and deployed.","short":"Worked example of the cap-agent-ui5-webui plugin","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"independent, cap"},"artifact:lemaiwo-cap-agent-ui5-webui":{"href":"/cap/artifacts/lemaiwo-cap-agent-ui5-webui","name":"cap-agent-ui5-webui","kind":"cds-plugin","line":"Gives a CAP agent a UI5 web interface out of the box, so an agent built in the service has somewhere to be talked to without a separate frontend project.","short":"UI5 web interface for an agent built in a CAP service","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, cap"},"artifact:lemaiwo-cds-plugin-handlers":{"href":"/cap/artifacts/lemaiwo-cds-plugin-handlers","name":"cds-plugin-handlers","kind":"cds-plugin","line":"A CAP plugin that structures handlers as one file per entity, in a folder per service, instead of one service implementation that keeps growing.","short":"One handler file per entity in CAP services","chip":{"label":"Maintenance","tier":"poor","evidence":"20 months since release"},"ai":true,"meta":"independent, cap"},"artifact:lemaiwo-ci-mcp-server":{"href":"/btp/artifacts/lemaiwo-ci-mcp-server","name":"CI MCP Server","kind":"mcp-server","line":"An MCP server that exposes SAP Cloud Integration's OData APIs as tools, defined entirely in one JSON config file, so an assistant works integration content, logs and configurations in natural language.","short":"SAP Cloud Integration OData APIs as MCP tools","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"independent, btp"},"artifact:lemaiwo-odata-mcp-proxy":{"href":"/btp/artifacts/lemaiwo-odata-mcp-proxy","name":"odata-mcp-proxy","kind":"mcp-server","line":"A config-driven proxy that turns OData and REST endpoints into MCP tools from a JSON file — no code — and runs on BTP Cloud Foundry against BTP Destinations.","short":"Config-driven proxy turning OData and REST endpoints into MCP tools","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, btp"},"artifact:lemaiwo-ui5-ai-features-demo":{"href":"/cap/artifacts/lemaiwo-ui5-ai-features-demo","name":"ui5-ai-features-demo","kind":"sample","line":"A product-review screen on CAP and SAPUI5 that consumes ui5-cap-ai-features and contains no library source at all — written to prove the package is enough on its own.","short":"Product-review screen consuming ui5-cap-ai-features on CAP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"independent, cap"},"artifact:lemaiwo-ui5-cap-ai-features":{"href":"/cap/artifacts/lemaiwo-ui5-cap-ai-features","name":"ui5-cap-ai-features","kind":"cds-plugin","line":"Both halves of an AI text feature in one package: a CDS plugin serving an AIService over SAP AI Core's Orchestration Service, and the be.wl.ai UI5 control library that calls exactly that service.","short":"CDS plugin and UI5 controls for AI text features via SAP AI Core","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"independent, cap"},"artifact:lemaiwo-ui5-cap-serverside-rendering-demo":{"href":"/cap/artifacts/lemaiwo-ui5-cap-serverside-rendering-demo","name":"ui5-cap-serverside-rendering-demo","kind":"sample","line":"The demo project the ui5-cap-serverside-rendering-plugin README points to: a CAP bookshop whose Books list and detail views sit in srv/views and reach the browser already filled with data.","short":"Demo CAP bookshop with server-rendered UI5 views","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-10"},"ai":true,"meta":"independent, cap"},"artifact:lemaiwo-ui5-cap-serverside-rendering-plugin":{"href":"/cap/artifacts/lemaiwo-ui5-cap-serverside-rendering-plugin","name":"ui5-cap-serverside-rendering-plugin","kind":"cds-plugin","line":"A CAP plugin that fills UI5 views and fragments with entity data on the server through Handlebars and streams them as XML, and renders a Vue app to HTML on a route of its own.","short":"CAP plugin rendering UI5 views with entity data on the server","chip":{"label":"Maintenance","tier":"poor","evidence":"16 months since release"},"ai":true,"meta":"independent, cap"},"artifact:lemaiwo-ui5-control-generator":{"href":"/ui5/artifacts/lemaiwo-ui5-control-generator","name":"ui5-control-generator","kind":"generator","line":"A command-line generator that writes UI5 custom controls, in JavaScript or TypeScript, from the html files in a project, with control logic and renderer split into two files by default.","short":"Command line generator of UI5 custom controls from html","chip":{"label":"Maintenance","tier":"poor","evidence":"29 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:lemaiwo-ui5-middleware-route-proxy":{"href":"/ui5/artifacts/lemaiwo-ui5-middleware-route-proxy","name":"ui5-middleware-route-proxy","kind":"build-tool","line":"A UI5 server middleware that forwards requests matching a route prefix to a backend host, configured per route in ui5.yaml, with credentials read from a .env file rather than the yaml.","short":"UI5 server middleware proxying route prefixes to a backend","chip":{"label":"Maintenance","tier":"poor","evidence":"58 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:lemaiwo-ui5-space-webcomponent-library":{"href":"/ui5/artifacts/lemaiwo-ui5-space-webcomponent-library","name":"ui5-space-webcomponent-library","kind":"sample","line":"A step-by-step UI5 library, be.wl.SpaceLibrary, that wraps the components of a UI5 Web Components package as UI5 controls through @ui5/tooling-webc, with a kitchen-sink page to test them.","short":"UI5 library wrapping a UI5 Web Components package, step by step","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-09"},"ai":true,"meta":"independent, ui5"},"artifact:lemaiwo-ui5-space-webcomponent-package":{"href":"/ui5/artifacts/lemaiwo-ui5-space-webcomponent-package","name":"ui5-space-webcomponent-package","kind":"sample","line":"A step-by-step UI5 Web Components package, titled UI5con2023, with a SpaceComponent and a SpaceItemComponent written in TypeScript, which the matching UI5 library wraps as controls.","short":"Step-by-step UI5 Web Components package in TypeScript","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-09"},"ai":true,"meta":"independent, ui5"},"artifact:lemaiwo-ui5-task-cachebuster-indexing":{"href":"/ui5/artifacts/lemaiwo-ui5-task-cachebuster-indexing","name":"ui5-task-cachebuster-indexing","kind":"build-tool","line":"A UI5 builder task that copies the build output into a timestamped folder inside dist so the UI5 cachebuster can resolve it; it supports timestamps only, not the hash mode.","short":"UI5 builder task preparing build output for the cachebuster","chip":{"label":"Maintenance","tier":"poor","evidence":"66 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:lemaiwo-ui5-task-transpile-gen":{"href":"/ui5/artifacts/lemaiwo-ui5-task-transpile-gen","name":"ui5-task-transpile-gen","kind":"build-tool","line":"A UI5 builder task that transpiles ES6 to ES5, including async/await, with Babel at build time, registered in ui5.yaml with a bundle definition that includes the regenerator runtime.","short":"UI5 builder task transpiling ES6 to ES5 with Babel","chip":{"label":"Maintenance","tier":"poor","evidence":"79 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:likweitan-abap-skills":{"href":"/abap/artifacts/likweitan-abap-skills","name":"abap-skills","kind":"skill","line":"Seventeen agent skills for ABAP development in one repository: RAP, CDS view entities, ABAP SQL and AMDP, unit testing, authorisation, eventing, abapGit, ABAP Cloud and the clean core levels.","short":"Seventeen agent skills for ABAP development","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:likweitan":{"href":"/actors/likweitan","name":"Lik Wei","kind":"person","glyph":{"type":"avatar","name":"Lik Wei","src":"/avatars/likweitan.png"},"line":"maintains 1 entry, contributed to 3 entries"},"artifact:lofond-drawio-skill-sap":{"href":"/btp/artifacts/lofond-drawio-skill-sap","name":"drawio-skill-sap","kind":"skill","line":"A GitHub Copilot agent skill that writes BTP solution diagrams as uncompressed draw.io XML against the SAP BTP Solution Diagram Design Guideline, with SAP's own shape library bundled.","short":"GitHub Copilot skill writing BTP solution diagrams as draw.io XML","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, btp"},"actor:lofond":{"href":"/actors/lofond","name":"lofonD","kind":"person","glyph":{"type":"avatar","name":"lofonD","src":"/avatars/lofond.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:logalitech-sap-mdk-apps":{"href":"/btp/artifacts/logalitech-sap-mdk-apps","name":"sap-mdk-apps","kind":"skill","line":"An agent skill for Mobile Development Kit projects: the project layout, the metadata syntax, and the rules that prevent the failures those two produce on iOS, Android and the web.","short":"Agent skill for Mobile Development Kit projects","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, btp"},"actor:logalitech":{"href":"/actors/logalitech","name":"Logali Tech","kind":"org","glyph":{"type":"avatar","name":"Logali Tech","ring":"independent","src":"/avatars/logalitech.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:lopezmas-sap-pi-mcp-server":{"href":"/btp/artifacts/lopezmas-sap-pi-mcp-server","name":"sap-pi-mcp-server","kind":"mcp-server","line":"The only entry pointed at SAP PI and PO rather than at Cloud Integration — monitoring and Integration Directory metadata from the middleware that came before.","short":"MCP server for SAP PI and PO monitoring and directory metadata","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"independent, btp"},"actor:lopezmas":{"href":"/actors/lopezmas","name":"Pablo Lopez","kind":"person","glyph":{"type":"avatar","name":"Pablo Lopez","src":"/avatars/lopezmas.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:lorenzobigs-cap-utils":{"href":"/cap/artifacts/lorenzobigs-cap-utils","name":"cap-utils","kind":"generator","line":"An npx tool that drops worked example files into an existing CAP project, including a test.http to fire requests at what it added, for exploring CAP features you then extend yourself.","short":"npx tool adding worked example files to a CAP project","chip":{"label":"Maintenance","tier":"poor","evidence":"30 months since release"},"ai":true,"meta":"independent, cap"},"actor:lorenzobigs":{"href":"/actors/lorenzobigs","name":"lorenzobigs","kind":"person","glyph":{"type":"avatar","name":"lorenzobigs","src":"/avatars/lorenzobigs.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:magpasulke-abap-string-interpreter":{"href":"/abap/artifacts/magpasulke-abap-string-interpreter","name":"ZASIS","kind":"package","line":"The ABAP String Interpreter: an ABAP component that reads named field values out of an unstructured string, such as a barcode or scanner payload, through regex RuleSets configured in a Fiori app and called from ABAP or over HTTP.","short":"Regex RuleSets that read barcode strings into named fields","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:magpasulke":{"href":"/actors/magpasulke","name":"Philipp Dölker","kind":"person","glyph":{"type":"avatar","name":"Philipp Dölker","src":"/avatars/magpasulke.png"},"line":"maintains 1 entry, contributed to 2 entries"},"artifact:maherd18-sap-mcp-server":{"href":"/abap/artifacts/maherd18-sap-mcp-server","name":"Maherd18/sap-mcp-server","kind":"mcp-server","line":"An MCP server for ABAP development over the ADT resources: eight tools, each checked against a JSON policy file before the call reaches the system, with activation and transport release held for a person to approve.","short":"Policy-checked MCP server for ABAP development over ADT","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, abap"},"actor:maherd18":{"href":"/actors/maherd18","name":"Maher Darweesh","kind":"person","glyph":{"type":"avatar","name":"Maher Darweesh","src":"/avatars/maherd18.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:marc-bernard-tools-abap-tools-for-abapgit":{"href":"/abap/artifacts/marc-bernard-tools-abap-tools-for-abapgit","name":"Tools for abapGit","kind":"app","line":"A collection of helper programs around abapGit: start variants, mass label maintenance, repository export, a scheduler for the background logic, and the SSL test tool.","short":"Helper programs around abapGit","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, abap"},"actor:marc-bernard-tools":{"href":"/actors/marc-bernard-tools","name":"Marc Bernard Tools","kind":"org","glyph":{"type":"avatar","name":"Marc Bernard Tools","ring":"independent","src":"/avatars/marc-bernard-tools.png"},"line":"maintains 3 entries","meta":"independent"},"artifact:marc-bernard-tools-abaplint-ext-for-abapgit":{"href":"/abap/artifacts/marc-bernard-tools-abaplint-ext-for-abapgit","name":"abaplint-Ext-for-abapGit","kind":"package","line":"Surfaces abaplint results inside abapGit itself, at the point where a developer is already looking.","short":"Shows abaplint results inside abapGit","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:marc-bernard-tools-mbt-logical-object-lister":{"href":"/abap/artifacts/marc-bernard-tools-mbt-logical-object-lister","name":"MBT Logical Object Lister","kind":"app","line":"An app that reads the object model of an SAP BW, SAP BPC or SAP BW/4HANA system and displays its metadata, deployed into that system with the MBT Installer rather than abapGit.","short":"Metadata viewer for SAP BW, SAP BPC and SAP BW/4HANA object models","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-12"},"ai":true,"meta":"independent, abap"},"artifact:marcellourbani-abap-cloud-platform":{"href":"/btp/artifacts/marcellourbani-abap-cloud-platform","name":"abap_cloud_platform","kind":"package","line":"A TypeScript library of the Cloud Foundry calls that walk down to an ABAP service instance, read its SAP_ADT service key and log a user in, so a tool outside the system can reach it.","short":"TypeScript library reaching ABAP service instances on Cloud Foundry","chip":{"label":"Maintenance","tier":"poor","evidence":"19 months since release"},"ai":true,"meta":"independent, btp"},"artifact:marcellourbani-abap-debugger-object-graph-extension":{"href":"/abap/artifacts/marcellourbani-abap-debugger-object-graph-extension","name":"abap_debugger_object_graph_extension","kind":"app","line":"An ABAP debugger extension that shows the object on the debugger's Objects tab as a Graphviz graph in a browser window, built on ABAP Graph and Graphviz-browser and tested on NetWeaver 7.5.","short":"ABAP debugger extension drawing objects as a Graphviz graph","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2018-09"},"ai":true,"meta":"independent, abap"},"artifact:marcellourbani-abap-trial-docker":{"href":"/abap/artifacts/marcellourbani-abap-trial-docker","name":"abap_trial_docker","kind":"cli","line":"Shell scripts that build a Docker image from the SAP NetWeaver ABAP Developer Edition 7.52 SP04 installation files and run it as an unprivileged container, setting the stable hostname the installer wants.","short":"Scripts running the ABAP Developer Edition in Docker","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2019-11"},"ai":true,"meta":"independent, abap"},"artifact:marcellourbani-abapfs-extensions":{"href":"/abap/artifacts/marcellourbani-abapfs-extensions","name":"abapfs_extensions","kind":"package","line":"ABAP imported with abapGit that sets the stateful session flag on systems older than 7.51, so an HTTP client of the ADT resources can update objects there.","short":"ABAP objects enabling ADT updates on systems older than 7.51","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2019-02"},"ai":true,"meta":"independent, abap"},"artifact:marcellourbani-abapgraph":{"href":"/abap/artifacts/marcellourbani-abapgraph","name":"abapgraph","kind":"package","line":"An ABAP library for creating Graphviz graphs, written to give the maintainer's own ABAP debugger object graph extension a more compact layout, with demo code as its documentation.","short":"ABAP library for creating Graphviz graphs","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2020-10"},"ai":true,"meta":"independent, abap"},"artifact:marcellourbani-abappretty":{"href":"/abap/artifacts/marcellourbani-abappretty","name":"abapPretty","kind":"cli","line":"A command-line ABAP pretty printer that formats every supported include under a base object on a server over ADT in one invocation, activates the result and can put it on a transport.","short":"Command-line ABAP pretty printer over ADT","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-01"},"ai":true,"meta":"independent, abap"},"artifact:marcellourbani-decodesapsso2":{"href":"/abap/artifacts/marcellourbani-decodesapsso2","name":"decodesapsso2","kind":"package","line":"A TypeScript library that decodes a MYSAPSSO2 logon ticket into its user, client, system and validity fields, and returns the signature without validating it, so it never shows a ticket is genuine.","short":"TypeScript decoder for MYSAPSSO2 logon tickets","chip":{"label":"Maintenance","tier":"poor","evidence":"20 months since release"},"ai":true,"meta":"independent, abap"},"artifact:marcellourbani-graphviz-browser":{"href":"/abap/artifacts/marcellourbani-graphviz-browser","name":"Graphviz-browser","kind":"web-tool","line":"A static page that draws a Graphviz graph in a browser, written for the ABAP debugger object graph extension and deployable as BSP pages in the system the debugger runs in.","short":"Static page drawing Graphviz graphs for the ABAP debugger extension","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-02"},"ai":true,"meta":"independent, abap"},"artifact:marcellourbani-personal-application-studio":{"href":"/abap/artifacts/marcellourbani-personal-application-studio","name":"personal-application-studio","kind":"desktop-app","line":"A Theia distribution for SAP developers, published as a Docker image with ABAP and UI5 language support and a template wizard already in it.","short":"Theia distribution with ABAP and UI5 support as a Docker image","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-02"},"ai":true,"meta":"independent, abap"},"artifact:marcellourbani-sapdumpmcp":{"href":"/abap/artifacts/marcellourbani-sapdumpmcp","name":"sapdumpmcp","kind":"mcp-server","line":"An MCP server for SAP dumps: it connects to an ABAP system over the ADT resources and lets an MCP client ask a dump for its description and call stack.","short":"MCP server reading ABAP short dumps over ADT","chip":{"label":"Maintenance","tier":"poor","evidence":"16 months since release"},"ai":true,"meta":"independent, abap"},"artifact:marcellourbani-urbani-saplink":{"href":"/abap/artifacts/marcellourbani-urbani-saplink","name":"urbani-saplink","kind":"app","line":"An SE16 clone shipped as SAPlink files: an ABAP report that reads a table named at runtime with up to 190 select-options, and a Web Dynpro application beside it.","short":"SE16 clone shipped as SAPlink files","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2015-06"},"ai":true,"meta":"independent, abap"},"artifact:marcellourbani-vscode-abap-remote-fs":{"href":"/abap/artifacts/marcellourbani-vscode-abap-remote-fs","name":"ABAP remote filesystem","kind":"ide-extension","line":"A Visual Studio Code extension that opens an ABAP system over ADT as an editable filesystem and exposes system tools to GitHub Copilot and external MCP clients.","short":"VS Code extension editing ABAP systems over ADT as a filesystem","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:marcellourbani-vscode-activecontrol":{"href":"/abap/artifacts/marcellourbani-vscode-activecontrol","name":"ActiveControl Transport form creator","kind":"ide-extension","line":"A Visual Studio Code extension that automates ActiveControl transport form creation: a creation window pops up when a transport without a form is used, and a command creates one manually.","short":"VS Code extension automating ActiveControl transport forms","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-11"},"ai":true,"meta":"independent, abap"},"artifact:marianfoo-abap-docs":{"href":"/abap/artifacts/marianfoo-abap-docs","name":"abap-docs","kind":"doc-source","line":"SAP's ABAP Keyword Documentation scraped from help.sap.com and committed as Markdown in two libraries, Standard ABAP and ABAP Cloud, with keyword and category indexes for the MCP servers and LLMs it is generated for.","short":"ABAP Keyword Documentation as Markdown with indexes","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-01"},"ai":true,"meta":"independent, abap"},"artifact:marianfoo-btp-cf-mcp":{"href":"/btp/artifacts/marianfoo-btp-cf-mcp","name":"btp-cf-mcp","kind":"mcp-server","line":"An MCP server over an SAP BTP account and its Cloud Foundry runtime that acts as the person who logged in, so their own global-account and space roles decide what an agent can see.","short":"MCP server for SAP BTP and Cloud Foundry acting as the logged-in user","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, btp"},"artifact:marianfoo-btp-drawio-skill":{"href":"/btp/artifacts/marianfoo-btp-drawio-skill","name":"sap-architecture","kind":"skill","line":"A Claude Code plugin and portable agent skill that turns a plain-English description into a BTP diagram in SAP Architecture Center style, checked by a validator before it is handed over.","short":"Claude Code plugin and skill drawing validated BTP diagrams","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"independent, btp"},"artifact:marianfoo-cap-materialbom-graph":{"href":"/cap/artifacts/marianfoo-cap-materialbom-graph","name":"cap-materialbom-graph","kind":"sample","line":"A CAP sample that walks a material bill of materials on the server and draws it as a UI5 network graph in a custom section of a Fiori elements object page, on SQLite with no deployment.","short":"CAP sample drawing a material BOM as a UI5 network graph","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2025-02"},"ai":true,"meta":"independent, cap"},"artifact:marianfoo-custom-llm-client":{"href":"/cap/artifacts/marianfoo-custom-llm-client","name":"custom-llm-client","kind":"sample","line":"A local-first proof-of-concept chat client for SAP questions: a CAP backend runs a LangGraph planner over MCP servers and streams the answer with every tool call shown as it runs.","short":"Local chat client for SAP questions with a CAP LangGraph backend","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-10"},"ai":true,"meta":"independent, cap"},"artifact:marianfoo-fiori-table-maintenance":{"href":"/cap/artifacts/marianfoo-fiori-table-maintenance","name":"fiori-table-maintenance","kind":"sample","line":"The CAP service and freestyle UI5 app behind Simple Table Maintenance in SAP Fiori Using UI5 Smart Controls, where a SmartTable edits rows in place rather than through a draft.","short":"CAP and UI5 app for in-place table maintenance with SmartTable","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2025-02"},"ai":true,"meta":"independent, cap"},"artifact:marianfoo-llm-benchmark-abap-code-generation":{"href":"/abap/artifacts/marianfoo-llm-benchmark-abap-code-generation","name":"LLM-Benchmark-ABAP-Code-Generation","kind":"cli","line":"A benchmark that has a model write ABAP for 180 tasks ten times each, then feeds the SAP system's own syntax check, activation and ABAP Unit results back for up to five correction rounds.","short":"Benchmark of LLM ABAP code generation against a real SAP system","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"independent, abap"},"artifact:marianfoo-local-llm-client-for-sap-consultants-librechat":{"href":"/abap/artifacts/marianfoo-local-llm-client-for-sap-consultants-librechat","name":"local-llm-client-for-sap-consultants-librechat","kind":"sample","line":"A fork of LibreChat that ships four SAP MCP servers pre-configured: documentation, SAP Notes, S/4HANA OData and ABAP ADT, so the chat client a consultant runs on their own machine can reach a customer system.","short":"LibreChat fork with four SAP MCP servers preconfigured","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-02"},"ai":true,"meta":"independent, abap"},"artifact:marianfoo-mcp-sap-docs":{"href":"/cap/artifacts/marianfoo-mcp-sap-docs","name":"mcp-sap-docs","kind":"mcp-server","line":"An MCP server over seventeen cloned SAP documentation repositories — ABAP keyword docs, capire, OpenUI5, Cloud SDK, BTP — searched with BM25 and prebuilt embeddings fused by reciprocal rank fusion.","short":"MCP server searching seventeen SAP documentation repositories","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, cap"},"artifact:marianfoo-open-rfc":{"href":"/cap/artifacts/marianfoo-open-rfc","name":"open-rfc","kind":"package","line":"An SDK-free TypeScript and JavaScript client for SAP classic synchronous RFC on Node.js, with no native addon and no runtime dependencies, that works as a drop-in under @sap/cds-rfc through an npm override.","short":"SDK-free TypeScript client for SAP synchronous RFC on Node.js","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, cap"},"artifact:marianfoo-sap-api-hub-mcp":{"href":"/btp/artifacts/marianfoo-sap-api-hub-mcp","name":"sap-api-hub-mcp","kind":"mcp-server","line":"A read-only MCP server over the SAP Business Accelerator Hub catalogue: categories, search, metadata, resources, specs and packages, reached as the caller's own SAP user.","short":"Read-only MCP server over the SAP Business Accelerator Hub","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, btp"},"artifact:marianfoo-sap-api-policy-skill":{"href":"/btp/artifacts/marianfoo-sap-api-policy-skill","name":"SAP API Policy Evidence Skill","kind":"skill","line":"Assesses whether a described SAP API usage aligns with the SAP API Policy, gathering live evidence from SAP's own sources and returning a sourced assessment with a stated confidence — and routing the legal questions away from itself.","short":"Skill assessing API usage against the SAP API Policy","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"independent, btp"},"artifact:marianfoo-sap-mcp-auth":{"href":"/btp/artifacts/marianfoo-sap-mcp-auth","name":"@marianfoo/sap-mcp-auth","kind":"package","line":"A shared browser-login and session module for SAP MCP servers: it drives a Playwright browser through SAP Identity Authentication, caches the session cookies and returns a cookie header an HTTP client can send.","short":"Browser login and session module for SAP MCP servers","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, btp"},"artifact:marianfoo-sap-note-search-mcp":{"href":"/btp/artifacts/marianfoo-sap-note-search-mcp","name":"sap-note-search-mcp","kind":"mcp-server","line":"An MCP server over SAP Notes and Knowledge Base articles: search finds a note, fetch returns it whole, and a scripted browser does the S-user login the content sits behind.","short":"MCP server searching and fetching SAP Notes and KBAs","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, btp"},"artifact:marianfoo-sap-roadmap-mcp":{"href":"/btp/artifacts/marianfoo-sap-roadmap-mcp","name":"sap-roadmap-mcp","kind":"mcp-server","line":"An MCP server over SAP Road Map Explorer, so an agent can read what SAP has announced as planned rather than inferring it from a release that has shipped.","short":"MCP server over SAP Road Map Explorer","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, btp"},"artifact:marianfoo-ui5-call-action":{"href":"/cap/artifacts/marianfoo-ui5-call-action","name":"ui5-call-action","kind":"sample","line":"Four UI5 apps over one CAP service, each calling the same bound, collection-bound and unbound OData actions and functions from custom code.","short":"UI5 apps calling CAP OData actions and functions from custom code","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-09"},"ai":true,"meta":"independent, cap"},"artifact:marianfoo-ui5-cc-dayjs":{"href":"/ui5/artifacts/marianfoo-ui5-cc-dayjs","name":"@marianfoo/ui5-cc-dayjs","kind":"package","line":"A UI5 custom control that writes a date to the page through Day.js, with the input format, the output format and any shift of days or months set as control properties.","short":"UI5 custom control formatting dates with Day.js","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2022-06"},"ai":true,"meta":"independent, ui5"},"artifact:marianfoo-ui5-cc-pdfviewer":{"href":"/ui5/artifacts/marianfoo-ui5-cc-pdfviewer","name":"ui5-cc-pdfviewer","kind":"package","line":"A UI5 custom control that renders a PDF from a base64 data URI with pdfjs-dist, so a file picked in the browser can be shown before it has been uploaded anywhere and has a URL.","short":"UI5 custom control rendering a PDF from a base64 data URI","chip":{"label":"Maintenance","tier":"poor","evidence":"42 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:marianfoo-ui5-errorhandler-sample":{"href":"/ui5/artifacts/marianfoo-ui5-errorhandler-sample","name":"ui5-errorhandler-sample","kind":"sample","line":"Two UI5 apps in one repository consuming the same npm package two ways: once as a UI5 AMD module reached through a resource path the package declares, once as a plain JavaScript class converted at build time.","short":"Two UI5 apps consuming one npm package in two ways","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2022-02"},"ai":true,"meta":"independent, ui5"},"artifact:marianfoo-ui5-fe-mockserver-tutorial":{"href":"/ui5/artifacts/marianfoo-ui5-fe-mockserver-tutorial","name":"ui5-fe-mockserver-tutorial","kind":"sample","line":"Ten exercises on @sap-ux/ui5-middleware-fe-mockserver, published for Devtoberfest 2025 as a repository to clone and a site to read, each exercise a Fiori elements app served from mock data instead of a backend.","short":"Ten exercises on the Fiori elements mock server middleware","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-10"},"ai":true,"meta":"independent, ui5"},"artifact:marianfoo-ui5-lib-diff":{"href":"/ui5/artifacts/marianfoo-ui5-lib-diff","name":"ui5-lib-diff","kind":"web-tool","line":"A hosted app that lists what changed between two SAPUI5 or OpenUI5 versions from the UI5 API's change records, and publishes the same data as static JSON files at fixed paths for tools and agents.","short":"Hosted app listing changes between SAPUI5 or OpenUI5 versions","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, ui5"},"artifact:marianfoo-ui5-middleware-odata-recorder":{"href":"/ui5/artifacts/marianfoo-ui5-middleware-odata-recorder","name":"ui5-middleware-odata-recorder","kind":"build-tool","line":"A UI5 server middleware that records the OData traffic a running app makes against a real backend and writes entity JSON files and metadata.xml that the Fiori elements mock server can replay.","short":"UI5 middleware recording OData traffic as mock server datasets","chip":{"label":"Maintenance","tier":"fair","evidence":"11 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:marianfoo-ui5-plugin-loader":{"href":"/ui5/artifacts/marianfoo-ui5-plugin-loader","name":"ui5-plugin-loader","kind":"build-tool","line":"A UI5 Tooling v4 extension that registers a project's other extensions itself: one entry in ui5.yaml, and every dependency carrying a ui5-plugin-loader.json manifest is mounted as middleware and as a build task.","short":"UI5 Tooling v4 extension that registers other extensions","chip":{"label":"Maintenance","tier":"poor","evidence":"15 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:marianfoo-ui5con-2026-mcpapps":{"href":"/ui5/artifacts/marianfoo-ui5con-2026-mcpapps","name":"UI5con_2026_MCPApps","kind":"sample","line":"Five runnable MCP servers whose tools return a prebuilt UI beside their text result, from plain HTML through UI5 Web Components and UI Integration Cards to a UI5 linter workflow and an ARC-1 transport review.","short":"Five MCP servers whose tools return a prebuilt UI","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, ui5"},"artifact:marianfoo-ui5con24-dev-env":{"href":"/ui5/artifacts/marianfoo-ui5con24-dev-env","name":"ui5con24-dev-env","kind":"sample","line":"A pnpm workspace in which a CAP server, a local Fiori launchpad and two UI5 apps — one reading OData V4 from CAP, one reading OData V2 from an ABAP system — run together from a single start command.","short":"pnpm workspace running CAP, a local launchpad and two UI5 apps","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-06"},"ai":true,"meta":"independent, ui5"},"artifact:marianfoo-werkbank":{"href":"/artifacts/marianfoo-werkbank","name":"Werkbank","kind":"desktop-app","line":"A local desktop workspace for AI conversations, attached files and generated HTML Spaces, run by a goose agent and offering a catalog of SAP MCP connectors and ABAP, CAP and UI5 skills.","short":"Local desktop workspace for AI conversations with SAP connectors","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"independent, umbrella"},"artifact:marianfoo-ztoad":{"href":"/abap/artifacts/marianfoo-ztoad","name":"ztoad","kind":"app","line":"An Open SQL editor for ABAP that runs a query written in the editor pane on the server and shows the rows in an ALV window, with a pane of saved queries to reuse and share.","short":"Open SQL editor for ABAP with ALV output","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:mario-andreschak-mcp-abap-adt-api":{"href":"/abap/artifacts/mario-andreschak-mcp-abap-adt-api","name":"mcp-abap-abap-adt-api","kind":"mcp-server","line":"The write half of the same pair: a thin wrapper over Marcello Urbani's abap-adt-api, exposing lock, edit, activate, transport and syntax check for a full development loop.","short":"Write-oriented MCP server over abap-adt-api","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"independent, abap"},"actor:mario-andreschak":{"href":"/actors/mario-andreschak","name":"mario-andreschak","kind":"person","glyph":{"type":"avatar","name":"mario-andreschak","src":"/avatars/mario-andreschak.png"},"line":"maintains 3 entries, contributed to 5 entries"},"artifact:mario-andreschak-mcp-abap-adt":{"href":"/abap/artifacts/mario-andreschak-mcp-abap-adt","name":"mcp-abap-adt","kind":"mcp-server","line":"The read-oriented half of a pair of ABAP MCP servers: high-level tools such as GetProgram, GetClass and GetTable that fetch from a system, aimed at understanding it rather than changing it.","short":"Read-oriented MCP server fetching ABAP programs, classes, tables","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"independent, abap"},"artifact:mario-andreschak-mcp-sap-gui":{"href":"/abap/artifacts/mario-andreschak-mcp-sap-gui","name":"mcp-sap-gui","kind":"mcp-server","line":"The earliest of the SAP GUI servers in the atlas. It works the screen by coordinates and hands back a screenshot after each action, with a setup script and a short path from clone to a driven transaction.","short":"MCP server working SAP GUI by screen coordinates","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, abap"},"artifact:mariodefelipe-datasphere-plugin":{"href":"/btp/artifacts/mariodefelipe-datasphere-plugin","name":"SAP Datasphere Plugin for Claude","kind":"skill","line":"Eighteen Datasphere skills over a bundled 45-tool MCP server — exploration, view and analytic-model design, BW Bridge migration, security architecture and catalog governance.","short":"Eighteen Datasphere skills over a bundled MCP server","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"independent, btp"},"actor:mariodefelipe":{"href":"/actors/mariodefelipe","name":"MarioDeFelipe","kind":"person","glyph":{"type":"avatar","name":"MarioDeFelipe","src":"/avatars/mariodefelipe.png"},"line":"maintains 3 entries, contributed to 3 entries"},"artifact:mariodefelipe-sap-bdc-mcp-server":{"href":"/btp/artifacts/mariodefelipe-sap-bdc-mcp-server","name":"sap-bdc-mcp-server","kind":"mcp-server","line":"An MCP server over SAP's BDC Connect SDK that creates, validates, publishes and deletes Databricks Delta shares as data products in SAP Business Data Cloud.","short":"MCP server managing Delta shares in SAP Business Data Cloud","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"independent, btp"},"artifact:mariodefelipe-sap-datasphere-mcp":{"href":"/btp/artifacts/mariodefelipe-sap-datasphere-mcp","name":"@mariodefe/sap-datasphere-mcp","kind":"mcp-server","line":"Forty-five tools across a Datasphere tenant — discovery, metadata, analytics, ETL extraction, database users, lineage and column profiling — with config-driven PII masking applied before anything reaches the model.","short":"MCP server with forty-five tools across a Datasphere tenant","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, btp"},"artifact:mariokernich-abap-doc":{"href":"/abap/artifacts/mariokernich-abap-doc","name":"abap-doc","kind":"cli","line":"A Node.js command that reads an ABAP package and its sub-packages over ADT and writes one PDF documenting every object in it, with an LLM writing the prose.","short":"Node.js command writing PDF documentation for an ABAP package","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"independent, abap"},"actor:mariokernich":{"href":"/actors/mariokernich","name":"Mario Kernich","kind":"person","glyph":{"type":"avatar","name":"Mario Kernich","ring":"independent","src":"/avatars/mariokernich.png"},"line":"maintains 8 entries, wrote 1 post, contributed to 10 entries","meta":"independent"},"artifact:mariokernich-abapconf2026-custom-entities":{"href":"/abap/artifacts/mariokernich-abapconf2026-custom-entities","name":"abapconf2026-custom-entities","kind":"sample","line":"The slides and abapGit sample objects of an abapconf 2026 talk on RAP custom entities whose data comes from a class implementing IF_RAP_QUERY_PROVIDER.","short":"abapconf 2026 talk materials on RAP custom entities","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"independent, abap"},"artifact:mariokernich-fiori-fullscreen-plugin":{"href":"/ui5/artifacts/mariokernich-fiori-fullscreen-plugin","name":"fiori-fullscreen-plugin","kind":"sample","line":"A SAP Fiori launchpad plugin in TypeScript that adds one header button, created through the Extension API, which toggles the browser's fullscreen mode; it needs SAPUI5 above 1.120.","short":"Fiori launchpad plugin adding a fullscreen toggle button","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-05"},"ai":true,"meta":"independent, ui5"},"artifact:mariokernich-odapu-abap":{"href":"/abap/artifacts/mariokernich-odapu-abap","name":"ODAPU","kind":"app","line":"A UI5 app installed with abapGit that builds and saves test requests for OData services and connects to ABAP Push Channels, on S/4HANA systems.","short":"UI5 app for OData test requests and ABAP Push Channels","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-08"},"ai":true,"meta":"independent, abap"},"artifact:mariokernich-ui5-cap-todo":{"href":"/cap/artifacts/mariokernich-ui5-cap-todo","name":"ui5-cap-todo","kind":"sample","line":"A todo application with a CAP backend and a SAPUI5 frontend, both in TypeScript, connected over OData V4 in one pnpm workspace, with projects and their todos in a master-detail FlexibleColumnLayout.","short":"Todo app with CAP and SAPUI5 in TypeScript over OData V4","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"independent, cap"},"artifact:mariokernich-ui5-monorepo-showcase":{"href":"/ui5/artifacts/mariokernich-ui5-monorepo-showcase","name":"ui5-monorepo-showcase","kind":"sample","line":"A pnpm workspace in which a UI5 app, a control library and a launchpad plugin, all TypeScript, are developed together, linked through the workspace protocol without publishing and started with one command.","short":"pnpm workspace developing a UI5 app, library and plugin together","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"independent, ui5"},"artifact:mariokernich-ui5-tcode-finder":{"href":"/abap/artifacts/mariokernich-ui5-tcode-finder","name":"ui5-tcode-finder","kind":"web-tool","line":"A browser page that searches SAP transaction codes by code, title or description and hands one over on a click: copied plain, copied with an /n or /o prefix, or opened in SAP GUI for HTML.","short":"Browser page searching SAP transaction codes","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, abap"},"artifact:mariokernich-ui5-touch-controls":{"href":"/ui5/artifacts/mariokernich-ui5-touch-controls","name":"ui5-touch-controls","kind":"package","line":"A UI5 control library that rebuilds common sap.m controls with one size property from S to 6XL, and adds on-screen keyboards, a barcode input and a signature pad.","short":"UI5 control library of sized sap.m controls and touch inputs","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, ui5"},"artifact:markwury168-sap-mcp":{"href":"/abap/artifacts/markwury168-sap-mcp","name":"MarkWuRY168/SAP_MCP","kind":"mcp-server","line":"Publishes SAP system functions as MCP tools from configuration tables held inside the SAP system, so adding a tool is a configuration change rather than a code change.","short":"MCP server publishing SAP functions as tools from config tables","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"independent, abap"},"actor:markwury168":{"href":"/actors/markwury168","name":"MarkWuRY168","kind":"person","glyph":{"type":"avatar","name":"MarkWuRY168","src":"/avatars/markwury168.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:martinpankraz-az-private-linky-cap":{"href":"/cap/artifacts/martinpankraz-az-private-linky-cap","name":"az-private-linky-cap","kind":"sample","line":"A CAP project reaching an S/4 backend through SAP BTP Private Link Service for Azure, with the private hostname and the credentials held in a destination.","short":"CAP project reaching S/4 via SAP BTP Private Link Service for Azure","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-02"},"ai":true,"meta":"independent, cap"},"actor:martinpankraz":{"href":"/actors/martinpankraz","name":"Martin Pankraz","kind":"person","glyph":{"type":"avatar","name":"Martin Pankraz","ring":"independent","src":"/avatars/martinpankraz.png"},"line":"maintains 1 entry, wrote 4 posts, contributed to 2 entries","meta":"independent"},"artifact:matt1as-claude-abap-skills":{"href":"/abap/artifacts/matt1as-claude-abap-skills","name":"claude-abap-skills","kind":"skill","line":"Two Claude Code plugins of always-on Clean ABAP rules, templates and slash commands — deliberately not an MCP server, and explicit about routing each capability to the server that should answer it.","short":"Claude Code plugins with Clean ABAP rules and templates","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"independent, abap"},"actor:matt1as":{"href":"/actors/matt1as","name":"Mattias Johansson","kind":"person","glyph":{"type":"avatar","name":"Mattias Johansson","src":"/avatars/matt1as.png"},"line":"maintains 1 entry, wrote 1 post, contributed to 5 entries"},"artifact:mauriciolauffer-cap-js-mockdata":{"href":"/cap/artifacts/mauriciolauffer-cap-js-mockdata","name":"cap-js-mockdata","kind":"generator","line":"A cds add command that generates CSV seed files into db/data from @Mockdata annotations on your entities, filling each column with values from the Faker module the annotation names.","short":"CSV seed data generated from @Mockdata annotations with Faker","chip":{"label":"Maintenance","tier":"poor","evidence":"30 months since release"},"ai":true,"meta":"independent, cap"},"actor:mauriciolauffer":{"href":"/actors/mauriciolauffer","name":"Mauricio Lauffer","kind":"person","glyph":{"type":"avatar","name":"Mauricio Lauffer","ring":"independent","src":"/avatars/mauriciolauffer.png"},"line":"maintains 16 entries, created 4 pieces, contributed to 41 entries","meta":"independent"},"artifact:mauriciolauffer-eslint-plugin-better-cap-config":{"href":"/cap/artifacts/mauriciolauffer-eslint-plugin-better-cap-config","name":"eslint-plugin-better-cap-config","kind":"build-tool","line":"A set of ESLint rules that read CAP configuration and flag the cds settings that have since been deprecated, putting that check in the linter a project already runs, with no dependencies of its own.","short":"ESLint rules flagging deprecated CAP configuration","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"independent, cap"},"artifact:mauriciolauffer-jest-environment-ui5":{"href":"/ui5/artifacts/mauriciolauffer-jest-environment-ui5","name":"jest-environment-ui5","kind":"package","line":"A Jest test environment named ui5 that boots UI5 from a local HTML file into jsdom, so UI5 unit tests run in Node.js with no web server and no browser.","short":"Jest environment running UI5 unit tests in Node.js","chip":{"label":"Maintenance","tier":"poor","evidence":"16 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:mauriciolauffer-openui5-error-collector":{"href":"/ui5/artifacts/mauriciolauffer-openui5-error-collector","name":"openui5-error-collector","kind":"package","line":"A UI5 library that collects a running app's JavaScript errors, unhandled Promise rejections and UI5 log events, and can post them to a backend with navigator.sendBeacon.","short":"UI5 library collecting an app's JavaScript errors","chip":{"label":"Maintenance","tier":"poor","evidence":"43 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:mauriciolauffer-openui5-model-json-crud":{"href":"/ui5/artifacts/mauriciolauffer-openui5-model-json-crud","name":"openui5-model-json-crud","kind":"package","line":"An OpenUI5 library that extends JSONModel to send CRUD requests over HTTP with fetch, so its calls return Promises; the README documents the read method only.","short":"OpenUI5 JSONModel extension with CRUD over HTTP","chip":{"label":"Maintenance","tier":"poor","evidence":"35 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:mauriciolauffer-openui5-model-odata-v2-odatapromise":{"href":"/ui5/artifacts/mauriciolauffer-openui5-model-odata-v2-odatapromise","name":"openui5-model-odata-v2-odatapromise","kind":"package","line":"An OpenUI5 library that extends the OData V2 model, sap.ui.model.odata.v2.ODataModel, to support Promises; its README documents no usage, installation or API.","short":"OpenUI5 OData V2 model extension with Promises","chip":{"label":"Maintenance","tier":"poor","evidence":"53 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:mauriciolauffer-openui5-password":{"href":"/ui5/artifacts/mauriciolauffer-openui5-password","name":"openui5-password","kind":"package","line":"An OpenUI5 input control of password type that checks the typed value against length and character-class rules set as properties, and scores password strength in a separate property.","short":"OpenUI5 password input with strength scoring and rules","chip":{"label":"Maintenance","tier":"poor","evidence":"35 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:mauriciolauffer-openui5-smart-mockserver":{"href":"/ui5/artifacts/mauriciolauffer-openui5-smart-mockserver","name":"openui5-smart-mockserver","kind":"package","line":"An extended UI5 MockServer that generates meaningful mock data with Faker.js, from the metadata's sap:semantics annotations or from rules that map an OData property to a Faker method.","short":"UI5 MockServer extension generating mock data with Faker.js","chip":{"label":"Maintenance","tier":"poor","evidence":"35 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:mauriciolauffer-openui5-tour":{"href":"/ui5/artifacts/mauriciolauffer-openui5-tour","name":"openui5-tour","kind":"package","line":"An OpenUI5 control library for a step-by-step guided tour inside a UI5 app, where each TourStep has a title, content, a target control from the view and a placement.","short":"OpenUI5 control library for guided app tours","chip":{"label":"Maintenance","tier":"poor","evidence":"35 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:mauriciolauffer-openui5-validator":{"href":"/ui5/artifacts/mauriciolauffer-openui5-validator","name":"openui5-validator","kind":"package","line":"An OpenUI5 library that validates the fields of a view against a JSON schema using Ajv, returning a verdict and a list of failures and leaving reporting to the user to the app.","short":"OpenUI5 library validating view fields against JSON schema","chip":{"label":"Maintenance","tier":"poor","evidence":"35 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:mauriciolauffer-sap-cap-validator-plugin":{"href":"/cap/artifacts/mauriciolauffer-sap-cap-validator-plugin","name":"sap-cap-validator-plugin","kind":"cds-plugin","line":"A CAP plugin that checks incoming data against JSON Schema rules written as @Validator annotations on model elements, evaluated by Ajv, with no handler to register.","short":"CAP plugin validating input against @Validator JSON Schema rules","chip":{"label":"Maintenance","tier":"poor","evidence":"33 months since release"},"ai":true,"meta":"independent, cap"},"artifact:mauriciolauffer-ui5-deployer":{"href":"/ui5/artifacts/mauriciolauffer-ui5-deployer","name":"ui5-deployer","kind":"cli","line":"A custom module for UI5 Tooling that deploys Fiori/UI5 apps to SAP NetWeaver ABAP, SAP Cloud Platform Neo or Cloud Foundry, configured in a deployer section of ui5.yaml.","short":"UI5 Tooling module deploying Fiori/UI5 apps to SAP systems","chip":{"label":"Maintenance","tier":"poor","evidence":"54 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:mauriciolauffer-ui5-task-dts-generator":{"href":"/ui5/artifacts/mauriciolauffer-ui5-task-dts-generator","name":"ui5-task-dts-generator","kind":"build-tool","line":"A UI5 builder task that generates d.ts files, TypeScript type declarations, during the build of a UI5 library written in JavaScript, by wrapping @ui5/dts-generator.","short":"UI5 builder task generating d.ts type declarations","chip":{"label":"Maintenance","tier":"poor","evidence":"62 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:mauriciolauffer-ui5-task-minifier":{"href":"/ui5/artifacts/mauriciolauffer-ui5-task-minifier","name":"ui5-task-minifier","kind":"build-tool","line":"A UI5 builder task that minifies the HTML, CSS and JSON files the UI5 builder leaves as they are, with one switch per file type, using html-minifier-terser and clean-css.","short":"UI5 builder task minifying HTML, CSS and JSON files","chip":{"label":"Maintenance","tier":"fair","evidence":"8 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:mauriciolauffer-vitest-environment-ui5":{"href":"/ui5/artifacts/mauriciolauffer-vitest-environment-ui5","name":"vitest-environment-ui5","kind":"package","line":"A Vitest environment named ui5 that boots UI5 from a local HTML file into jsdom, so UI5 unit tests run in Node.js with no web server and no browser.","short":"Vitest environment running UI5 unit tests in Node.js","chip":{"label":"Maintenance","tier":"poor","evidence":"15 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:mauriciolauffer-wdio-qunit-service":{"href":"/ui5/artifacts/mauriciolauffer-wdio-qunit-service","name":"wdio-qunit-service","kind":"package","line":"A WebdriverIO service that runs QUnit HTML test pages in a browser and reports the results as WebdriverIO test suites, presented as a drop-in replacement for Karma-based QUnit setups.","short":"WebdriverIO service running QUnit test pages","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:maxi1555-ui5-middleware-oidc":{"href":"/ui5/artifacts/maxi1555-ui5-middleware-oidc","name":"ui5-middleware-oidc","kind":"build-tool","line":"A UI5 Tooling server middleware that puts an OpenID Connect login in front of the UI5 dev server, built on express-openid-connect, which receives its configuration block as written.","short":"UI5 dev server middleware adding an OpenID Connect login","chip":{"label":"Maintenance","tier":"poor","evidence":"18 months since release"},"ai":true,"meta":"independent, ui5"},"actor:maxi1555":{"href":"/actors/maxi1555","name":"maxi1555","kind":"person","glyph":{"type":"avatar","name":"maxi1555","src":"/avatars/maxi1555.png"},"line":"maintains 1 entry, wrote 1 post, contributed to 2 entries"},"artifact:mdjoerg-adele":{"href":"/abap/artifacts/mdjoerg-adele","name":"ADELE RFC API","kind":"package","line":"An RFC-callable ABAP API for extracting SAP data, implemented for the Java-based ADELE tool, with an OLAP mode for group by and count.","short":"RFC-callable ABAP API for SAP data extraction for ADELE","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2020-08"},"ai":true,"meta":"independent, abap"},"actor:mdjoerg":{"href":"/actors/mdjoerg","name":"MDJoerg","kind":"person","glyph":{"type":"avatar","name":"MDJoerg","src":"/avatars/mdjoerg.png"},"line":"maintains 2 entries, contributed to 3 entries"},"artifact:mdjoerg-mqba":{"href":"/abap/artifacts/mdjoerg-mqba","name":"MQBA","kind":"app","line":"An implementation of MQTT publish/subscribe in ABAP, with a broker inside the system built on ABAP Push Channels and ABAP Messaging Channels, and a bridge to external non-SAP brokers.","short":"MQTT publish/subscribe in ABAP with an external broker bridge","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2020-07"},"ai":true,"meta":"independent, abap"},"artifact:mertsap-capval":{"href":"/cap/artifacts/mertsap-capval","name":"capval","kind":"cds-plugin","line":"Replaces the message a failed input validation annotation returns, and adds @validation.handler, which names a class that runs a check of the developer's own.","short":"Custom messages and handler classes for CAP input validation","chip":{"label":"Maintenance","tier":"poor","evidence":"17 months since release"},"ai":true,"meta":"independent, cap"},"actor:mertsap":{"href":"/actors/mertsap","name":"MattBrightman","kind":"person","glyph":{"type":"avatar","name":"MattBrightman","ring":"independent","src":"/avatars/mertsap.png"},"line":"maintains 1 entry, wrote 2 posts, contributed to 1 entry","meta":"independent"},"artifact:mfigueir-sap-power":{"href":"/btp/artifacts/mfigueir-sap-power","name":"SAP Power for Kiro","kind":"skill","line":"A set of thirty-five-plus SAP skills packaged as a power for Kiro IDE rather than Claude Code, spanning BTP, UI5, data and analytics, ABAP, CAP and CLI tooling, with automatic context activation in Kiro.","short":"SAP skills for the Kiro IDE","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-01"},"ai":true,"meta":"independent, btp"},"actor:mfigueir":{"href":"/actors/mfigueir","name":"mfigueir","kind":"person","glyph":{"type":"avatar","name":"mfigueir","src":"/avatars/mfigueir.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:mi8y-cap-agents-aicore-vectorstore":{"href":"/cap/artifacts/mi8y-cap-agents-aicore-vectorstore","name":"@mi8y/cap-agents-aicore-vectorstore","kind":"package","line":"A LangChain vector store backed by SAP AI Core Document Grounding: the collection holds the documents and makes the embeddings, and the CAP application stores no vectors of its own.","short":"LangChain vector store on SAP AI Core Document Grounding","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"independent, cap"},"actor:anselm94":{"href":"/actors/anselm94","name":"Merbin J Anselm","kind":"person","glyph":{"type":"avatar","name":"Merbin J Anselm","src":"/avatars/anselm94.png"},"line":"maintains 6 entries, contributed to 6 entries"},"actor:mi8y":{"href":"/actors/mi8y","name":"Mi8Y Technologies","kind":"org","glyph":{"type":"avatar","name":"Mi8Y Technologies","ring":"independent","src":"/avatars/mi8y.png"},"line":"maintains 6 entries","meta":"independent"},"artifact:mi8y-cap-agents-cds-vectorstore":{"href":"/cap/artifacts/mi8y-cap-agents-cds-vectorstore","name":"@mi8y/cap-agents-cds-vectorstore","kind":"package","line":"A LangChain vector store whose documents and embeddings are CDS entities, so retrieval runs as a CDS query against the database the CAP service is already bound to.","short":"LangChain vector store with CDS entities for embeddings","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"independent, cap"},"artifact:mi8y-cap-agents-memory":{"href":"/cap/artifacts/mi8y-cap-agents-memory","name":"@mi8y/cap-agents-memory","kind":"cds-plugin","line":"A LangGraph Store written against CDS: the facts and preferences an agent keeps between sessions are entities in the CAP database, read and written inside a request handler under its tenant.","short":"LangGraph Store keeping agent memory as CDS entities","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"independent, cap"},"artifact:mi8y-cap-agents-sdm-backend":{"href":"/cap/artifacts/mi8y-cap-agents-sdm-backend","name":"@mi8y/cap-agents-sdm-backend","kind":"package","line":"A Deep Agents filesystem backend whose files are documents in an SAP Document Management repository, so what a CAP agent reads and writes stays where people can open it too.","short":"Deep Agents filesystem over an SAP Document Management repository","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, cap"},"artifact:mi8y-cap-agents-sdm-reports-assistant":{"href":"/cap/artifacts/mi8y-cap-agents-sdm-reports-assistant","name":"Reports Assistant with SAP Document Management","kind":"sample","line":"A CAP agent that turns a few notes into a status report and saves it in an SAP Document Management repository, where the instructions and the skills it follows are kept too.","short":"CAP agent writing reports into a shared SDM document workspace","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, cap"},"artifact:mi8y-cds-langgraph-persistence":{"href":"/cap/artifacts/mi8y-cds-langgraph-persistence","name":"@mi8y/cds-langgraph-persistence","kind":"cds-plugin","line":"A LangGraph checkpointer backed by CDS, so an agent's state survives the request that created it — durability for LangChain and LangGraph agents running inside the CAP Node.js runtime.","short":"LangGraph checkpointer backed by CDS for CAP agents","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"independent, cap"},"artifact:microsoft-abap-sdk-for-azure":{"href":"/abap/artifacts/microsoft-abap-sdk-for-azure","name":"ABAP SDK for Azure","kind":"package","line":"ABAP objects and classes for sending SAP business process data to Azure services such as Event Hub, Service Bus, Key Vault, Blob and Azure OpenAI, without depending on a middleware product.","short":"ABAP classes for calling Azure services from SAP processes","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"partner, abap"},"actor:microsoft":{"href":"/actors/microsoft","name":"Microsoft","kind":"org","glyph":{"type":"avatar","name":"Microsoft","src":"/avatars/microsoft.png"},"line":"maintains 2 entries"},"artifact:microsoft-aisdkforsapabap":{"href":"/abap/artifacts/microsoft-aisdkforsapabap","name":"Microsoft AI SDK for SAP","kind":"package","line":"Microsoft's ABAP library for calling Azure OpenAI and OpenAI from an SAP application server, wrapping completions, embeddings, fine-tuning and the other operations in ABAP data types, installed with abapGit.","short":"ABAP library for calling Azure OpenAI and OpenAI","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-05"},"ai":true,"meta":"partner, abap"},"artifact:midasol-sap-mcp-server":{"href":"/btp/artifacts/midasol-sap-mcp-server","name":"midasol/sap-mcp-server","kind":"mcp-server","line":"A Python MCP server for SAP Gateway with four read-only tools that authenticate, query, fetch one entity and list services, and one of the few here that publishes its test results.","short":"Python MCP server for SAP Gateway OData operations","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"independent, btp"},"actor:midasol":{"href":"/actors/midasol","name":"Sanggyu Lee","kind":"person","glyph":{"type":"avatar","name":"Sanggyu Lee","src":"/avatars/midasol.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:miggi92-odata-fw":{"href":"/abap/artifacts/miggi92-odata-fw","name":"odata-fw","kind":"package","line":"A framework for building OData services in ABAP with each entity implemented as its own class, reusable across services, so a model change no longer forces the SEGW service to be regenerated.","short":"ABAP framework for OData services with one class per entity","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:miggi92":{"href":"/actors/miggi92","name":"Miguel","kind":"person","glyph":{"type":"avatar","name":"Miguel","src":"/avatars/miggi92.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:mikezaschka-cap-ui5-gpt-chat":{"href":"/cap/artifacts/mikezaschka-cap-ui5-gpt-chat","name":"cap-ui5-gpt-chat","kind":"sample","line":"A working chat application on CAP and SAPUI5 against the OpenAI API — selectable models, per-user chat history in the database, maintainable chatbot personalities, and streaming responses as an option per chat.","short":"Chat app on CAP and SAPUI5 against the OpenAI API","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-05"},"ai":true,"meta":"independent, cap"},"artifact:mikezaschka-cds-data-federation":{"href":"/cap/artifacts/mikezaschka-cds-data-federation","name":"cds-data-federation","kind":"cds-plugin","line":"A data federation plugin for SAP CAP applications that declares delegation, caching and replication on a consumption view through CDS annotations, instead of hand-written handlers.","short":"Data federation for CAP via delegation, caching and replication","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"independent, cap"},"artifact:mikezaschka-cds-data-pipeline":{"href":"/cap/artifacts/mikezaschka-cds-data-pipeline","name":"cds-data-pipeline","kind":"cds-plugin","line":"Declarative scheduled pipelines between CAP services — each one a linear READ, MAP, WRITE from a single source to a single target, with tracking, retry, delta support and a management API.","short":"Scheduled READ, MAP, WRITE pipelines between CAP services","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"independent, cap"},"artifact:mikezaschka-cds-dbm":{"href":"/cap/artifacts/mikezaschka-cds-dbm","name":"cds-dbm","kind":"build-tool","line":"A delta deployment and migration tool for CAP on PostgreSQL that diffs the live schema against a reference schema with Liquibase and applies the change, never dropping tables by default.","short":"Delta deployment and migrations for CAP database adapters","chip":{"label":"Maintenance","tier":"poor","evidence":"44 months since release"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-app-to-app-nav-bas":{"href":"/ui5/artifacts/miyasuta-app-to-app-nav-bas","name":"app-to-app-nav-bas","kind":"sample","line":"Three generated Fiori apps wired to one cross-app navigation intent: fe-customers declares Customers-display in its descriptor, and fe-orders and freestyle each register that intent in their own launchpad sandbox configuration.","short":"Three Fiori apps wired to one cross-app navigation intent","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-01"},"ai":true,"meta":"independent, ui5"},"actor:mio-yasutake":{"href":"/actors/mio-yasutake","name":"Mio Yasutake","kind":"person","glyph":{"type":"avatar","name":"Mio Yasutake","ring":"independent","src":"/avatars/mio-yasutake.png"},"line":"maintains 47 entries, wrote 10 posts, contributed to 47 entries","meta":"independent"},"artifact:miyasuta-assert-target":{"href":"/cap/artifacts/miyasuta-assert-target","name":"assert-target","kind":"sample","line":"A minimal sample of which paths fire @assert.target: an OData POST and this.run do, cds.run and db.run do not, and the ASSERT_TARGET message is overridden per locale in messages.properties.","short":"Which CAP paths trigger @assert.target and which do not","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-attachment-reuse-controls-sample":{"href":"/cap/artifacts/miyasuta-attachment-reuse-controls-sample","name":"attachment-reuse-controls-sample","kind":"sample","line":"A CAP Node.js service on @cap-js/attachments with a Fiori Elements object page that embeds the ui5-upload-controls library as a custom section.","short":"Fiori Elements page embedding upload controls on @cap-js/attachments","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-auth-samples":{"href":"/cap/artifacts/miyasuta-auth-samples","name":"auth-samples","kind":"sample","line":"Two CAP services and a UI over them, set up so role and instance restrictions can be tried out against three mock users instead of a real identity provider.","short":"CAP services and a UI for trying role restrictions with mock users","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-11"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-auth-transport":{"href":"/btp/artifacts/miyasuta-auth-transport","name":"auth-transport","kind":"app","line":"A UI5 app and a CAP service that copy custom role collections from one SAP BTP subaccount to another over the Authorization and Trust Management API, published by its author as a proof of concept rather than for productive use.","short":"UI5 app and CAP service copying role collections between subaccounts","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2022-03"},"ai":true,"meta":"independent, btp"},"artifact:miyasuta-auth-transport2":{"href":"/btp/artifacts/miyasuta-auth-transport2","name":"auth-transport2","kind":"sample","line":"Three MTA projects that declare a role collection in one xs-security.json out of role templates owned by the other two, so it can be transported rather than recreated in each subaccount.","short":"MTA projects sharing a role collection across role templates","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2022-04"},"ai":true,"meta":"independent, btp"},"artifact:miyasuta-blog-bookshop":{"href":"/cap/artifacts/miyasuta-blog-bookshop","name":"blog-bookshop","kind":"sample","line":"A CAP service with a Fiori elements UI deployed whole to Cloud Foundry: an approuter, an HTML5 deployer, a launchpad content deployer and xs-security.json beside the db and srv modules in one mta.yaml.","short":"CAP bookshop with Fiori elements UI deployed whole to Cloud Foundry","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2020-09"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-blog-cap-chart":{"href":"/cap/artifacts/miyasuta-blog-cap-chart","name":"blog-cap-chart","kind":"sample","line":"A Fiori elements overview page over a CAP service whose two donut-chart cards read the same measure from an aggregating view and from the plain entity, so what the aggregation annotations change is visible side by side.","short":"Fiori overview page comparing aggregated and plain donut-chart cards","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2020-09"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-btp-ui5-show-userinfo":{"href":"/ui5/artifacts/miyasuta-btp-ui5-show-userinfo","name":"btp-ui5-show-userinfo","kind":"sample","line":"A UI5 app that reads the signed-in user two ways, through the Fiori launchpad shell service and through the @sap/approuter User API, and records which environments each answers in.","short":"UI5 app reading the signed-in user via launchpad and approuter","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-12"},"ai":true,"meta":"independent, ui5"},"artifact:miyasuta-btp-user-role-request":{"href":"/btp/artifacts/miyasuta-btp-user-role-request","name":"btp-user-role-request","kind":"sample","line":"The files published for two Japanese blog posts on registering a BTP user with SAP Build Process Automation: three .mtar archives and a README that links the posts.","short":"Files for two Japanese posts on BTP user registration with SAP Build","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-03"},"ai":true,"meta":"independent, btp"},"artifact:miyasuta-cap-alp":{"href":"/cap/artifacts/miyasuta-cap-alp","name":"cap-alp","kind":"sample","line":"An Analytical List Page over a CAP OData V4 service, showing the aggregation annotations a CDS model needs before an analytical floorplan will render, kept in their own file beside the service.","short":"Analytical List Page over a CAP OData V4 service","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-10"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-ams-a2a":{"href":"/cap/artifacts/miyasuta-cap-ams-a2a","name":"cap-ams-a2a","kind":"sample","line":"Four app-to-app configurations between CAP Java and CAP Node.js under AMS and IAS, each recording which destination setup makes user propagation and token validation hold.","short":"App-to-app setups between CAP Java and CAP Node.js under AMS and IAS","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-bp-rag":{"href":"/cap/artifacts/miyasuta-cap-bp-rag","name":"cap-bp-rag","kind":"sample","line":"An event-driven RAG application: Cloud Integration embeds a Business Partner event taken off a broker, and the CAP service stores the vector in SAP HANA Cloud and answers questions from it.","short":"Event-driven RAG app with CAP, Cloud Integration and SAP HANA Cloud","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-cds-typer":{"href":"/cap/artifacts/miyasuta-cap-cds-typer","name":"cap-cds-typer","kind":"sample","line":"A CAP service in TypeScript whose handlers import Books and Order from #cds-models/CatalogService, the types @cap-js/cds-typer generates from the model.","short":"CAP service in TypeScript using types from @cap-js/cds-typer","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-12"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-cross-container":{"href":"/cap/artifacts/miyasuta-cap-cross-container","name":"cap-cross-container","kind":"sample","line":"A sample of five CAP services reading each other's HANA tables across HDI containers, with the grantor service key turned into a user-provided service.","short":"CAP services reading each other's HANA tables across HDI containers","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-defaultvalue-function":{"href":"/cap/artifacts/miyasuta-cap-defaultvalue-function","name":"cap-defaultvalue-function","kind":"sample","line":"Common.DefaultValuesFunction pointed at a service function: getDefaultValues() selects the highest existing ID and returns that plus one, leaving the second key element to the user.","short":"Common.DefaultValuesFunction pointed at a CAP service function","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-12"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-embedding-function":{"href":"/cap/artifacts/miyasuta-cap-embedding-function","name":"cap-embedding-function","kind":"sample","line":"A CAP service that computes a note's Vector(768) embedding in its own handlers, selecting SAP HANA Cloud's vector_embedding as a column from a Dummy entity.","short":"CAP service computing embeddings with HANA Cloud vector_embedding","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-04"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-external-northwind":{"href":"/cap/artifacts/miyasuta-cap-external-northwind","name":"cap-external-northwind","kind":"sample","line":"A CAP service that serves an external OData service as its own: Northwind's Products imported as a CSN model, projected read-only, with the incoming query run against the remote service.","short":"CAP service serving Northwind's external OData Products as its own","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-07"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-fe-massedit":{"href":"/cap/artifacts/miyasuta-cap-fe-massedit","name":"cap-fe-massedit","kind":"sample","line":"A sample that switches on mass edit in a Fiori elements list report over CAP with enableMassEdit in manifest.json, against a draft-enabled Books entity with a status code list.","short":"Mass edit enabled in a Fiori elements list report over CAP","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-02"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-feature-control":{"href":"/cap/artifacts/miyasuta-cap-feature-control","name":"cap-feature-control","kind":"sample","line":"A singleton entity whose two flags drive what a Fiori elements page offers: the restriction, action-availability and button-visibility annotations all reach it by $edmJson $Path.","short":"Singleton entity whose flags drive Fiori elements feature control","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-github-action":{"href":"/cap/artifacts/miyasuta-cap-github-action","name":"cap-github-action","kind":"sample","line":"A CAP project whose MTA build and Cloud Foundry deploy run as two jobs of one GitHub Actions workflow, with the Cloud Foundry credentials read from repository secrets.","short":"CAP project built and deployed to Cloud Foundry by GitHub Actions","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-09"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-java-auth-check":{"href":"/cap/artifacts/miyasuta-cap-java-auth-check","name":"cap-java-auth-check","kind":"sample","line":"CAP Java authorization checked case by case against cds-services-bom 4.8.0 — what a WRITE grant does not cover on a bound action, and where a where-condition carries over.","short":"CAP Java authorization checks tried case by case","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-java-child":{"href":"/cap/artifacts/miyasuta-cap-java-child","name":"cap-java-child","kind":"sample","line":"The consumer side of a promotion model for CAP Java: a parent pom pinned to a fixed version, Renovate opening the bump as a pull request, the application's own tests as the gate, and auto-merge only on green.","short":"Consumer side of a CAP Java parent pom promotion model with Renovate","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-java-draft-composition-delete":{"href":"/cap/artifacts/miyasuta-cap-java-draft-composition-delete","name":"cap-java-draft-composition-delete","kind":"sample","line":"Draft cancel on composition items turned into a flag update instead of a cascading physical delete, with the handler reading the incoming CQN so both delete paths behave the same.","short":"CAP Java draft cancel on composition items as a flag update","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-12"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-java-parent-pom-sample":{"href":"/cap/artifacts/miyasuta-cap-java-parent-pom-sample","name":"cap-java-parent-pom-sample","kind":"sample","line":"A Maven parent pom published to GitHub Packages that pins cds-services-bom, the Spring Boot BOM and a shared CAP Java plugin, so a child application names the parent coordinate and no versions of its own.","short":"Maven parent pom pinning cds-services-bom and Spring Boot for CAP Java","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-java-resilience":{"href":"/cap/artifacts/miyasuta-cap-java-resilience","name":"cap-java-resilience","kind":"sample","line":"A CAP Java service consuming a Business Partner API that a CAP Node.js project in the same repository mocks, with the SAP Cloud SDK caching and resilience it is named for recorded as planned.","short":"CAP Java service consuming a Business Partner API mocked in Node.js","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-10"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-java-snippets":{"href":"/cap/artifacts/miyasuta-cap-java-snippets","name":"cap-java-snippets","kind":"doc-source","line":"Ten short CAP Java references, one per document: handler phases, CQN analysis, CQL, error handling, actions, authentication, logging, remote services, hybrid runs and the test layers.","short":"Ten short CAP Java references, one document per topic","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-js-notifications":{"href":"/cap/artifacts/miyasuta-cap-js-notifications","name":"cap-js-notifications","kind":"sample","line":"A CAP Node.js order service that sends a notification after every create, published as a sample implementation of @cap-js/notifications.","short":"Order service sending notifications via @cap-js/notifications","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-12"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-media":{"href":"/cap/artifacts/miyasuta-cap-media","name":"cap-media","kind":"sample","line":"Media handling with nothing but core CDS: a LargeBinary element annotated with @Core.MediaType, @Core.IsMediaType and @Core.ContentDisposition, uploaded from a UI5 UploadSet.","short":"Media handling in core CDS with a UI5 UploadSet","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-05"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-oauth-destination":{"href":"/cap/artifacts/miyasuta-cap-oauth-destination","name":"cap-oauth-destination","kind":"sample","line":"A sample that declares a destination for OAuth2UserTokenExchange in mta.yaml, so it is deployed with the application rather than created by hand in the cockpit.","short":"OAuth2UserTokenExchange destination declared in mta.yaml","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-09"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-openai":{"href":"/cap/artifacts/miyasuta-cap-openai","name":"cap-openai","kind":"sample","line":"Two actions on one CAP service that reach OpenAI's chat completions endpoint by two routes: the openai npm client with the key from the environment, and a CAP remote service of kind: rest that goes through a destination in production.","short":"CAP service actions calling OpenAI chat completions two ways","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-openapi":{"href":"/cap/artifacts/miyasuta-cap-openapi","name":"cap-openapi","kind":"sample","line":"A CAP Java service whose two handlers call role collection endpoints through a client the Cloud SDK's OpenAPI generator builds at build time from a specification kept in the project.","short":"CAP Java service calling role collection APIs via a generated client","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-02"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-principal-propagation":{"href":"/cap/artifacts/miyasuta-cap-principal-propagation","name":"cap-principal-propagation","kind":"sample","line":"An on-premise ABAP OData V2 service read through a named destination and the SAP Connectivity service, with a Fiori elements list report and an approuter in front of the CAP service.","short":"On-premise ABAP OData V2 service read from CAP over Connectivity","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-08"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-redis":{"href":"/cap/artifacts/miyasuta-cap-redis","name":"cap-redis","kind":"sample","line":"A sample that holds the approuter's session, CSRF token included, in a bound instance of Redis on SAP BTP, hyperscaler option instead of the approuter's own memory, around a CAP and Fiori elements app.","short":"Approuter session held in a bound Redis cache instance","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-05"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-reuse-html5":{"href":"/cap/artifacts/miyasuta-cap-reuse-html5","name":"cap-reuse-html5","kind":"sample","line":"A Fiori elements app uploaded to the HTML5 Application Repository together with a cdm.json, and a second repository instance on the app-runtime plan behind a subaccount destination pointing at /applications/cdm/cap-reuse-html5.","short":"Fiori elements app in the HTML5 Application Repository with cdm.json","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-09"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-rfc":{"href":"/cap/artifacts/miyasuta-cap-rfc","name":"cap-rfc","kind":"sample","line":"A CAP Node.js action that calls BAPI_EPM_BP_CREATE over RFC, with the function module's own signature imported as CDS and a destination standing in for the system once deployed.","short":"CAP Node.js action calling BAPI_EPM_BP_CREATE over RFC","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-08"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-ui":{"href":"/cap/artifacts/miyasuta-cap-ui","name":"cap-ui","kind":"sample","line":"An MTA that deploys a CAP service, a HANA HDI container and a Fiori elements app into the HTML5 Application Repository, with two destinations to the same CAP service configured side by side.","short":"MTA deploying CAP, HDI container and a Fiori elements app","chip":{"label":"Maintenance","tier":"poor","evidence":"84 months since release"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cap-vector-hc":{"href":"/cap/artifacts/miyasuta-cap-vector-hc","name":"cap-vector-hc","kind":"sample","line":"A sample that declares VECTOR_EMBEDDING in a CDS entity: an FAQ model whose embedding column HANA Cloud generates and stores, then answers questions by similarity search.","short":"VECTOR_EMBEDDING in a CDS entity for FAQ similarity search","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-10"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cds-feature-softdelete":{"href":"/cap/artifacts/miyasuta-cds-feature-softdelete","name":"cds-feature-softdelete","kind":"cds-plugin","line":"The CAP Java counterpart to cds-softdelete-plugin: the same softdelete aspect, the same annotation, DELETE rewritten as a flag.","short":"CAP Java plugin for soft delete with a softdelete aspect","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-12"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-cds-softdelete-plugin":{"href":"/cap/artifacts/miyasuta-cds-softdelete-plugin","name":"cds-softdelete-plugin","kind":"cds-plugin","line":"A CAP plugin that turns DELETE into a flag on the record: annotated entities keep the row, record who deleted it and when, flag composition children with it, and drop out of reads.","short":"CAP plugin turning DELETE into a flag on annotated entities","chip":{"label":"Maintenance","tier":"fair","evidence":"10 months since release"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-claude-drawio-btp-diagram":{"href":"/btp/artifacts/miyasuta-claude-drawio-btp-diagram","name":"drawio-btp-diagram-skills","kind":"skill","line":"Two Claude Code skills that take a BTP architecture described in words through a Mermaid sketch to draw.io XML, with a structural and a visual review after the drawing.","short":"Claude Code skills for BTP architecture diagrams in draw.io","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, btp"},"artifact:miyasuta-fiori-dynamic-feature-control":{"href":"/cap/artifacts/miyasuta-fiori-dynamic-feature-control","name":"fiori-dynamic-feature-control","kind":"sample","line":"Making one object page field non-editable from the value of another, implemented twice — through a default-value entity with side effects, and through a virtual element with a CAP Java handler.","short":"One object page field made read-only from another's value, two ways","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-12"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-fiori-inline-edit":{"href":"/cap/artifacts/miyasuta-fiori-inline-edit","name":"fiori-inline-edit","kind":"sample","line":"List report inline edit on a draft-enabled service, pinned to @sap/cds 9.9.1 and SAPUI5 1.136.7 — whether a save message appears, and whether value help works inside an edited cell.","short":"List report inline edit on a draft-enabled CAP service","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-fiori-invoke-function":{"href":"/cap/artifacts/miyasuta-fiori-invoke-function","name":"fiori-invoke-function","kind":"sample","line":"Calling an unbound CAP Java function from a freestyle UI5 app through a deferred ODataContextBinding — the (...) path that issues no request until invoke().","short":"Calling an unbound CAP Java function from freestyle UI5","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-fiori-navigation-patterns":{"href":"/cap/artifacts/miyasuta-fiori-navigation-patterns","name":"fiori-navigation-patterns","kind":"sample","line":"A sample of outbound navigation from a Fiori Elements list report, worked through as the triggers that start it, from semantic links to intent-based buttons, and the context each one carries.","short":"Outbound navigation patterns from a Fiori Elements list report","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"independent, cap"},"artifact:miyasuta-generator-ui5-library-af-deploy":{"href":"/ui5/artifacts/miyasuta-generator-ui5-library-af-deploy","name":"generator-ui5-library-af-deploy","kind":"generator","line":"A Yeoman generator that writes the SAP BTP Application Frontend deployment configuration, mta.yaml, ui5-deploy.yaml, xs-app.json and xs-security.json, into an existing UI5 library project.","short":"Yeoman generator for Application Frontend config in UI5 libraries","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:miyasuta-ui5-upload-controls":{"href":"/ui5/artifacts/miyasuta-ui5-upload-controls","name":"ui5-upload-controls","kind":"package","line":"A reusable UI5 control library for file upload and download under the miyasuta.ui5uploadcontrols namespace, built to sit in front of a CAP service.","short":"UI5 control library for file upload and download in front of CAP","chip":{"label":"Maintenance","tier":"fair","evidence":"7 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:mkysoft-xlsxreader":{"href":"/abap/artifacts/mkysoft-xlsxreader","name":"mkysoft/xlsxreader","kind":"package","line":"An ABAP library that reads the content of Excel spreadsheets in the OpenXML format; its documentation states only that scope, with no detail on the class it exposes or on writing a file back.","short":"Reader for Excel spreadsheets in OpenXML format from ABAP","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2020-01"},"ai":true,"meta":"independent, abap"},"actor:mkysoft":{"href":"/actors/mkysoft","name":"Mustafa Kerim Yılmaz","kind":"person","glyph":{"type":"avatar","name":"Mustafa Kerim Yılmaz","src":"/avatars/mkysoft.png"},"line":"maintains 2 entries, contributed to 2 entries"},"artifact:mkysoft-zstrust":{"href":"/abap/artifacts/mkysoft-zstrust","name":"zstrust","kind":"package","line":"A tool that updates the root certificate authorities in an SAP NetWeaver server from Mozilla's certificate store, checking first that each certificate is valid and not already on the system.","short":"Updater for root CAs in SAP NetWeaver from Mozilla's certificate store","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"independent, abap"},"artifact:monstermichl-handlebarsabap":{"href":"/abap/artifacts/monstermichl-handlebarsabap","name":"HandlebarsABAP","kind":"package","line":"A single-file Handlebars templating implementation for ABAP 7.40 SP02 and up that fills a template from an ABAP structure or table, with block helpers, partials and custom helpers.","short":"Single-file Handlebars templating for ABAP 7.40 SP02 and up","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"independent, abap"},"actor:monstermichl":{"href":"/actors/monstermichl","name":"Michel","kind":"person","glyph":{"type":"avatar","name":"Michel","src":"/avatars/monstermichl.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:mpah-enum-value-help":{"href":"/cap/artifacts/mpah-enum-value-help","name":"@mpah/enum-value-help","kind":"cds-plugin","line":"A CAP plugin that generates value help for enum fields from an @enumValueHelp annotation, serving the enum's values from one generated entity instead of hand-written OData annotations.","short":"CAP plugin generating value help for enum fields from an annotation","chip":{"label":"Maintenance","tier":"poor","evidence":"15 months since release"},"ai":true,"meta":"independent, cap"},"actor:mpah":{"href":"/actors/mpah","name":"Maksim Pahlberg","kind":"person","glyph":{"type":"avatar","name":"Maksim Pahlberg","src":"/avatars/mpah.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:mrbandler-cds-routing-handlers":{"href":"/cap/artifacts/mrbandler-cds-routing-handlers","name":"cds-routing-handlers","kind":"package","line":"Decorator-based routing of CAP service handlers in TypeScript, from before the core had an opinion — the framework the CDS-TS-Dispatcher post names as its unmaintained predecessor.","short":"Decorator-based routing of CAP service handlers in TypeScript","chip":{"label":"Maintenance","tier":"poor","evidence":"52 months since release"},"ai":true,"meta":"independent, cap"},"actor:mrbandler":{"href":"/actors/mrbandler","name":"mrbandler","kind":"person","glyph":{"type":"avatar","name":"mrbandler","src":"/avatars/mrbandler.png"},"line":"maintains 2 entries, wrote 1 post, contributed to 2 entries"},"artifact:mrbandler-cds2types":{"href":"/cap/artifacts/mrbandler-cds2types","name":"cds2types","kind":"cli","line":"A command-line tool that generates TypeScript interfaces from a CDS model, written before @cap-js/cds-typer existed.","short":"CLI generating TypeScript interfaces from a CDS model","chip":{"label":"Maintenance","tier":"fair","evidence":"11 months since release"},"ai":true,"meta":"independent, cap"},"artifact:mubuntu-cap-handler-framework":{"href":"/cap/artifacts/mubuntu-cap-handler-framework","name":"cap-handler-framework","kind":"cds-plugin","line":"Convention-based handler layer for CAP: methods named beforeCreate, onRead or afterUpdate are mapped automatically, with the draft lifecycle given its own explicit hooks rather than folded into the active-entity ones.","short":"Convention-based handler layer for CAP with draft lifecycle hooks","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"independent, cap"},"actor:mubuntu":{"href":"/actors/mubuntu","name":"Patrick frison","kind":"person","glyph":{"type":"avatar","name":"Patrick frison","src":"/avatars/mubuntu.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:muhammad-abdullah333-sap-mcp-bridge":{"href":"/abap/artifacts/muhammad-abdullah333-sap-mcp-bridge","name":"SAP MCP Connection Manager","kind":"mcp-server","line":"A Windows desktop manager that holds SAP connections and hands them to Claude Desktop or Codex through a local MCP server, each connection carrying a policy that decides what the assistant may change and what data it may read.","short":"Windows desktop manager handing SAP connections to assistants over MCP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:muhammad-abdullah333":{"href":"/actors/muhammad-abdullah333","name":"Muhammad Abdullah","kind":"person","glyph":{"type":"avatar","name":"Muhammad Abdullah","src":"/avatars/muhammad-abdullah333.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:murattahtaciii-abap-architect":{"href":"/abap/artifacts/murattahtaciii-abap-architect","name":"ABAP Architect","kind":"ide-extension","line":"An Eclipse plug-in that generates ABAP type definitions and parsing code from a pasted JSON or XML sample and creates the matching DDIC objects in a connected system over ADT.","short":"Eclipse plug-in turning JSON or XML into ABAP types and DDIC objects","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, abap"},"actor:murattahtaciii":{"href":"/actors/murattahtaciii","name":"Murat Tahtacı","kind":"person","glyph":{"type":"avatar","name":"Murat Tahtacı","src":"/avatars/murattahtaciii.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:nagarjundas1994-aiagents-cds-agents":{"href":"/cap/artifacts/nagarjundas1994-aiagents-cds-agents","name":"cds-agents","kind":"package","line":"Turns a CAP service into a tool layer for agent frameworks — a CAPToolkit bound to a named service, with a tool strategy controlling how much of it becomes callable.","short":"Toolkit turning a CAP service into tools for agent frameworks","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, cap"},"actor:nagarjundas1994-aiagents":{"href":"/actors/nagarjundas1994-aiagents","name":"NAGARJUN DAS","kind":"person","glyph":{"type":"avatar","name":"NAGARJUN DAS","src":"/avatars/nagarjundas1994-aiagents.png"},"line":"maintains 2 entries, contributed to 2 entries"},"artifact:nagarjundas1994-aiagents-cds-validate":{"href":"/cap/artifacts/nagarjundas1994-aiagents-cds-validate","name":"cds-validate","kind":"package","line":"A package that runs Zod schemas as CAP validation middleware, so one schema replaces the hand-written checks at the top of a handler and failures come back as OData 422 errors per field.","short":"Zod schemas as CAP validation middleware","chip":{"label":"Maintenance","tier":"fair","evidence":"6 months since release"},"ai":true,"meta":"independent, cap"},"artifact:navinkrishnan-cds-incidents-sample":{"href":"/cap/artifacts/navinkrishnan-cds-incidents-sample","name":"cds-incidents-sample","kind":"generator","line":"A cds add plugin that drops the incidents-app model into a project, so the reference model arrives by a command rather than by copying a repository.","short":"cds add plugin adding the incidents-app model to a project","chip":{"label":"Maintenance","tier":"poor","evidence":"17 months since release"},"ai":true,"meta":"independent, cap"},"actor:navinkrishnan":{"href":"/actors/navinkrishnan","name":"Navin Krishnan","kind":"person","glyph":{"type":"avatar","name":"Navin Krishnan","src":"/avatars/navinkrishnan.png"},"line":"maintains 1 entry, wrote 1 post, contributed to 3 entries"},"artifact:neoimpulse-cap-js-bootstrap":{"href":"/cap/artifacts/neoimpulse-cap-js-bootstrap","name":"@neoimpulse/cap-js-bootstrap","kind":"cli","line":"A command-line tool that starts a local CAP environment with several services and an AppRouter together from one command, documented in German and requiring Node 22 or newer.","short":"CLI starting several CAP services and an AppRouter locally together","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"independent, cap"},"actor:neoimpulse":{"href":"/actors/neoimpulse","name":"neoimpulse GmbH","kind":"org","glyph":{"type":"avatar","name":"neoimpulse GmbH","ring":"independent","src":"/avatars/neoimpulse.png"},"line":"maintains 7 entries","meta":"independent"},"artifact:neoimpulse-cap-js-mcp":{"href":"/cap/artifacts/neoimpulse-cap-js-mcp","name":"@neoimpulse/cap-js-mcp","kind":"cds-plugin","line":"An MCP server inside a CAP application, with default tools that read the running model and query entities, plus configurable application tools, prompts and resources.","short":"MCP server inside a CAP application with model and query tools","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, cap"},"artifact:neoimpulse-cap-js-notifications":{"href":"/cap/artifacts/neoimpulse-cap-js-notifications","name":"@neoimpulse/cap-js-notifications","kind":"cds-plugin","line":"A copy of the official @cap-js/notifications plugin republished under another scope, whose README points at the original and says nothing about what was changed.","short":"Copy of @cap-js/notifications published under another scope","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, cap"},"artifact:neoimpulse-cap-js-restore-model-defined-types":{"href":"/cap/artifacts/neoimpulse-cap-js-restore-model-defined-types","name":"@neoimpulse/cap-js-restore-model-defined-types","kind":"cds-plugin","line":"A CAP plugin that casts values back to the types the CDS model declares after a READ, for the entities you name, where the database driver returned them as strings.","short":"CAP plugin casting read values back to CDS model types","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, cap"},"artifact:neoimpulse-cap-js-trim":{"href":"/cap/artifacts/neoimpulse-cap-js-trim","name":"@neoimpulse/cap-js-trim","kind":"cds-plugin","line":"A CAP plugin that strips whitespace from string elements on write, driven by a @cds.trim annotation on an entity or on single elements.","short":"CAP plugin stripping whitespace from strings on write via @cds.trim","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, cap"},"artifact:neoimpulse-cap-js-uppercase":{"href":"/cap/artifacts/neoimpulse-cap-js-uppercase","name":"@neoimpulse/cap-js-uppercase","kind":"cds-plugin","line":"A CAP plugin that uppercases string elements on write, driven by a @cds.uppercase annotation on an entity or on single elements, the twin of the trim plugin.","short":"CAP plugin uppercasing strings on write via @cds.uppercase","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, cap"},"artifact:neoimpulse-cap-js-xml-protocol":{"href":"/cap/artifacts/neoimpulse-cap-js-xml-protocol","name":"@neoimpulse/cap-js-xml-protocol","kind":"cds-plugin","line":"A CAP plugin that lets the REST adapter take XML, parsing the payload to JSON and rewriting the content type before CAP sees the request.","short":"CAP plugin letting the REST adapter accept XML payloads","chip":{"label":"Maintenance","tier":"poor","evidence":"21 months since release"},"ai":true,"meta":"independent, cap"},"artifact:nickels-sap-ai-docs-mcp":{"href":"/btp/artifacts/nickels-sap-ai-docs-mcp","name":"sap-ai-docs-mcp","kind":"mcp-server","line":"An MCP server with semantic search, category filtering and whole-page retrieval over SAP AI Core's documentation, from the SAP-docs/sap-artificial-intelligence repository.","short":"MCP server with semantic search over SAP AI Core documentation","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-11"},"ai":true,"meta":"independent, btp"},"artifact:nickels-sap-btp-docs-mcp":{"href":"/btp/artifacts/nickels-sap-btp-docs-mcp","name":"sap-btp-docs-mcp","kind":"mcp-server","line":"An MCP server for semantic search over the SAP BTP documentation repository, filtered by area such as development, administration, integration or security, with full document retrieval.","short":"MCP server with semantic search over SAP BTP documentation","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-11"},"ai":true,"meta":"independent, btp"},"artifact:nicohern-abapilot-mcp":{"href":"/abap/artifacts/nicohern-abapilot-mcp","name":"ABAPilot","kind":"mcp-server","line":"An MIT-licensed MCP connector for ECC and on-premise S/4HANA that reads ABAP source and dictionary context, whose SAP-side half is a licensed product you install in the system.","short":"MCP connector for ECC and on-premise S/4HANA with a licensed SAP side","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, abap"},"actor:nicohern":{"href":"/actors/nicohern","name":"Nicolas","kind":"person","glyph":{"type":"avatar","name":"Nicolas","src":"/avatars/nicohern.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:oberstvongatow-abapgenerator":{"href":"/abap/artifacts/oberstvongatow-abapgenerator","name":"AbapGenerator","kind":"generator","line":"An ABAP transaction, ZABAP_GENERATOR, that generates a Model-View-Controller-style project by copying a template package's objects into a new one under the project's name.","short":"ABAP transaction generating an MVC-style project from a template","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2022-10"},"ai":true,"meta":"independent, abap"},"actor:oberstvongatow":{"href":"/actors/oberstvongatow","name":"Fabian","kind":"person","glyph":{"type":"avatar","name":"Fabian","src":"/avatars/oberstvongatow.png"},"line":"maintains 1 entry, contributed to 3 entries"},"artifact:odatano-core-mcp":{"href":"/cap/artifacts/odatano-core-mcp","name":"@odatano/core-mcp","kind":"mcp-server","line":"MCP server exposing ODATANO — the Cardano-to-OData bridge built on CAP — to an agent, so the chain is reachable as tools rather than as a REST client.","short":"MCP server exposing the ODATANO Cardano-to-OData bridge as tools","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, cap"},"artifact:odatano-core":{"href":"/cap/artifacts/odatano-core","name":"@odatano/core","kind":"cds-plugin","line":"A CAP plugin that serves the Cardano blockchain as OData V4, giving enterprise-shaped access to a public chain, funded through Cardano Catalyst.","short":"CAP plugin serving the Cardano blockchain as OData V4","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, cap"},"actor:odatano":{"href":"/actors/odatano","name":"ODATANO","kind":"org","glyph":{"type":"avatar","name":"ODATANO","ring":"independent","src":"/avatars/odatano.png"},"line":"maintains 4 entries","meta":"independent"},"artifact:odatano-nightgate-mcp":{"href":"/cap/artifacts/odatano-nightgate-mcp","name":"@odatano/nightgate-mcp","kind":"mcp-server","line":"MCP server exposing NIGHTGATE, the Midnight blockchain attestation layer, as agent tools — the companion to the CAP indexer plugin of the same name.","short":"MCP server exposing the NIGHTGATE Midnight attestation layer","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, cap"},"artifact:odatano-nightgate":{"href":"/cap/artifacts/odatano-nightgate","name":"@odatano/nightgate","kind":"cds-plugin","line":"Indexes the Midnight blockchain and submits transactions to it from CAP, exposed as OData V4, with command-line tools for schema deltas, key rotation and migration.","short":"CAP plugin indexing the Midnight blockchain, exposed as OData V4","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"independent, cap"},"artifact:odatano-watch":{"href":"/cap/artifacts/odatano-watch","name":"@odatano/watch","kind":"cds-plugin","line":"Watches Cardano addresses, payment credentials and minting policies from inside CAP, emitting events with full UTxO payloads and persisting them so a missed window can be replayed.","short":"CAP plugin watching Cardano addresses and emitting events","chip":{"label":"Maintenance","tier":"fair","evidence":"6 months since release"},"ai":true,"meta":"independent, cap"},"artifact:oisee-odata-mcp-go":{"href":"/btp/artifacts/oisee-odata-mcp-go","name":"odata_mcp_go","kind":"mcp-server","line":"A Go binary that bridges any OData v2 or v4 service to MCP — and can collapse the whole service into one tool when the generated tool list is too large to be usable.","short":"Go binary bridging any OData v2 or v4 service to MCP","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-02"},"ai":true,"meta":"independent, btp"},"actor:oisee":{"href":"/actors/oisee","name":"Alice V.","kind":"person","glyph":{"type":"avatar","name":"Alice V.","src":"/avatars/oisee.png"},"line":"maintains 6 entries, contributed to 12 entries"},"artifact:oisee-odata-mcp":{"href":"/btp/artifacts/oisee-odata-mcp","name":"odata_mcp","kind":"mcp-server","line":"The Python original: reads an OData v2 service's metadata and generates MCP tools from it, with the SAP-specific conversions the raw protocol leaves to you.","short":"Python bridge generating MCP tools from OData v2 metadata","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-08"},"ai":true,"meta":"independent, btp"},"artifact:oisee-open-steamgate":{"href":"/abap/artifacts/oisee-open-steamgate","name":"open-steamgate","kind":"app","line":"An ABAP application server you clone and run on your own machine: transpiled ABAP serving classic /IWBEP/ OData v2 to Fiori over a local database, with no SAP system attached.","short":"Local ABAP server serving /IWBEP/ OData v2 without an SAP system","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:oisee-vibing-steampunk":{"href":"/abap/artifacts/oisee-vibing-steampunk","name":"vibing-steampunk","kind":"mcp-server","line":"An ADT-to-MCP bridge in Go that reaches past what ADT exposes — cluster tables decoded, spool and job logs read as tables, the IMG searched, selection texts written back.","short":"ADT-to-MCP bridge in Go reaching past what ADT exposes","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:oisee-zllm":{"href":"/abap/artifacts/oisee-zllm","name":"zllm","kind":"package","line":"An ABAP framework for chaining and orchestrating calls to large language models in pure ABAP, with templated prompts, routing by complexity, response caching and token estimation.","short":"ABAP framework for chaining and orchestrating LLM calls","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-01"},"ai":true,"meta":"independent, abap"},"artifact:oisee-zvdb":{"href":"/abap/artifacts/oisee-zvdb","name":"zvdb","kind":"package","line":"A vector database implemented entirely in ABAP, which stores quantised vectors and retrieves the document chunks relevant to a prompt by brute-force dot product.","short":"Vector database implemented in ABAP for document chunk retrieval","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-09"},"ai":true,"meta":"independent, abap"},"artifact:olegbash599-anytabupdatetask":{"href":"/abap/artifacts/olegbash599-anytabupdatetask","name":"AnyTabUpdateTask","kind":"package","line":"An ABAP utility that saves any internal table to its database table inside CALL FUNCTION ... IN UPDATE TASK with one call, plus classes for grouping and walking internal tables.","short":"Utility for update task database changes and internal tables in ABAP","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-02"},"ai":true,"meta":"independent, abap"},"actor:olegbash599":{"href":"/actors/olegbash599","name":"OlegBash599","kind":"person","glyph":{"type":"avatar","name":"OlegBash599","src":"/avatars/olegbash599.png"},"line":"maintains 3 entries, contributed to 3 entries"},"artifact:olegbash599-zc8a-001":{"href":"/abap/artifacts/olegbash599-zc8a-001","name":"ZC8A_001","kind":"sample","line":"Worked ABAP, Python and C code for similarity search over table and field descriptions, run with AMDP on SAP HANA and ADBC on Oracle, entered through a sample ALV report.","short":"ABAP, Python and C code for similarity search over field descriptions","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-02"},"ai":true,"meta":"independent, abap"},"artifact:olegbash599-zcts-browser":{"href":"/abap/artifacts/olegbash599-zcts-browser","name":"ZCTS_BROWSER","kind":"app","line":"An ABAP report, ZREP_CTS002_TRANSCOPY, that creates a transport of copies for a request without generating a new version first, and can transport it to a target system over RFC.","short":"Report creating transports of copies without a new version","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-10"},"ai":true,"meta":"independent, abap"},"artifact:onurakca-sapui5-adaptation-project-downloader":{"href":"/abap/artifacts/onurakca-sapui5-adaptation-project-downloader","name":"onurakca/SAPUI5-Adaptation-Project-Downloader","kind":"app","line":"An ABAP report that downloads a SAPUI5 adaptation project's artifacts, changes, fragments and i18n files among them, from the Layered Repository to a local folder, keeping its namespace structure.","short":"ABAP report downloading SAPUI5 adaptation project artifacts","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"independent, abap"},"actor:onurakca":{"href":"/actors/onurakca","name":"Onur Akça","kind":"person","glyph":{"type":"avatar","name":"Onur Akça","src":"/avatars/onurakca.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:open-abap-cross-http-client":{"href":"/abap/artifacts/open-abap-cross-http-client","name":"cross-http-client","kind":"package","line":"An ABAP HTTP client intended to work across classic on-premise ABAP and ABAP Cloud, using CL_HTTP_CLIENT on the one and CL_HTTP_DESTINATION_PROVIDER on the other.","short":"HTTP client for classic on-premise ABAP and ABAP Cloud","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-02"},"ai":true,"meta":"community org, abap"},"actor:open-abap":{"href":"/actors/open-abap","name":"open-abap","kind":"org","glyph":{"type":"avatar","name":"open-abap","ring":"community-org","src":"/avatars/open-abap.png"},"line":"maintains 9 entries","meta":"community org"},"artifact:open-abap-express-icf-shim":{"href":"/abap/artifacts/open-abap-express-icf-shim","name":"express-icf-shim","kind":"package","line":"A shim that runs an ABAP ICF handler written against if_http_extension behind an Express 4.x server, for ABAP transpiled to JavaScript and run on Node.js in testing and continuous integration.","short":"Shim running an ABAP ICF handler behind an Express 4.x server","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"community org, abap"},"artifact:open-abap-open-abap-bal":{"href":"/abap/artifacts/open-abap-open-abap-bal","name":"open-abap-bal","kind":"package","line":"Application logging for ABAP code transpiled to JavaScript and run on Node.js, one of the runtime libraries open-abap.org lists.","short":"Application logging for ABAP transpiled to JavaScript on Node.js","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:open-abap-open-abap-core":{"href":"/abap/artifacts/open-abap-open-abap-core","name":"open-abap-core","kind":"package","line":"Reusable ABAP functionality for code transpiled by @abaplint/transpiler: the core ABAP artifacts that code runs against on Node.js.","short":"Core ABAP artifacts for code transpiled by @abaplint/transpiler","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:open-abap-open-abap-gui":{"href":"/abap/artifacts/open-abap-open-abap-gui","name":"open-abap-gui","kind":"package","line":"A library of GUI controls for ABAP transpiled to JavaScript, such as cl_gui_alv_grid and cl_gui_html_viewer, marked work in progress in its README.","short":"GUI controls for ABAP transpiled to JavaScript","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:open-abap-open-abap-lock":{"href":"/abap/artifacts/open-abap-open-abap-lock","name":"open-abap-lock","kind":"package","line":"Concurrent and cross-session locking for open-abap, working only with PostgreSQL as the database backend and only on the DEFAULT connection.","short":"Concurrent and cross-session locking for open-abap on PostgreSQL","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:open-abap-open-abap-odata":{"href":"/abap/artifacts/open-abap-open-abap-odata","name":"open-abap-odata","kind":"package","line":"A set of OData and Gateway shims in ABAP that serve services built the SEGW way, from a model provider and a data provider class, on Node.js and in \"Steampunk\".","short":"OData and Gateway shims serving SEGW-style services on Node.js","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:open-abap-open-abap-pdf":{"href":"/abap/artifacts/open-abap-open-abap-pdf","name":"open-abap-pdf","kind":"package","line":"A standalone PDF generator written in ABAP that builds a multi-page document from text, lines, rectangles and circles placed at given coordinates and returns it as a string or an xstring.","short":"Standalone PDF generator written in ABAP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:open-abap-open-table-maintenance":{"href":"/abap/artifacts/open-abap-open-table-maintenance","name":"open-table-maintenance","kind":"package","line":"A low-footprint table maintenance in ABAP, served over HTTP for one table whose name is fixed in the code, running on-premise, in \"Steampunk\", on open-abap and on Cloud Foundry.","short":"Table maintenance over HTTP for a table fixed in code","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, abap"},"artifact:openui5-core":{"href":"/ui5/artifacts/openui5-core","name":"@openui5/sap.ui.core","kind":"package","line":"The OpenUI5 core: the module loader, the MVC runtime, data binding, routing, theming and the test stack, which is everything a UI5 app does before a single community package is added.","short":"Framework core: module loader, MVC runtime, binding, routing, theming","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, ui5"},"artifact:pacroy-abap-fluentd":{"href":"/abap/artifacts/pacroy-abap-fluentd","name":"abap-fluentd","kind":"package","line":"A Fluentd client written in ABAP for sending log lines from an ABAP system to a Fluentd collector, where entries are flushed with an explicit COMMIT WORK.","short":"Fluentd client in ABAP for sending log lines to a collector","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2018-10"},"ai":true,"meta":"independent, abap"},"actor:pacroy":{"href":"/actors/pacroy","name":"Chairat Onyaem (Par)","kind":"person","glyph":{"type":"avatar","name":"Chairat Onyaem (Par)","src":"/avatars/pacroy.png"},"line":"maintains 2 entries, contributed to 2 entries"},"artifact:pacroy-abap-prometheus":{"href":"/abap/artifacts/pacroy-abap-prometheus","name":"abap-prometheus","kind":"package","line":"A Prometheus client for ABAP, the client side of a Prometheus setup, cloned or imported into the system with abapGit.","short":"Prometheus client for ABAP, installed with abapGit","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-07"},"ai":true,"meta":"independent, abap"},"artifact:patimweb-pi-cap-bestpractices":{"href":"/cap/artifacts/patimweb-pi-cap-bestpractices","name":"@patimweb/pi-cap-bestpractices","kind":"skill","line":"A package for the pi coding agent that distributes SAP's capire/skills, carrying the upstream repository as a git submodule since version 2.0.0 replaced the author's own skill.","short":"SAP's capire/skills packaged for the pi coding agent","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, cap"},"actor:smotherer007":{"href":"/actors/smotherer007","name":"patimweb","kind":"person","glyph":{"type":"avatar","name":"patimweb","src":"/avatars/smotherer007.png"},"line":"maintains 1 entry"},"artifact:pawelwiejkut-bw-remove-characters":{"href":"/abap/artifacts/pawelwiejkut-bw-remove-characters","name":"pawelwiejkut/bw_remove_characters","kind":"package","line":"An ABAP class for a BW transformation's end routine that strips the characters an InfoObject cannot accept, checked against transaction RSKC, before they cause an activation error.","short":"ABAP class stripping invalid characters in BW end routines","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-10"},"ai":true,"meta":"independent, abap"},"actor:pawelwiejkut":{"href":"/actors/pawelwiejkut","name":"Paweł Wiejkut","kind":"person","glyph":{"type":"avatar","name":"Paweł Wiejkut","src":"/avatars/pawelwiejkut.png"},"line":"maintains 2 entries, contributed to 3 entries"},"artifact:pawelwiejkut-bw-trfn-pocketknife":{"href":"/abap/artifacts/pawelwiejkut-bw-trfn-pocketknife","name":"pawelwiejkut/bw_trfn_pocketknife","kind":"package","line":"A framework that handles SAP BW transformation start routines from a customisation table with its own maintenance view, instead of a routine class written per transformation.","short":"Framework for BW transformation start routines from a table","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2020-09"},"ai":true,"meta":"independent, abap"},"artifact:peterlangner-zrss":{"href":"/abap/artifacts/peterlangner-zrss","name":"peterlangner/zrss","kind":"package","line":"An ABAP package that publishes content from an SAP NetWeaver ABAP system as an RSS feed for ABAP Development Tools and other RSS readers, stated for ABAP 7.00 and installed with abapGit.","short":"RSS feed publisher for content from an SAP NetWeaver ABAP system","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2019-01"},"ai":true,"meta":"independent, abap"},"actor:peterlangner":{"href":"/actors/peterlangner","name":"Peter Langner","kind":"person","glyph":{"type":"avatar","name":"Peter Langner","src":"/avatars/peterlangner.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:pokrakam-abapdevsysinit":{"href":"/abap/artifacts/pokrakam-abapdevsysinit","name":"pokrakam/abapDevSysInit","kind":"app","line":"A single ABAP report that automates setting up a new ABAP Developer Edition or trial system, from the user profile and a GitHub RFC destination to fetching abapGit and pulling repositories.","short":"ABAP report setting up a new ABAP Developer Edition or trial system","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-10"},"ai":true,"meta":"independent, abap"},"actor:pokrakam":{"href":"/actors/pokrakam","name":"Mike Pokraka","kind":"person","glyph":{"type":"avatar","name":"Mike Pokraka","src":"/avatars/pokrakam.png"},"line":"maintains 1 entry, contributed to 11 entries"},"artifact:preetamkajalrout-ui5-middleware-destination":{"href":"/ui5/artifacts/preetamkajalrout-ui5-middleware-destination","name":"ui5-middleware-destination","kind":"build-tool","line":"A UI5 Tooling server middleware that proxies requests to backends named in WebIDE-style destination files and serves the routes of a neo-app.json, with Basic Authentication only.","short":"UI5 Tooling middleware proxying destinations and neo-app.json routes","chip":{"label":"Maintenance","tier":"poor","evidence":"75 months since release"},"ai":true,"meta":"independent, ui5"},"actor:preetamkajalrout":{"href":"/actors/preetamkajalrout","name":"Preetam Kajal Rout","kind":"person","glyph":{"type":"avatar","name":"Preetam Kajal Rout","src":"/avatars/preetamkajalrout.png"},"line":"maintains 1 entry, contributed to 9 entries"},"artifact:pulseshift-ui5-lib-visualization":{"href":"/ui5/artifacts/pulseshift-ui5-lib-visualization","name":"ui5-lib-visualization","kind":"package","line":"A UI5 control library that wraps the C3.js charting library as ui5.viz controls (Chart, ChartSeries, ChartDataPoint, ChartAxis, ChartLine, ChartArea and Color) declared in an XML view with data binding.","short":"UI5 control library wrapping C3.js charts as ui5.viz controls","chip":{"label":"Maintenance","tier":"poor","evidence":"65 months since release"},"ai":true,"meta":"independent, ui5"},"actor:pulseshift":{"href":"/actors/pulseshift","name":"PulseShift","kind":"org","glyph":{"type":"avatar","name":"PulseShift","ring":"independent","src":"/avatars/pulseshift.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:pwasem-cds-plugin-typescript":{"href":"/cap/artifacts/pwasem-cds-plugin-typescript","name":"cds-plugin-typescript","kind":"build-tool","line":"A CDS build task that compiles TypeScript sources during cds build, so the deployed artefact is JavaScript without a separate build step in the pipeline.","short":"CDS build task compiling TypeScript sources during cds build","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"independent, cap"},"actor:pwasem":{"href":"/actors/pwasem","name":"Pascal Wasem","kind":"person","glyph":{"type":"avatar","name":"Pascal Wasem","src":"/avatars/pwasem.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:quadrio-cds-db2":{"href":"/cap/artifacts/quadrio-cds-db2","name":"@quadrio/cds-db2","kind":"cds-plugin","line":"A DB2 adapter for CDS, so a CAP model can be deployed to and served from DB2, last released July 2023 and still on npm while the repository it was published from has been deleted.","short":"DB2 adapter for CDS","chip":{"label":"Maintenance","tier":"poor","evidence":"39 months since release"},"ai":true,"meta":"independent, cap"},"artifact:quadrio-cds-dbm":{"href":"/cap/artifacts/quadrio-cds-dbm","name":"@quadrio/cds-dbm","kind":"cli","line":"A published fork of cds-dbm — deploy, load, diff and drop as CDS command-line tasks for relational databases the core does not natively support.","short":"Fork of cds-dbm with deploy, load, diff and drop tasks","chip":{"label":"Maintenance","tier":"poor","evidence":"39 months since release"},"ai":true,"meta":"independent, cap"},"actor:quadrio":{"href":"/actors/quadrio","name":"QuadriO Beratungsgesellschaft mbH","kind":"org","glyph":{"type":"avatar","name":"QuadriO Beratungsgesellschaft mbH","ring":"independent","src":"/avatars/quadrio.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:qualiture-audit-summary":{"href":"/artifacts/qualiture-audit-summary","name":"audit-summary","kind":"cli","line":"A command line that summarises npm audit results by root dependency, with severity counts, current against latest versions and thresholds that exit with code 1.","short":"Groups npm audit findings by root dependency, with failing thresholds","chip":{"label":"Maintenance","tier":"fair","evidence":"8 months since release"},"ai":true,"meta":"independent, general"},"actor:qualiture":{"href":"/actors/qualiture","name":"Robin van het Hof","kind":"person","glyph":{"type":"avatar","name":"Robin van het Hof"},"line":"maintains 6 entries, contributed to 3 entries"},"artifact:qualiture-basenvsync":{"href":"/btp/artifacts/qualiture-basenvsync","name":"BASEnvSync","kind":"ide-extension","line":"An extension for SAP Business Application Studio that zips a dev space's home-directory configuration files and loads them into another dev space.","short":"Carries home-directory dotfiles from one BAS dev space to another","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"independent, btp"},"artifact:qualiture-enforce-export-coverage":{"href":"/artifacts/qualiture-enforce-export-coverage","name":"enforce-export-coverage","kind":"cli","line":"A static-analysis command line that checks every exported TypeScript function has a corresponding test, without running the test suite.","short":"Static check that each exported TypeScript function has a test","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"independent, general"},"artifact:qualiture-git-env-branches":{"href":"/artifacts/qualiture-git-env-branches","name":"git-env-branches","kind":"cli","line":"A command line that shows, for a list of feature branches, which environment branches such as DEV, ACC and master each one has been merged into.","short":"Shows which feature branches reached which environment branch","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"independent, general"},"artifact:qualiture-hana-linter":{"href":"/cap/artifacts/qualiture-hana-linter","name":"hana-linter","kind":"cli","line":"A command line that checks the names of the native SAP HANA artifact files in a CAP project, and the identifiers inside them, against regex rules the project keeps in a config file.","short":"Regex naming rules for SAP HANA artifacts in a CAP project","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"independent, cap"},"artifact:qualiture-ui5-task-check-eocp":{"href":"/ui5/artifacts/qualiture-ui5-task-check-eocp","name":"ui5-task-check-eocp","kind":"build-tool","line":"A UI5 builder task that matches the UI5 version in ui5.yaml against the versions retrieved from ui5.sap.com and warns during the build once that version's End of Cloud Provisioning quarter has been reached.","short":"UI5 build task warning when the app's UI5 version reaches EOCP","chip":{"label":"Maintenance","tier":"fair","evidence":"10 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:rabestro-sap-cds-erd":{"href":"/cap/artifacts/rabestro-sap-cds-erd","name":"sap-cds-erd","kind":"cli","line":"An AWK script of roughly 200 lines that reads .cds files and sketches an entity-relationship diagram as Mermaid output, with nothing to install beyond awk.","short":"AWK script sketching an ER diagram from .cds files","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-08"},"ai":true,"meta":"independent, cap"},"actor:rabestro":{"href":"/actors/rabestro","name":"Jegors Čemisovs","kind":"person","glyph":{"type":"avatar","name":"Jegors Čemisovs","src":"/avatars/rabestro.png"},"line":"maintains 1 entry"},"artifact:rahulsethi-sap-bdc-mcp":{"href":"/btp/artifacts/rahulsethi-sap-bdc-mcp","name":"sap-bdc-mcp","kind":"mcp-server","line":"Discovery and contract tooling for SAP Business Data Cloud — ORD discovery, CSN contract checks and non-executing share planning — behind redaction, policy gates and bounded output.","short":"MCP tooling for SAP Business Data Cloud discovery and contracts","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, btp"},"actor:rahulsethi":{"href":"/actors/rahulsethi","name":"Rahul Sethi","kind":"person","glyph":{"type":"avatar","name":"Rahul Sethi","src":"/avatars/rahulsethi.png"},"line":"maintains 2 entries, contributed to 2 entries"},"artifact:rahulsethi-sap-datasphere-mcp":{"href":"/btp/artifacts/rahulsethi-sap-datasphere-mcp","name":"mcp-sap-datasphere-server","kind":"mcp-server","line":"The read-only Datasphere server: explore spaces, list assets, preview rows, profile columns and summarise analytical models — and nothing that changes anything, by design.","short":"Read-only MCP server for exploring SAP Datasphere","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"independent, btp"},"artifact:raketenstart-abap-abap-feature-toggle":{"href":"/abap/artifacts/raketenstart-abap-abap-feature-toggle","name":"abap-feature-toggle","kind":"package","line":"A feature toggle for ABAP: a toggle is an entry on the view ZFEAT_TOGGLE, switched there rather than by a deployment, and code reads its state with is_active.","short":"Feature toggle for ABAP read via is_active on view ZFEAT_TOGGLE","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"independent, abap"},"actor:raketenstart-abap":{"href":"/actors/raketenstart-abap","name":"raketenstart-abap","kind":"org","glyph":{"type":"avatar","name":"raketenstart-abap","ring":"independent","src":"/avatars/raketenstart-abap.png"},"line":"maintains 2 entries","meta":"independent"},"artifact:raketenstart-abap-abap-tvarvc":{"href":"/abap/artifacts/raketenstart-abap-abap-tvarvc","name":"abap-tvarvc","kind":"package","line":"A helper class for reading TVARVC parameters and select-options from ABAP, with one method for a single parameter and two for select-options, raising zcx_core_tvarvc when a read fails.","short":"Helper class for reading TVARVC parameters and select-options","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-12"},"ai":true,"meta":"independent, abap"},"artifact:rayatus-abapgit-commitlint":{"href":"/abap/artifacts/rayatus-abapgit-commitlint","name":"abapgit-commitlint","kind":"package","line":"A set of abapGit user exits that checks a commit message against the rules a repository defines and can block the push when it fails, with the rules validated by a separate linter service.","short":"abapGit user exits checking commit messages against repository rules","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-11"},"ai":true,"meta":"independent, abap"},"actor:rayatus":{"href":"/actors/rayatus","name":"Jorge Sancho","kind":"person","glyph":{"type":"avatar","name":"Jorge Sancho","src":"/avatars/rayatus.png"},"line":"maintains 1 entry, contributed to 4 entries"},"artifact:rdisomma-ui5x":{"href":"/ui5/artifacts/rdisomma-ui5x","name":"UI5X","kind":"package","line":"An OpenUI5 and SAPUI5 library of eight composite controls under the ui5x namespace: skeleton placeholders and a container that swaps them for content, loading wrappers for the responsive and the grid table, an accordion, a copy button, a segmented input and a chat feed.","short":"UI5 library of eight composite controls under the ui5x namespace","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, ui5"},"actor:rdisomma":{"href":"/actors/rdisomma","name":"Raffaele Di Somma","kind":"person","glyph":{"type":"avatar","name":"Raffaele Di Somma","src":"/avatars/rdisomma.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:regestaitalia-trm-server":{"href":"/abap/artifacts/regestaitalia-trm-server","name":"trm-server","kind":"package","line":"The server-side component of TRM, installed on source and target SAP systems to expose the RFC APIs a TRM client uses to import and export transports, closed to users not listed in /ATRM/USERS.","short":"Server-side component of TRM for importing and exporting transports","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:regestaitalia":{"href":"/actors/regestaitalia","name":"RegGitHub","kind":"org","glyph":{"type":"avatar","name":"RegGitHub","ring":"independent","src":"/avatars/regestaitalia.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:reyemsaibot-qtt":{"href":"/abap/artifacts/reyemsaibot-qtt","name":"qtt","kind":"app","line":"A tool that finds which BEx queries sit on a transport request, which transports carry a given query, and which query a given element belongs to, showing the result in an ALV Grid.","short":"Tool mapping BEx queries to the transport requests carrying them","chip":{"label":"Maintenance","tier":"poor","evidence":"50 months since release"},"ai":true,"meta":"independent, abap"},"actor:reyemsaibot":{"href":"/actors/reyemsaibot","name":"Tobias Meyer","kind":"person","glyph":{"type":"avatar","name":"Tobias Meyer","src":"/avatars/reyemsaibot.png"},"line":"maintains 2 entries, contributed to 2 entries"},"artifact:reyemsaibot-scf":{"href":"/abap/artifacts/reyemsaibot-scf","name":"Source Code Finder","kind":"app","line":"A report that searches ABAP source code in methods, enhancement implementations, DTPs and transformations for a word or a pattern with an asterisk, installed with abapGit.","short":"Report searching ABAP source in methods, enhancements, DTPs and more","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-11"},"ai":true,"meta":"independent, abap"},"artifact:rizing-cds-customer-stepbystep-tool":{"href":"/cap/artifacts/rizing-cds-customer-stepbystep-tool","name":"@rizing/cds-customer-stepbystep-tool","kind":"generator","line":"A tool that checks and completes the deployment configuration of a CAP project, written for Rizing's step-by-step CAP training, last released August 2023 from a repository since deleted.","short":"Tool completing a CAP project's deployment configuration","chip":{"label":"Maintenance","tier":"poor","evidence":"38 months since release"},"ai":true,"meta":"independent, cap"},"artifact:rizing-cds-extension":{"href":"/cap/artifacts/rizing-cds-extension","name":"@rizing/cds-extension","kind":"cds-plugin","line":"A CAP extension, CDSX, that puts a draft-capable facade in front of an OData service imported into CAP, so Fiori elements can edit records that live in another system as drafts.","short":"CAP plugin putting a draft-capable facade in front of imported OData","chip":{"label":"Maintenance","tier":"poor","evidence":"40 months since release"},"ai":true,"meta":"partner, cap"},"artifact:rku-it-gmbh-cds2alv":{"href":"/abap/artifacts/rku-it-gmbh-cds2alv","name":"cds2alv","kind":"package","line":"An ABAP tool that generates an ALV list report directly from a CDS view's own field definitions, maintained on SAP_ABA 750 SP26, with further extensions shipped from a separate repository.","short":"Generator for ALV list reports from a CDS view's field definitions","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-04"},"ai":true,"meta":"independent, abap"},"actor:rku-it-gmbh":{"href":"/actors/rku-it-gmbh","name":"rku.it GmbH","kind":"org","glyph":{"type":"avatar","name":"rku.it GmbH","ring":"independent","src":"/avatars/rku-it-gmbh.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:robertriedel-pod2-config-skill":{"href":"/digital-manufacturing/artifacts/robertriedel-pod2-config-skill","name":"pod2-config","kind":"skill","line":"An agent skill that turns a described POD change into an importable SAP Digital Manufacturing POD 2.0 export, built from standard plugins and actions only.","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, digital-manufacturing"},"actor:robertriedel":{"href":"/actors/robertriedel","name":"robertriedel","kind":"person","glyph":{"type":"avatar","name":"robertriedel","src":"/avatars/robertriedel.png"},"line":"maintains 1 entry"},"artifact:romankorim-sap-mcp-server":{"href":"/abap/artifacts/romankorim-sap-mcp-server","name":"sap-mcp-server","kind":"mcp-server","line":"Reads SAP ECC and S/4HANA for an agent over Gateway OData and RFC, with a Node bridge that speaks the RFC protocol without the proprietary SAP NetWeaver RFC SDK.","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:romankorim":{"href":"/actors/romankorim","name":"romankorim","kind":"person","glyph":{"type":"avatar","name":"romankorim","src":"/avatars/romankorim.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:root3287-cap-segw":{"href":"/cap/artifacts/root3287-cap-segw","name":"@root3287/cap-segw","kind":"build-tool","line":"A CAP build tool that compiles a CDS service into the ABAP Model Provider and Data Provider classes a SAP Gateway SEGW project expects, for OData V4 by default or V2.","short":"Compiler from a CDS service to SEGW model and data provider classes","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"independent, cap"},"actor:root3287":{"href":"/actors/root3287","name":"Timothy Gibbons","kind":"person","glyph":{"type":"avatar","name":"Timothy Gibbons","src":"/avatars/root3287.png"},"line":"maintains 1 entry, contributed to 2 entries"},"artifact:salvatorelaspata-cap-plugin-adobe-forms":{"href":"/cap/artifacts/salvatorelaspata-cap-plugin-adobe-forms","name":"@salvatorela/cap-plugin-adobe-forms","kind":"cds-plugin","line":"A CAP plugin that wraps the SAP Forms service by Adobe on BTP as a CAP service, rendering a PDF from a form template with credentials from a destination or direct configuration.","short":"CAP plugin wrapping the SAP Forms service by Adobe on BTP","chip":{"label":"Maintenance","tier":"fair","evidence":"6 months since release"},"ai":true,"meta":"independent, cap"},"actor:salvatorelaspata":{"href":"/actors/salvatorelaspata","name":"SalvatoreLa","kind":"person","glyph":{"type":"avatar","name":"SalvatoreLa","src":"/avatars/salvatorelaspata.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:sang2x-captools":{"href":"/cap/artifacts/sang2x-captools","name":"@sang2x/captools","kind":"cli","line":"A CLI of eight CAP development commands aimed at Cloud Foundry workflows, shipped without a repository or README, whose binding step writes resolved VCAP_SERVICES into default-env.json.","short":"CLI of CAP development tools for Cloud Foundry workflows","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"independent, cap"},"artifact:sanjay-sde-cap-js-log-control":{"href":"/cap/artifacts/sanjay-sde-cap-js-log-control","name":"@sanjay-sde/cap-js-log-control","kind":"cds-plugin","line":"A CAP plugin for controlling CDS logger verbosity and OpenTelemetry DiagLogger noise, reducing log clutter so that real errors surface.","short":"CAP plugin controlling CDS logger and OpenTelemetry log verbosity","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"independent, cap"},"actor:sanjaybabusp":{"href":"/actors/sanjaybabusp","name":"SanjayBabu SP","kind":"person","glyph":{"type":"avatar","name":"SanjayBabu SP","src":"/avatars/sanjaybabusp.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:sanoberrehman-cap-mcp-bridge":{"href":"/cap/artifacts/sanoberrehman-cap-mcp-bridge","name":"cap-mcp-bridge","kind":"mcp-server","line":"Points at a running CAP or OData V4 service, reads its $metadata, and turns what it finds into MCP tools — list, describe, query with validated filters, expand, and invoke functions and actions.","short":"MCP server generating tools from a CAP or OData V4 service's metadata","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, cap"},"actor:sanoberrehman":{"href":"/actors/sanoberrehman","name":"Sanober","kind":"person","glyph":{"type":"avatar","name":"Sanober","src":"/avatars/sanoberrehman.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:sap-abap-ai-sdk":{"href":"/abap/artifacts/sap-abap-ai-sdk","name":"ABAP AI SDK","kind":"platform","line":"SAP's reuse library for calling a large language model from ABAP code, powered by Intelligent Scenario Lifecycle Management and reaching the models in the Generative AI Hub; delivered with SAP BTP ABAP environment, SAP S/4HANA Cloud Public and Private Edition and SAP S/4HANA.","short":"SAP reuse library for calling large language models from ABAP","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, abap"},"artifact:sap-abap-atc-cr-cv-s4hc":{"href":"/abap/artifacts/sap-abap-atc-cr-cv-s4hc","name":"Cloudification Repository","kind":"web-tool","line":"SAP's list of released APIs for SAP Cloud ERP, with the successors of the objects that are not released — the content the ABAP test cockpit's cloud readiness and clean core checks are pointed at.","short":"SAP's list of released APIs for SAP Cloud ERP with successors","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, abap"},"artifact:sap-abap-file-formats":{"href":"/abap/artifacts/sap-abap-file-formats","name":"abap-file-formats","kind":"practice","line":"SAP's specification for how ABAP objects serialise to files, which makes the on-disk form of an ABAP object a published contract rather than a tool's private choice.","short":"SAP's specification for serialising ABAP objects to files","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, abap"},"artifact:sap-abap-to-json":{"href":"/abap/artifacts/sap-abap-to-json","name":"ABAP to JSON serializer and deserializer","kind":"package","line":"An open-source Z* version of SAP's standard /UI2/CL_JSON class, which serialises ABAP data to JSON and reads it back, installed with abapGit and needing SAP_BASIS 7.31 or later.","short":"Open-source Z* version of /UI2/CL_JSON for ABAP to JSON","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, abap"},"artifact:sap-adt-eclipse":{"href":"/abap/artifacts/sap-adt-eclipse","name":"ABAP Development Tools for Eclipse","kind":"package","line":"SAP's Eclipse plugins for ABAP: source, dictionary and CDS editors, Project Explorer, Outline and ABAP Unit, calling ADT resources on the connected system.","short":"SAP's Eclipse plugins for ABAP development over ADT","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, abap"},"artifact:sap-adt-mcp-server":{"href":"/abap/artifacts/sap-adt-mcp-server","name":"ADT MCP Server","kind":"mcp-server","line":"SAP's own ADT MCP server, and not a package: a preference inside ABAP Development Tools for VS Code that starts a local HTTP MCP server on a port you choose.","short":"Local HTTP MCP server started from ABAP Development Tools for VS Code","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, abap"},"artifact:sap-adt-vscode":{"href":"/abap/artifacts/sap-adt-vscode","name":"ABAP Development Tools for VS Code","kind":"package","line":"SAP's ABAP tools in VS Code: editing, debugging, ABAP Unit, ATC and transports for classes, CDS and RAP objects, over RFC to an on-premise or Private Cloud system and HTTP to a cloud one, with Joule's ADT MCP server and code completion behind an AI-unit licence.","short":"SAP's ABAP tools in VS Code for editing, debugging, ATC and transports","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, abap"},"artifact:sap-adt":{"href":"/abap/artifacts/sap-adt","name":"ADT resources","kind":"platform","line":"The HTTP endpoint an ABAP system exposes as the adt ICF service under /sap/bc/adt, so a client outside the system can reach development objects, delivered with the platform rather than installed.","short":"HTTP endpoint under /sap/bc/adt exposing ABAP development objects","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, abap"},"artifact:sap-ai-sdk-ai-api":{"href":"/cap/artifacts/sap-ai-sdk-ai-api","name":"@sap-ai-sdk/ai-api","kind":"package","line":"The AI Core API surface of SAP's AI SDK, covering deployments, configurations and the rest of the control plane, as opposed to calling a model.","short":"AI Core control plane API surface of SAP's AI SDK","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-ai-sdk-core":{"href":"/cap/artifacts/sap-ai-sdk-core","name":"@sap-ai-sdk/core","kind":"package","line":"The shared internals that the packages of SAP's AI SDK build on, which its own readme says are not meant to be depended on directly.","short":"Shared internals of SAP's AI SDK","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-ai-sdk-foundation-models":{"href":"/cap/artifacts/sap-ai-sdk-foundation-models","name":"@sap-ai-sdk/foundation-models","kind":"package","line":"The package of SAP's AI SDK that calls foundation models through SAP AI Core and the Generative AI Hub, and the one an application actually reaches for.","short":"Client for foundation models via SAP AI Core and Generative AI Hub","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-ai-sdk-orchestration":{"href":"/cap/artifacts/sap-ai-sdk-orchestration","name":"@sap-ai-sdk/orchestration","kind":"package","line":"The Orchestration Service client of SAP's AI SDK, which applies templating, grounding, filtering and masking around a model call rather than in the application.","short":"Orchestration Service client for templating, grounding and masking","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-ai-sdk-prompt-registry":{"href":"/cap/artifacts/sap-ai-sdk-prompt-registry","name":"@sap-ai-sdk/prompt-registry","kind":"package","line":"A package for keeping prompts in SAP's prompt registry rather than in the codebase, so changing a prompt is not a deployment.","short":"Client for prompts kept in SAP's prompt registry","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-aicore-skills":{"href":"/btp/artifacts/sap-aicore-skills","name":"aicore-skills","kind":"skill","line":"Four agent skills for SAP AI Core, published as a plugin inside SAP's AI Skills Library: admin resources, the deployment lifecycle, the foundation models in the Generative AI Hub, and the Context Registry behind tabular prediction.","short":"Four agent skills for SAP AI Core in SAP's AI Skills Library","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-ams-dev":{"href":"/cap/artifacts/sap-ams-dev","name":"@sap/ams-dev","kind":"build-tool","line":"Compiles the DCL authorization policies of SAP's Authorization Management Service to DCN, so an AMS-secured application runs and is tested on a laptop.","short":"Compiler from AMS DCL policies to DCN for local runs and tests","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:sap-ams":{"href":"/cap/artifacts/sap-ams","name":"@sap/ams","kind":"cds-plugin","line":"Decides what a signed-in user may do in a Node.js application that authenticates through SAP Cloud Identity Services, from policies written in DCL.","short":"Authorization from DCL policies for Node.js apps on SAP Cloud Identity","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"sap official, cap"},"artifact:sap-appfront-cli":{"href":"/cap/artifacts/sap-appfront-cli","name":"@sap/appfront-cli","kind":"cli","line":"A CLI for the SAP BTP Application Frontend service, the hosted path for serving a Vue or React frontend in front of a CAP service.","short":"CLI for the SAP BTP Application Frontend service","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:sap-approuter":{"href":"/btp/artifacts/sap-approuter","name":"@sap/approuter","kind":"app","line":"SAP's Node.js application router: the single entry point in front of a business application's microservices, which authenticates the user, forwards each request to a backend by route and serves static content.","short":"SAP's Node.js application router in front of business applications","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"sap official, btp"},"artifact:sap-archive-digital-manufacturing-test-automation-samples":{"href":"/digital-manufacturing/artifacts/sap-archive-digital-manufacturing-test-automation-samples","name":"SAP-archive/digital-manufacturing-test-automation-samples","kind":"sample","line":"Importable Tricentis test modules for the standard SAP Digital Manufacturing applications, published so a project can build its own automated test cases from them.","short":"Tricentis test modules for SAP Digital Manufacturing applications","chip":{"label":"Repository","tier":"poor","evidence":"archived on GitHub"},"ai":true,"meta":"sap official, digital-manufacturing"},"actor:sap-archive":{"href":"/actors/sap-archive","name":"SAP Archive","kind":"org","glyph":{"type":"avatar","name":"SAP Archive","ring":"independent","src":"/avatars/sap-archive.png"},"line":"maintains 2 entries","meta":"independent"},"artifact:sap-artifact-management":{"href":"/btp/artifacts/sap-artifact-management","name":"@sap/artifact-management","kind":"package","line":"A library a VS Code extension calls to read a multi-module workspace, generate its MTA descriptor and archive, and deploy the bundle to Cloud Foundry in one click.","short":"MTA generation and Cloud Foundry deploy for VS Code workspaces","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"sap official, btp"},"artifact:sap-automation-pilot-agent-skills":{"href":"/btp/artifacts/sap-automation-pilot-agent-skills","name":"SAP/automation-pilot-agent-skills","kind":"skill","line":"Eight skills for writing, reviewing and operating SAP Automation Pilot content — command generation, catalogue exploration, code review, the content and executions APIs, debugging, schedules, and generating an MCP server from a command.","short":"Eight skills for writing and operating SAP Automation Pilot content","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-btp-administration-mcp":{"href":"/btp/artifacts/sap-btp-administration-mcp","name":"MCP Server for SAP BTP Administration","kind":"mcp-server","line":"SAP-hosted MCP endpoint that exposes BTP account administration — accounts, security, services and connectivity — as tools an AI client discovers and calls on your behalf.","short":"SAP-hosted MCP endpoint for BTP account administration","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:sap-btp-setup-automator":{"href":"/btp/artifacts/sap-btp-setup-automator","name":"btp-setup-automator","kind":"cli","line":"A containerised script that sets up an SAP BTP account from JSON configuration files: entitlements, subscriptions, service instances, administrators and role collections, instead of clicking through the cockpit.","short":"Containerised script setting up an SAP BTP account from JSON config","chip":{"label":"Repository","tier":"poor","evidence":"archived on GitHub"},"ai":true,"meta":"sap official, btp"},"artifact:sap-btp-solution-diagrams":{"href":"/btp/artifacts/sap-btp-solution-diagrams","name":"SAP BTP Solution Diagram Guidelines","kind":"practice","line":"SAP's visual language for BTP solution diagrams, in line with the SAP Fiori Horizon principles and colour palette, with editable templates for draw.io and PowerPoint.","short":"SAP's visual language and templates for BTP solution diagrams","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-build-code-joule":{"href":"/cap/artifacts/sap-build-code-joule","name":"Joule in SAP Build Code","kind":"service","line":"Joule's generative AI inside SAP Build Code, pitched as \"optimized for Java and JavaScript application development\": opened from SAP Business Application Studio's activity bar, slash commands generate a CAP data model, services, sample data, business logic and a Fiori elements UI.","short":"Joule's generative AI inside SAP Build Code","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, cap"},"artifact:sap-cds-analytics":{"href":"/cap/artifacts/sap-cds-analytics","name":"@sap/cds-analytics","kind":"cds-plugin","line":"CDS plugin that adds embedded analytics to a CAP project, so a service view can be annotated as an analytical cube for SAP Analytics Cloud.","short":"CDS plugin adding embedded analytics to CAP for SAP Analytics Cloud","chip":{"label":"Maintenance","tier":"fair","evidence":"12 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:sap-cds-common-content":{"href":"/cap/artifacts/sap-cds-common-content","name":"@sap/cds-common-content","kind":"package","line":"ISO-standard content for CAP's common definitions — countries, languages, currencies and timezones — so a project does not seed those tables itself.","short":"ISO content for CAP's countries, languages, currencies and timezones","chip":{"label":"Maintenance","tier":"fair","evidence":"6 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:sap-cds-compiler":{"href":"/cap/artifacts/sap-cds-compiler","name":"@sap/cds-compiler","kind":"build-tool","line":"Compiles CDS models to CSN, EDMX and database schemas.","short":"Compiler from CDS models to CSN, EDMX and database schemas","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-cds-dk":{"href":"/cap/artifacts/sap-cds-dk","name":"@sap/cds-dk","kind":"cli","line":"The command line client and development toolkit for CAP projects, with the commands cds build, cds deploy, cds watch and cds add among them.","short":"Command line client and development toolkit for CAP","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-cds-fiori":{"href":"/cap/artifacts/sap-cds-fiori","name":"@sap/cds-fiori","kind":"package","line":"Fiori draft handling and UI-facing behaviour for CAP services.","short":"Fiori draft handling and UI-facing behaviour for CAP services","chip":{"label":"Maintenance","tier":"fair","evidence":"8 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:sap-cds-hana":{"href":"/cap/artifacts/sap-cds-hana","name":"@sap/cds-hana","kind":"cds-plugin","line":"The SAP Cloud Application Programming Model's database adapter for SAP HANA, the package a CAP project adds to run its model on a SAP HANA database.","short":"Database adapter for SAP HANA in CAP","chip":{"label":"Maintenance","tier":"poor","evidence":"17 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:sap-cds-lsp":{"href":"/cap/artifacts/sap-cds-lsp","name":"@sap/cds-lsp","kind":"package","line":"Language server for CDS — the engine behind completion, navigation and inline errors in every supported editor.","short":"Language server for CDS","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-cds-mtxs":{"href":"/cap/artifacts/sap-cds-mtxs","name":"@sap/cds-mtxs","kind":"package","line":"Multitenancy, tenant provisioning and model extensibility for CAP.","short":"Multitenancy, tenant provisioning and extensibility for CAP","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-cds-oyster":{"href":"/cap/artifacts/sap-cds-oyster","name":"@sap/cds-oyster","kind":"cds-plugin","line":"Runs tenant-specific extension code inside a WebAssembly sandbox, so a SaaS application can accept custom logic from a customer without running it unguarded.","short":"WebAssembly sandbox for tenant-specific extension code in CAP","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"sap official, cap"},"artifact:sap-cds-rfc":{"href":"/cap/artifacts/sap-cds-rfc","name":"@sap/cds-rfc","kind":"package","line":"Calls ABAP function modules over RFC from a CAP service.","short":"Calls to ABAP function modules over RFC from a CAP service","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:sap-cds-textmate-grammar":{"href":"/cap/artifacts/sap-cds-textmate-grammar","name":"cds-textmate-grammar","kind":"package","line":"The TextMate grammar for the CDS language, which highlights .cds files where the CDS language server does not run, most visibly in GitHub's own file viewer through Linguist.","short":"TextMate grammar for the CDS language","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, cap"},"artifact:sap-cds":{"href":"/cap/artifacts/sap-cds","name":"@sap/cds","kind":"package","line":"The CAP Node.js runtime, which compiles the CDS model, serves the services declared in it, answers generic requests before any handler runs, and loads every cds-plugin.","short":"CAP Node.js runtime","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-cloud-connector":{"href":"/btp/artifacts/sap-cloud-connector","name":"Cloud Connector","kind":"app","line":"SAP's on-premises agent that links SAP BTP applications to systems in a customer's own network, as a reverse invoke proxy that exposes only the systems and resources it is configured to allow.","short":"SAP's on-premises agent linking SAP BTP to customer-network systems","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:sap-cloud-sdk-connectivity":{"href":"/cap/artifacts/sap-cloud-sdk-connectivity","name":"@sap-cloud-sdk/connectivity","kind":"package","line":"Destination lookup and the connectivity proxy — the package that turns a destination name into a reachable endpoint with credentials attached.","short":"Destination lookup and connectivity proxy for the Cloud SDK","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-cloud-sdk-http-client":{"href":"/cap/artifacts/sap-cloud-sdk-http-client","name":"@sap-cloud-sdk/http-client","kind":"package","line":"The HTTP client that carries a destination's credentials, so an outbound call inherits the authentication rather than assembling it.","short":"HTTP client carrying a destination's credentials","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-cloud-sdk-odata-common":{"href":"/cap/artifacts/sap-cloud-sdk-odata-common","name":"@sap-cloud-sdk/odata-common","kind":"package","line":"The shared machinery under the SDK's OData and OpenAPI client generators; a dependency of the generated clients rather than something written against directly.","short":"Shared machinery under the Cloud SDK's OData and OpenAPI clients","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-cloud-sdk-openapi":{"href":"/cap/artifacts/sap-cloud-sdk-openapi","name":"@sap-cloud-sdk/openapi","kind":"package","line":"Generated OpenAPI clients for the Cloud SDK, so a REST API described by a specification is called through typed functions.","short":"Generated OpenAPI clients for the Cloud SDK","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-cloud-sdk-resilience":{"href":"/cap/artifacts/sap-cloud-sdk-resilience","name":"@sap-cloud-sdk/resilience","kind":"package","line":"Timeouts, retries and circuit breaking around a remote call, so one slow downstream system does not take the application with it.","short":"Timeouts, retries and circuit breaking around remote calls","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-cloud-sdk-util":{"href":"/cap/artifacts/sap-cloud-sdk-util","name":"@sap-cloud-sdk/util","kind":"package","line":"General utilities shared across the Cloud SDK packages — a dependency, not a thing to reach for on its own.","short":"General utilities shared across the Cloud SDK packages","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-code-pal-for-abap-cloud":{"href":"/abap/artifacts/sap-code-pal-for-abap-cloud","name":"code pal for ABAP — Cloud Edition","kind":"package","line":"The same Clean ABAP check set for ABAP Cloud, where the legacy edition cannot run.","short":"Clean ABAP check set for ABAP Cloud","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, abap"},"artifact:sap-code-pal-for-abap":{"href":"/abap/artifacts/sap-code-pal-for-abap","name":"code pal for ABAP","kind":"package","line":"ATC and Code Inspector checks for the parts of Clean ABAP a static analyser can actually check, installed into a system with [abapGit](artifact:abapgit-abapgit) rather than delivered with it.","short":"ATC and Code Inspector checks for Clean ABAP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, abap"},"artifact:sap-developers-mcp":{"href":"/artifacts/sap-developers-mcp","name":"SAP Developers MCP","kind":"mcp-server","line":"The hosted MCP server of developers.sap.com, over which an agent searches SAP's tutorials, reads missions and queries the site's knowledge graph of tutorials and concepts.","short":"Hosted MCP server of developers.sap.com tutorials and missions","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, umbrella"},"actor:sap-tutorials":{"href":"/actors/sap-tutorials","name":"SAP Tutorials","kind":"org","glyph":{"type":"avatar","name":"SAP Tutorials","ring":"independent","src":"/avatars/sap-tutorials.png"},"line":"maintains 2 entries","meta":"independent"},"artifact:sap-e2e-trace":{"href":"/btp/artifacts/sap-e2e-trace","name":"@sap/e2e-trace","kind":"package","line":"SAP Passport handling for a Node.js component: it reads the identifiers a request arrives with, updates them for the next system, and writes a statistics record per request to standard output.","short":"SAP Passport handling for Node.js components","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"sap official, btp"},"artifact:sap-eslint-plugin-cds":{"href":"/cap/artifacts/sap-eslint-plugin-cds","name":"@sap/eslint-plugin-cds","kind":"build-tool","line":"SAP's ESLint plugin for CDS, carrying the model and environment rules capire calls best practice and universal for every CAP project.","short":"SAP's ESLint plugin for CDS","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:sap-fiori-guidelines":{"href":"/ui5/artifacts/sap-fiori-guidelines","name":"sap-fiori-guidelines","kind":"skill","line":"An agent skill SAP publishes in its AI Skills Library, built from the Fiori Design Guidelines at v1.145: eighteen reference files an agent reads before it picks a control, a page type or an AI pattern.","short":"Agent skill built from the Fiori Design Guidelines","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-fiori-ios":{"href":"/btp/artifacts/sap-fiori-ios","name":"sap-fiori-ios","kind":"skill","line":"An agent skill SAP publishes for SAP Fiori for iOS: it maps a node of the Fiori iOS UI Kit in Figma onto SwiftUI code, and answers which Fiori component a Figma variant becomes.","short":"Agent skill mapping Fiori iOS UI Kit nodes in Figma to SwiftUI","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-generator-cap-project":{"href":"/cap/artifacts/sap-generator-cap-project","name":"@sap/generator-cap-project","kind":"generator","line":"The CAP project generator behind SAP Business Application Studio's wizard; its readme says it is meant to be used only there.","short":"CAP project generator behind SAP Business Application Studio's wizard","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:sap-generator-cds":{"href":"/cap/artifacts/sap-generator-cds","name":"@sap/generator-cds","kind":"generator","line":"A CDS project generator, deprecated by its own readme in favour of installing @sap/cds-dk globally.","short":"CDS project generator, deprecated in favour of @sap/cds-dk","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:sap-generator-fiori":{"href":"/cap/artifacts/sap-generator-fiori","name":"@sap/generator-fiori","kind":"generator","line":"The single entry point for generating a Fiori application — the user picks a template and the generator produces the project around it.","short":"Entry point for generating a Fiori application from a template","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"sap official, cap"},"artifact:sap-hana-client":{"href":"/btp/artifacts/sap-hana-client","name":"@sap/hana-client","kind":"package","line":"SAP's own Node.js driver for SAP HANA: connect, run SQL and prepared statements, synchronously, through callbacks or as promises, over native client libraries npm installs per platform.","short":"SAP's Node.js driver for SAP HANA","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"sap official, btp"},"artifact:sap-hana":{"href":"/btp/artifacts/sap-hana","name":"SAP HANA","kind":"platform","line":"SAP’s relational database platform, which stores application data and executes SQL and SQLScript in the database, available on-premise and as the managed service SAP HANA Cloud.","short":"SAP's relational database platform, on-premise and in HANA Cloud","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:sap-hdi-deploy":{"href":"/cap/artifacts/sap-hdi-deploy","name":"@sap/hdi-deploy","kind":"package","line":"The Node.js deployer for SAP HANA Deployment Infrastructure: it writes a database module's design-time files into an HDI container as a delta, and it is what cds deploy runs for SAP HANA.","short":"Node.js deployer for SAP HANA Deployment Infrastructure containers","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:sap-joule-for-developers":{"href":"/abap/artifacts/sap-joule-for-developers","name":"SAP Joule for Developers, ABAP AI capabilities","kind":"service","line":"SAP's AI for ABAP development in ADT for Eclipse and VS Code: chat, code completion, explain, test and CDS generation, RAP logic prediction, and since June 2026 an agentic mode over the ADT MCP Server, metered in AI units through the ABAP AI Hub Service on BTP.","short":"SAP's AI for ABAP development in ADT for Eclipse and VS Code","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, abap"},"artifact:sap-joule-studio-classic":{"href":"/btp/artifacts/sap-joule-studio-classic","name":"Joule Studio, classic edition","kind":"service","line":"The low-code capability in SAP Build for custom Joule skills and Joule agents: skills call OData APIs through BTP destinations, agents get a model, instructions, tools and MCP servers, and both deploy to Joule.","short":"Low-code SAP Build capability for custom Joule skills and agents","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:sap-joule-studio-cli":{"href":"/btp/artifacts/sap-joule-studio-cli","name":"@sap/joule-studio-cli","kind":"cli","line":"SAP’s CLI package for both legacy Joule digital assistants and the new Joule Studio solution workflow, through the joule and jl commands.","short":"CLI for Joule digital assistants and Joule Studio solutions","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"sap official, btp"},"artifact:sap-joule-studio":{"href":"/artifacts/sap-joule-studio","name":"Joule Studio","kind":"web-tool","line":"SAP’s managed development environment for building custom agents, applications and workflows from business intent, in six phases from intent and specification to deployment on an SAP-managed runtime.","short":"SAP's managed environment for building custom agents and workflows","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, umbrella"},"artifact:sap-joule-work-dev-cli":{"href":"/btp/artifacts/sap-joule-work-dev-cli","name":"@sap/joule-work-dev-cli-early-adopters","kind":"cli","line":"jl, the pro-code CLI of the new Joule Studio: a solution is a folder with a solution.yaml and typed assets, validated, built into a zip and deployed to Joule Studio's managed runtime, with Claude Code or OpenCode wired in over MCP. Early Adopter Care.","short":"Pro-code CLI for building and deploying Joule Studio solutions","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"sap official, btp"},"artifact:sap-joule-work":{"href":"/artifacts/sap-joule-work","name":"Joule Work","kind":"web-tool","line":"SAP’s workspace where people express a goal, work with the results in contextual Spaces and direct Joule Assistants and Joule Agents across SAP and third-party systems.","short":"SAP's workspace for conversations, Spaces and directing agents","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, umbrella"},"artifact:sap-joule":{"href":"/btp/artifacts/sap-joule","name":"SAP Joule","kind":"service","line":"SAP's unified AI engagement layer across SAP applications: Joule Work is where a user expresses intent, Joule Assistants coordinate agents across business functions, and Joule Agents carry out the tasks, provisioned on BTP as a formation against SAP Cloud Identity Services.","short":"SAP's AI engagement layer across SAP applications","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:sap-leanix-ai-plugins":{"href":"/btp/artifacts/sap-leanix-ai-plugins","name":"SAP/leanix-ai-plugins","kind":"skill","line":"One Claude Code plugin, sap-leanix, bundling two skills that build and debug LeanIX automation scripts and create and manage calculations, both working through the LeanIX MCP server.","short":"Claude Code plugin with two skills for SAP LeanIX scripting","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, btp"},"artifact:sap-leanix-mcp-server":{"href":"/btp/artifacts/sap-leanix-mcp-server","name":"SAP LeanIX MCP Server","kind":"mcp-server","line":"Hosted MCP endpoint onto an SAP LeanIX instance, exposing selected enterprise-architecture APIs as tools — fact sheets, applications, completeness and custom reports.","short":"Hosted MCP endpoint onto an SAP LeanIX instance","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"sap official, btp"},"artifact:sap-mdk-mcp-server":{"href":"/btp/artifacts/sap-mdk-mcp-server","name":"@sap/mdk-mcp-server","kind":"mcp-server","line":"Five tools for Mobile Development Kit work: create a project, generate pages and rules into it, drive the build and deploy, read the documentation, and pull OData metadata from Mobile Services.","short":"MCP server with five tools for Mobile Development Kit work","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, btp"},"artifact:sap-mdk-tools":{"href":"/btp/artifacts/sap-mdk-tools","name":"@sap/mdk-tools","kind":"cli","line":"A command-line tool for Mobile Development Kit projects — build, deploy, migrate and validate MDK metadata — built on the MTA Build Tool and the Cloud Foundry CLI.","short":"CLI to build, deploy, migrate and validate MDK projects","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"sap official, btp"},"artifact:sap-russia-zrs-abap-source-scan":{"href":"/abap/artifacts/sap-russia-zrs-abap-source-scan","name":"sap-russia/ZRS_ABAP_SOURCE_SCAN","kind":"app","line":"A report that searches code inside modifications and enhancements without depending on SAP HANA.","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-04"},"ai":true,"meta":"independent, abap"},"actor:sap-russia":{"href":"/actors/sap-russia","name":"SAP Russia","kind":"org","glyph":{"type":"avatar","name":"SAP Russia","ring":"independent","src":"/avatars/sap-russia.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:sap-samples-abap-alv-google-upload-sheet":{"href":"/abap/artifacts/sap-samples-abap-alv-google-upload-sheet","name":"SAP-samples/abap-alv-google-upload-sheet","kind":"sample","line":"Sample code that exports SAP GUI ALV grid data directly to Google Drive, where it appears in Google Sheets, with the OAuth, endpoint and ALV configuration around it described in SAP's own guide.","short":"Sample exporting SAP GUI ALV grid data to Google Drive","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"actor:sap-samples":{"href":"/actors/sap-samples","name":"SAP Samples","kind":"org","glyph":{"type":"avatar","name":"SAP Samples","ring":"sap-official","src":"/avatars/sap-samples.png"},"line":"maintains 222 entries","meta":"sap official"},"artifact:sap-samples-abap-cheat-sheets":{"href":"/abap/artifacts/sap-samples-abap-cheat-sheets","name":"SAP-samples/abap-cheat-sheets","kind":"doc-source","line":"A collection of ABAP syntax cheat sheets, from internal tables to RAP's Entity Manipulation Language, each backed by an executable demo class you import into an ABAP system with abapGit.","short":"ABAP syntax cheat sheets with executable demo classes","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-file-uploader":{"href":"/abap/artifacts/sap-samples-abap-file-uploader","name":"abap-file-uploader","kind":"sample","line":"Sample code that uploads a JSON file whose attributes match a table's column names into that ABAP table on an SAP BTP ABAP Environment instance, through a handler class on an HTTP service.","short":"Sample uploading a JSON file into an ABAP table on BTP ABAP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-partner-reference-application":{"href":"/abap/artifacts/sap-samples-abap-partner-reference-application","name":"SAP-samples/abap-partner-reference-application","kind":"sample","line":"A reference application called Music Festival Manager, showing a side-by-side, multitenant extension of SAP S/4HANA Cloud built with RAP on the SAP BTP ABAP environment.","short":"Multitenant S/4HANA Cloud extension built with RAP on BTP ABAP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-analytics-data-modeling":{"href":"/abap/artifacts/sap-samples-abap-platform-analytics-data-modeling","name":"SAP-samples/abap-platform-analytics-data-modeling","kind":"sample","line":"Analytical ABAP CDS data models for the ABAP Flight Reference Scenario, covering the main features of Embedded Analytics on the ABAP Platform.","short":"Analytical ABAP CDS models for the ABAP Flight Reference Scenario","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-application-jobs":{"href":"/abap/artifacts/sap-samples-abap-platform-application-jobs","name":"SAP-samples/abap-platform-application-jobs","kind":"sample","line":"A RAP sample that schedules a class as a background application job from an action on the business object, and shows the job's status and its application log in a Fiori elements app.","short":"RAP sample scheduling a class as a background application job","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-bgpf-appl-log-events-side-effects":{"href":"/abap/artifacts/sap-samples-abap-platform-bgpf-appl-log-events-side-effects","name":"SAP-samples/abap-platform-bgpf-appl-log-events-side-effects","kind":"sample","line":"A RAP inventory sample that starts a long-running calculation through the background processing framework and pushes the result back to the UI with a side effect on a business event.","short":"RAP sample with bgPF, business events and side effects","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-ccm-workshops":{"href":"/abap/artifacts/sap-samples-abap-platform-ccm-workshops","name":"SAP-samples/abap-platform-ccm-workshops","kind":"sample","line":"Hands-on workshop material for adapting custom ABAP code ahead of a system conversion to SAP S/4HANA, using the Simplification Database and ABAP Test Cockpit.","short":"Workshop material on adapting custom ABAP code for S/4HANA","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-codejam-latest-features-2602":{"href":"/abap/artifacts/sap-samples-abap-platform-codejam-latest-features-2602","name":"SAP-samples/abap-platform-codejam-latest-features-2602","kind":"sample","line":"A CodeJam for experienced RAP developers covering the newest RAP framework features from cloud releases 2502 to 2602: Collaborative Draft, Draft Scope and Recommendations.","short":"CodeJam on RAP features from cloud releases 2502 to 2602","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-fiori-feature-showcase":{"href":"/abap/artifacts/sap-samples-abap-platform-fiori-feature-showcase","name":"SAP-samples/abap-platform-fiori-feature-showcase","kind":"sample","line":"A running showcase of annotation-driven SAP Fiori elements for OData V4 on RAP, with a guide that names each feature, its code and where to find it in the source.","short":"Showcase of Fiori elements for OData V4 features on RAP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-jak":{"href":"/abap/artifacts/sap-samples-abap-platform-jak","name":"SAP-samples/abap-platform-jak","kind":"sample","line":"A sample JSON-to-ABAP conversion library for an ABAP environment on SAP Cloud Platform, published to show what APACK, the ABAP package and dependency manager, can do.","short":"JSON-to-ABAP conversion library sample showing what APACK can do","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-nominated-apis-consumption":{"href":"/abap/artifacts/sap-samples-abap-platform-nominated-apis-consumption","name":"SAP-samples/abap-platform-nominated-apis-consumption","kind":"sample","line":"Shows the Tier 2 wrapper pattern for consuming a nominated API from a RAP application on SAP S/4HANA Cloud Private Edition, when the BAPI it needs has no C1-released counterpart.","short":"Tier 2 wrapper pattern for consuming a nominated API from RAP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-rap-transactional-outbox-with-bgpf":{"href":"/abap/artifacts/sap-samples-abap-platform-rap-transactional-outbox-with-bgpf","name":"SAP-samples/abap-platform-rap-transactional-outbox-with-bgpf","kind":"sample","line":"A reference example of the transactional outbox pattern in ABAP Cloud, using the background processing framework (bgPF) to decouple a database change from the follow-up action it triggers.","short":"Transactional outbox pattern in ABAP Cloud with bgPF","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-rap-workshops":{"href":"/abap/artifacts/sap-samples-abap-platform-rap-workshops","name":"SAP-samples/abap-platform-rap-workshops","kind":"sample","line":"Workshop materials for ABAP Cloud and RAP hands-on sessions: the RAP400, RAP500, RAP510, RAP610 and RAP620 exercises sit in this repository, and the rest of SAP's RAP workshop series is linked from its README.","short":"Materials for the RAP400 to RAP620 ABAP Cloud workshops","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-rap100":{"href":"/abap/artifacts/sap-samples-abap-platform-rap100","name":"SAP-samples/abap-platform-rap100","kind":"sample","line":"A beginner workshop that builds a draft-enabled Fiori elements travel app from scratch on RAP's managed runtime, adding numbering, determinations, validations, actions and feature control one exercise at a time.","short":"Beginner RAP workshop building a draft-enabled Fiori elements app","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-rap110":{"href":"/abap/artifacts/sap-samples-abap-platform-rap110","name":"SAP-samples/abap-platform-rap110","kind":"sample","line":"An intermediate workshop that extends a two-node RAP business object, Travel and Booking, with late numbering, side effects, functions, business events and dynamic feature control across twelve exercises.","short":"Intermediate RAP workshop on late numbering, side effects and events","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-rap120":{"href":"/abap/artifacts/sap-samples-abap-platform-rap120","name":"SAP-samples/abap-platform-rap120","kind":"sample","line":"A workshop building a two-node RAP travel app in ABAP Development Tools while using SAP Joule for Developers for predictive code completion, unit test generation and code explanation.","short":"RAP travel app workshop using SAP Joule for Developers","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-rap130":{"href":"/abap/artifacts/sap-samples-abap-platform-rap130","name":"SAP-samples/abap-platform-rap130","kind":"sample","line":"A workshop building a RAP travel app entirely from Visual Studio Code, generated and edited through the ADT MCP Server and a coding agent.","short":"RAP travel app workshop built from VS Code via the ADT MCP Server","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-rap200":{"href":"/abap/artifacts/sap-samples-abap-platform-rap200","name":"SAP-samples/abap-platform-rap200","kind":"sample","line":"A guided-scenario workshop that builds a Travel Processing application in ABAP Cloud, centred on the ABAP RESTful Application Programming Model (RAP).","short":"Guided workshop building a Travel Processing app in ABAP Cloud","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-rap620":{"href":"/abap/artifacts/sap-samples-abap-platform-rap620","name":"SAP-samples/abap-platform-rap620","kind":"sample","line":"A hands-on workshop that builds a side-by-side extension for SAP S/4HANA on SAP BTP ABAP Environment: a custom inventory app that reads product master data over a remote OData service.","short":"Workshop on a side-by-side S/4HANA extension on BTP ABAP Environment","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-rap630-ext":{"href":"/abap/artifacts/sap-samples-abap-platform-rap630-ext","name":"SAP-samples/abap-platform-rap630-ext","kind":"sample","line":"The extension project for the RAP630 developer-extensibility workshop, kept in its own repository so it installs into a different software component from the base business object it extends.","short":"Extension project for the RAP630 developer-extensibility workshop","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-rap630":{"href":"/abap/artifacts/sap-samples-abap-platform-rap630","name":"SAP-samples/abap-platform-rap630","kind":"sample","line":"A hands-on workshop on developer extensibility with ABAP Cloud that generates a UI on the released business object I_BankTP, then extends its behaviour, its data model and its actions.","short":"Workshop on developer extensibility of released RAP business objects","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-rap640":{"href":"/abap/artifacts/sap-samples-abap-platform-rap640","name":"SAP-samples/abap-platform-rap640","kind":"sample","line":"A hands-on workshop that wraps the classic, non-released BAPI_PR_CREATE for use in ABAP Cloud on SAP S/4HANA, then builds a draft-enabled RAP shopping-cart app on top of the wrapper.","short":"Workshop on wrapping a non-released SAP API for use in ABAP Cloud","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-refscen-flight-soap-client":{"href":"/abap/artifacts/sap-samples-abap-platform-refscen-flight-soap-client","name":"SAP-samples/abap-platform-refscen-flight-soap-client","kind":"sample","line":"The client side of SAP's flight reference scenario for SOAP-based integration in ABAP Cloud, with consumption models for creating and cancelling a flight ticket and a provider model for the confirmation.","short":"Client side of the flight reference scenario for SOAP in ABAP Cloud","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-refscen-flight-soap-server":{"href":"/abap/artifacts/sap-samples-abap-platform-refscen-flight-soap-server","name":"abap-platform-refscen-flight-soap-server","kind":"sample","line":"The server side of SAP's flight reference scenario for SOAP-based integration in ABAP Cloud, exposing synchronous ticket creation and an asynchronous cancellation that it confirms back to the client.","short":"Server side of the flight reference scenario for SOAP in ABAP Cloud","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-refscen-flight":{"href":"/abap/artifacts/sap-samples-abap-platform-refscen-flight","name":"SAP-samples/abap-platform-refscen-flight","kind":"sample","line":"The Flight Reference Scenario for the ABAP RESTful Application Programming Model, with sample data, RAP services and legacy logic for a flight-booking app, in branches for cloud and on-premise ABAP releases.","short":"Flight Reference Scenario with sample data and services for RAP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-reuse-services":{"href":"/abap/artifacts/sap-samples-abap-platform-reuse-services","name":"abap-platform-reuse-services","kind":"sample","line":"A sample sales-order RAP business object that draws its key from a number range, records field changes in a change document, and fills a PDF through SAP Forms Service by Adobe.","short":"RAP sales order using number ranges, change documents and Adobe forms","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-abap-platform-yy":{"href":"/abap/artifacts/sap-samples-abap-platform-yy","name":"abap-platform-yy","kind":"sample","line":"A demo library for the ABAP Environment that reads a variable's type and value at runtime as RTTI does, published to show what APACK, the ABAP package and dependency manager, can do.","short":"Demo RTTI-style library for the ABAP Environment, built to show APACK","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-adaptation-project-exercises":{"href":"/ui5/artifacts/sap-samples-adaptation-project-exercises","name":"SAP-samples/adaptation-project-exercises","kind":"sample","line":"A UI5Con workshop on building SAPUI5 Adaptation Projects, which customise a released application through controller and fragment extensions without changing its source, run in SAP Business Application Studio.","short":"UI5Con workshop on building SAPUI5 Adaptation Projects","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-02"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-ai-core-samples":{"href":"/btp/artifacts/sap-samples-ai-core-samples","name":"ai-core-samples","kind":"sample","line":"SAP-authored tutorial notebooks and workflow templates that walk through a first machine learning project on SAP AI Core, from its object store and Docker images to workflow templates.","short":"Tutorial notebooks and templates for a first SAP AI Core project","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-ai-enabled-integrations-codejam":{"href":"/btp/artifacts/sap-samples-ai-enabled-integrations-codejam","name":"ai-enabled-integrations-codejam","kind":"sample","line":"A CodeJam that processes customer support requests in SAP Cloud Integration with an LLM in SAP AI Core, then exposes APIs to an agent as MCP servers through API Management's MCP Gateway.","short":"CodeJam on LLM-backed integration flows and MCP via API Management","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-ai-seamless-integration":{"href":"/ui5/artifacts/sap-samples-ai-seamless-integration","name":"SAP-samples/ai-seamless-integration","kind":"sample","line":"A sample that embeds UI5 Web Components' AI patterns, the AI Button, AI Acknowledgment and AI Quick Prompt, inside an OpenUI5 application written in TypeScript.","short":"UI5 Web Components AI patterns embedded in an OpenUI5 app","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-aicore-genai-samples":{"href":"/btp/artifacts/sap-samples-aicore-genai-samples","name":"aicore-genai-samples","kind":"sample","line":"A collection of sample applications that show how to use SAP AI Core's Generative AI Hub capabilities, each with its own README and meant for enablement, not production use.","short":"Sample apps for SAP AI Core's Generative AI Hub capabilities","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-aicore-multioutput-regression-restaurant-inspections":{"href":"/btp/artifacts/sap-samples-aicore-multioutput-regression-restaurant-inspections","name":"aicore-multioutput-regression-restaurant-inspections","kind":"sample","line":"A boilerplate machine learning service on SAP AI Core that turns restaurant-inspection violation text into several criticality scores.","short":"ML service on SAP AI Core scoring restaurant-inspection violations","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-ams-samples-java":{"href":"/btp/artifacts/sap-samples-ams-samples-java","name":"SAP-samples/ams-samples-java","kind":"sample","line":"Sample Java applications, on Javalin, Spring Boot and CAP Java, showing policy-based authorization through the Authorization Management Service on SAP BTP, with DCL policies checked against JWT tokens.","short":"Java apps showing policy-based authorization with AMS on SAP BTP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-ams-samples-node":{"href":"/btp/artifacts/sap-samples-ams-samples-node","name":"SAP-samples/ams-samples-node","kind":"sample","line":"Sample Node.js applications, a CAP bookshop and an Express shopping app, showing policy-based authorization through the Authorization Management Service on SAP BTP with policies written in DCL.","short":"Node.js apps showing policy-based authorization with AMS on SAP BTP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-analytics-cloud-rpt15-prediction-demo":{"href":"/btp/artifacts/sap-samples-analytics-cloud-rpt15-prediction-demo","name":"analytics-cloud-rpt15-prediction-demo","kind":"sample","line":"A FastAPI backend that triggers SAP-RPT-1.5 payment-delay predictions from an SAP Analytics Cloud Multi Action and writes the results back to HANA.","short":"FastAPI backend for SAP-RPT-1.5 predictions from SAP Analytics Cloud","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-analytics-cloud-scim-api-samples":{"href":"/btp/artifacts/sap-samples-analytics-cloud-scim-api-samples","name":"analytics-cloud-scim-api-samples","kind":"sample","line":"Around 45 Postman collections that call the SAP Analytics Cloud SCIM API to create, update and transport users and teams.","short":"Postman collections for the SAP Analytics Cloud SCIM API","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-application-vulnerability-report-scan-user-automation":{"href":"/btp/artifacts/sap-samples-application-vulnerability-report-scan-user-automation","name":"SAP-samples/application-vulnerability-report-scan-user-automation","kind":"sample","line":"A Python script that assigns Application Vulnerability Report's scan technical user as SpaceAuditor to every Cloud Foundry space in an SAP BTP global account.","short":"Python script assigning the AVR scan user to Cloud Foundry spaces","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-automation-pilot-examples":{"href":"/btp/artifacts/sap-samples-automation-pilot-examples","name":"SAP-samples/automation-pilot-examples","kind":"sample","line":"Example SAP Automation Pilot commands, one importable catalog.json per scenario, for remediation, health checking, root cause analysis and mass operations.","short":"Importable SAP Automation Pilot commands for operations scenarios","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-a2a-dispute-resolution":{"href":"/btp/artifacts/sap-samples-btp-a2a-dispute-resolution","name":"SAP-samples/btp-a2a-dispute-resolution","kind":"sample","line":"A cross-cloud demo in which agents on SAP, Google and Azure discover each other through Open Resource Discovery and settle a shipment dispute over the Agent-to-Agent protocol.","short":"Cross-cloud A2A demo of agents settling a shipment dispute","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-abap-cna":{"href":"/abap/artifacts/sap-samples-btp-abap-cna","name":"btp-abap-cna","kind":"sample","line":"A RAP bonus-calculation extension that runs side by side with S/4HANA Cloud across Cloud Foundry, ABAP Environment and Kyma, together with the Destination and Event Mesh services.","short":"RAP bonus-calculation extension across Cloud Foundry, ABAP and Kyma","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-btp-admin-guide-samples":{"href":"/btp/artifacts/sap-samples-btp-admin-guide-samples","name":"btp-admin-guide-samples","kind":"sample","line":"Terraform or OpenTofu samples that implement the account-model recommendations of the SAP BTP Administrator's Guide, one scenario folder each, built on shared reusable modules.","short":"Terraform samples for the SAP BTP Administrator's Guide account model","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-agentic-ai-use-cases":{"href":"/btp/artifacts/sap-samples-btp-agentic-ai-use-cases","name":"SAP-samples/btp-agentic-ai-use-cases","kind":"sample","line":"Two runnable custom industry AI agent projects from an SAP webinar series, one built in Joule Studio Agent Builder and one wiring Joule to a code-based deep research agent.","short":"Two runnable industry AI agent projects built around Joule","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-ai-bp-access-to-generative-ai-models-cap":{"href":"/cap/artifacts/sap-samples-btp-ai-bp-access-to-generative-ai-models-cap","name":"Sample CAP Application with SAP Cloud SDK for AI","kind":"sample","line":"A CAP backend-sample and fullstack-sample pair that call SAP AI Core through the SAP Cloud SDK for AI: a capital-of-country question and a templated chat completion.","short":"CAP samples calling SAP AI Core through the SAP Cloud SDK for AI","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-btp-ai-bp-content-filtering-cap":{"href":"/cap/artifacts/sap-samples-btp-ai-bp-content-filtering-cap","name":"SAP BTP AI Best Practice Demo - Content Filtering - CAP","kind":"sample","line":"A CAP backend-sample and fullstack-sample that call SAP AI Core with content filtering switched on and off, to compare the filtered and unfiltered response.","short":"CAP samples comparing SAP AI Core responses with content filtering","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-btp-ai-bp-data-masking-cap":{"href":"/cap/artifacts/sap-samples-btp-ai-bp-data-masking-cap","name":"SAP BTP AI Best Practice Demo - Data Masking - CAP","kind":"sample","line":"A CAP backend-sample and fullstack-sample that generate an email through SAP AI Core with an anonymize flag on the request; the README's example prompt carries an email address.","short":"CAP samples generating email through SAP AI Core with anonymization","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-btp-ai-bp-prompt-registry-cap":{"href":"/cap/artifacts/sap-samples-btp-ai-bp-prompt-registry-cap","name":"SAP BTP AI Best Practice Demo - Prompt Registry - CAP","kind":"sample","line":"A CAP backend-sample and fullstack-sample that create, use and delete a template in SAP AI Core's Prompt Registry instead of embedding the prompt in code.","short":"CAP samples using SAP AI Core's Prompt Registry for templates","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-btp-ai-bp-prompt-templating-cap":{"href":"/cap/artifacts/sap-samples-btp-ai-bp-prompt-templating-cap","name":"SAP BTP AI Best Practice Demo - Prompt Templating - CAP","kind":"sample","line":"A CAP backend-sample and fullstack-sample that fill a country placeholder in a prompt template through the SAP Cloud SDK for AI and send it to SAP AI Core.","short":"CAP samples filling a prompt template sent to SAP AI Core","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-btp-ai-bp-vector-rag-embedding-cap":{"href":"/cap/artifacts/sap-samples-btp-ai-bp-vector-rag-embedding-cap","name":"SAP BTP AI Best Practice Demo - Vector Embedding (RAG) - CAP","kind":"sample","line":"A CAP backend-sample and fullstack-sample that parse an uploaded CSV of science data, embed each row through SAP AI Core and store the vectors in SAP HANA Cloud's vector store.","short":"CAP samples embedding CSV rows into the SAP HANA Cloud vector store","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-btp-ai-bp-vector-rag-query-cap":{"href":"/cap/artifacts/sap-samples-btp-ai-bp-vector-rag-query-cap","name":"SAP BTP AI Best Practice Demo - Vector Query (RAG) - CAP","kind":"sample","line":"A CAP backend-sample and fullstack-sample that run a similarity query over the vectors in SAP HANA Cloud and pass the closest science-data rows to the model as context.","short":"CAP samples running RAG similarity queries over SAP HANA Cloud vectors","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-btp-ai-core-consumption-monitor":{"href":"/btp/artifacts/sap-samples-btp-ai-core-consumption-monitor","name":"SAP-samples/btp-ai-core-consumption-monitor","kind":"sample","line":"A CAP and React dashboard that tracks SAP AI Core capacity unit consumption across SAP BTP subaccounts against a monthly spending limit.","short":"CAP and React dashboard for SAP AI Core capacity unit consumption","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-ai-core-usage-monitor":{"href":"/btp/artifacts/sap-samples-btp-ai-core-usage-monitor","name":"SAP-samples/btp-ai-core-usage-monitor","kind":"app","line":"A Python background agent on the SAP BTP, Cloud Foundry Runtime that checks SAP AI Core capacity unit consumption daily and emails or alerts as it approaches a monthly spending limit.","short":"Python agent alerting on SAP AI Core capacity unit consumption","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-aws-monitron":{"href":"/btp/artifacts/sap-samples-btp-aws-monitron","name":"SAP-samples/btp-aws-monitron","kind":"sample","line":"A proof of concept that turns AWS IoT SiteWise equipment events into SAP S/4HANA maintenance notifications through SAP Integration Suite, advanced event mesh and the Events-to-Business-Actions framework.","short":"Proof of concept turning AWS IoT events into S/4HANA notifications","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-cap-dox-invoice-validation":{"href":"/cap/artifacts/sap-samples-btp-cap-dox-invoice-validation","name":"SAP-samples/btp-cap-dox-invoice-validation","kind":"sample","line":"A CAP application on SAP BTP for invoice validation: Document Information Extraction reads an invoice PDF, a person corrects the entries, and a workflow passes it on while recording each change.","short":"CAP app validating invoices with Document Information Extraction","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-btp-cap-genai-rag":{"href":"/cap/artifacts/sap-samples-btp-cap-genai-rag","name":"SAP-samples/btp-cap-genai-rag","kind":"sample","line":"A CAP reference application on SAP BTP for GenAI email support, built on SAP AI Core's Generative AI Hub and retrieval-augmented generation over SAP HANA Cloud's Vector Engine.","short":"CAP reference app for GenAI email support with RAG on HANA Cloud","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-btp-cap-genai-semantic-search":{"href":"/cap/artifacts/sap-samples-btp-cap-genai-semantic-search","name":"SAP-samples/btp-cap-genai-semantic-search","kind":"sample","line":"A basic CAP sample that builds a semantic search engine on SAP BTP using Generative AI Hub and SAP HANA Cloud's Vector Engine.","short":"CAP sample for semantic search with Generative AI Hub and HANA Cloud","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-btp-cloud-connector-setup-automation":{"href":"/btp/artifacts/sap-samples-btp-cloud-connector-setup-automation","name":"btp-cloud-connector-setup-automation","kind":"generator","line":"A Yeoman generator that adds the Cloud Connector system mappings for an XS Advanced system and writes the matching SAP BTP destination files.","short":"Yeoman generator for Cloud Connector mappings and BTP destinations","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-developer-guide-cap":{"href":"/cap/artifacts/sap-samples-btp-developer-guide-cap","name":"SAP-samples/btp-developer-guide-cap","kind":"sample","line":"The full-stack Incident Management CAP application built to accompany the SAP BTP Developer's Guide tutorials, taken from a first project through Fiori Elements, authorization and deployment to Cloud Foundry and Kyma.","short":"Incident Management CAP app for the SAP BTP Developer's Guide","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-btp-edge-integration-cell-on-azure":{"href":"/btp/artifacts/sap-samples-btp-edge-integration-cell-on-azure","name":"btp-edge-integration-cell-on-azure","kind":"sample","line":"Step-by-step instructions for deploying SAP Integration Suite's Edge Integration Cell, a hybrid integration runtime, onto Microsoft Azure.","short":"Instructions for deploying Edge Integration Cell onto Microsoft Azure","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-event-driven-multi-tenant-architecture":{"href":"/cap/artifacts/sap-samples-btp-event-driven-multi-tenant-architecture","name":"SAP-samples/btp-event-driven-multi-tenant-architecture","kind":"sample","line":"A CAP reference sample showing SAP Event Mesh brokering business-partner events from S/4HANA Cloud into a multi-tenant SaaS consumer application.","short":"CAP sample of SAP Event Mesh events feeding a multi-tenant SaaS app","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-btp-gen-ai-hub-sdk-samples":{"href":"/btp/artifacts/sap-samples-btp-gen-ai-hub-sdk-samples","name":"btp-gen-ai-hub-sdk-samples","kind":"sample","line":"Setup instructions for SAP AI Core's Generative AI Hub, SAP AI Launchpad and the client tools, with Python notebooks that connect to the hub.","short":"Setup guide and Python notebooks for SAP AI Core's Generative AI Hub","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2025-03"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-hello-world-fiori":{"href":"/btp/artifacts/sap-samples-btp-hello-world-fiori","name":"btp-hello-world-fiori","kind":"sample","line":"A mission that builds a Hello World SAPUI5/SAP Fiori app in SAP Business Application Studio and puts it on a BTP Launchpad Site.","short":"Mission building a Hello World SAPUI5 app on a BTP Launchpad Site","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-12"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-joule-a2a-pro-code-agent":{"href":"/cap/artifacts/sap-samples-btp-joule-a2a-pro-code-agent","name":"SAP-samples/btp-joule-a2a-pro-code-agent","kind":"sample","line":"A reference Agent-to-Agent implementation on SAP BTP that lets Joule delegate sales-quotation optimisation to a CAP pro-code agent using SAP-RPT-1 for forecasting.","short":"A2A reference letting Joule delegate to a CAP pro-code agent","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-btp-kyma-helloworld":{"href":"/btp/artifacts/sap-samples-btp-kyma-helloworld","name":"btp-kyma-helloworld","kind":"sample","line":"A getting-started guide that creates and deploys a Hello-World Node.js function on SAP BTP, Kyma runtime.","short":"Getting-started guide for a Hello-World function on SAP BTP, Kyma","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-launchpad-ui-samples":{"href":"/ui5/artifacts/sap-samples-btp-launchpad-ui-samples","name":"btp-launchpad-ui-samples","kind":"sample","line":"Sample UI5 projects that accompany a blog post on designing apps for SAP Launchpad Service: a sample service deployed as a service broker and app samples deployed as multi-target applications.","short":"UI5 projects on designing apps for SAP Launchpad Service","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-btp-neo-java-app-migration":{"href":"/btp/artifacts/sap-samples-btp-neo-java-app-migration","name":"btp-neo-java-app-migration","kind":"sample","line":"A guide and set of scenario samples for moving a Java application from the SAP BTP Neo environment to Cloud Foundry, replacing the Neo Java Web API with the SAP Cloud SDK for Java.","short":"Guide and samples for moving Java apps from Neo to Cloud Foundry","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-onboarding":{"href":"/btp/artifacts/sap-samples-btp-onboarding","name":"SAP-samples/btp-onboarding","kind":"sample","line":"A step-by-step guide to the first setup tasks on a new SAP BTP enterprise account: the concepts, the global account, its first subaccount, entitlements, quotas and adding members to both.","short":"Guide to the first setup tasks on a new SAP BTP enterprise account","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-private-link-approuter":{"href":"/btp/artifacts/sap-samples-btp-private-link-approuter","name":"btp-private-link-approuter","kind":"sample","line":"Configuration patterns that put @sap/approuter in front of SAP Private Link Service, for the two SAP services that cannot use it directly yet.","short":"@sap/approuter patterns in front of SAP Private Link Service","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-02"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-resource-consumption-monitor":{"href":"/btp/artifacts/sap-samples-btp-resource-consumption-monitor","name":"SAP-samples/btp-resource-consumption-monitor","kind":"sample","line":"An application that monitors an SAP BTP global account's CPEA or BTPEA credit consumption, breaking costs down by directory, subaccount and space and alerting daily when costs, usage or forecasts change.","short":"App monitoring SAP BTP credit consumption with alerts on increases","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-s4hana-nocode-extension":{"href":"/btp/artifacts/sap-samples-btp-s4hana-nocode-extension","name":"btp-s4hana-nocode-extension","kind":"sample","line":"A mission that builds a side-by-side SAP S/4HANA UI extension with the no-code tool SAP Build Apps and pushes it to the HTML5 repository on SAP BTP.","short":"Mission building a no-code S/4HANA UI extension with SAP Build Apps","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-02"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-secure-development":{"href":"/cap/artifacts/sap-samples-btp-secure-development","name":"SAP-samples/btp-secure-development","kind":"sample","line":"A hands-on OWASP Top 10 workshop that exploits and then fixes security flaws in a CAP Node.js application, covering broken access control, SQL injection and audit logging for sensitive data.","short":"OWASP Top 10 workshop exploiting and fixing flaws in a CAP Node.js app","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-btp-service-metadata":{"href":"/btp/artifacts/sap-samples-btp-service-metadata","name":"btp-service-metadata","kind":"doc-source","line":"A machine-readable catalogue of the services available in an SAP BTP pay-as-you-go account, published as JSON files curated per persona, starting with the developer persona and an inventory list.","short":"Machine-readable catalogue of SAP BTP pay-as-you-go services","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-sourcing-decision-board":{"href":"/btp/artifacts/sap-samples-btp-sourcing-decision-board","name":"SAP-samples/btp-sourcing-decision-board","kind":"sample","line":"A procurement decision-support system that runs a cooperative and an adversarial AI agent strategy over a sourcing RFQ in parallel and cross-validates their recommendations on a live decision board.","short":"Procurement decision support cross-validating two AI agent strategies","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-spend-analysis":{"href":"/btp/artifacts/sap-samples-btp-spend-analysis","name":"btp-spend-analysis","kind":"sample","line":"Sample integration flows for SAP Integration Suite that pull SAP Ariba spend data into SAP Datasphere for the SAP Analytics Cloud Spend Analysis business content.","short":"Integration flows pulling SAP Ariba spend data into SAP Datasphere","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-02"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-terraform-mooc-terra1":{"href":"/btp/artifacts/sap-samples-btp-terraform-mooc-terra1","name":"btp-terraform-mooc-terra1","kind":"sample","line":"The code samples for \"Getting Started with Terraform on SAP BTP\", an SAP learning course that builds up a Terraform configuration lesson by lesson.","short":"Code samples for the Getting Started with Terraform on SAP BTP course","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-terraform-samples":{"href":"/btp/artifacts/sap-samples-btp-terraform-samples","name":"btp-terraform-samples","kind":"sample","line":"Samples for using the Terraform Provider for SAP BTP, with a get-started guide covering three ways to run them.","short":"Samples for the Terraform Provider for SAP BTP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-btp-user-management-microservice":{"href":"/cap/artifacts/sap-samples-btp-user-management-microservice","name":"btp-user-management-microservice","kind":"sample","line":"A CAP microservice, backed by the XSUAA APIs, that manages business applications' users and their authorizations on SAP BTP, with a Fiori Elements UI for testing the role assignments.","short":"CAP microservice on XSUAA managing users and authorizations","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-cap-agentic-engineered":{"href":"/cap/artifacts/sap-samples-cap-agentic-engineered","name":"SAP-samples/cap-agentic-engineered","kind":"sample","line":"A Financial Risk Analyzer built to show what changes when a coding agent is grounded by SAP's MCP servers rather than left to its training data — and it ships the AGENTS.md and skills that did the grounding.","short":"Financial Risk Analyzer built by an agent grounded in SAP MCP servers","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-cap-bookshop-wdi5":{"href":"/cap/artifacts/sap-samples-cap-bookshop-wdi5","name":"SAP-samples/cap-bookshop-wdi5","kind":"sample","line":"A CAP bookshop sample with a wdi5 test suite around it, used in the accompanying SAP tutorial on setting up automated system tests and a CI/CD pipeline for CAP projects.","short":"CAP bookshop with wdi5 system tests for a CI/CD tutorial","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-cap-cds-hands-on":{"href":"/cap/artifacts/sap-samples-cap-cds-hands-on","name":"SAP-samples/cap-cds-hands-on","kind":"sample","line":"A hands-on, five-part workshop on CAP's Conceptual Definition Language, from a first entity definition through types, aspects, associations and compositions to annotations and declarative constraints.","short":"Five-part workshop on CDS, from a first service to constraints","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-cap-hana-exercises-codejam":{"href":"/cap/artifacts/sap-samples-cap-hana-exercises-codejam","name":"SAP-samples/cap-hana-exercises-codejam","kind":"sample","line":"An eight-exercise CodeJam that builds a full-stack CAP application on SAP HANA Cloud, from HDI containers to calculation views and stored procedures.","short":"CodeJam building a full-stack CAP app on SAP HANA Cloud","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-cap-local-development-workshop":{"href":"/cap/artifacts/sap-samples-cap-local-development-workshop","name":"SAP-samples/cap-local-development-workshop","kind":"sample","line":"A reCAP 2025 workshop touring CAP's local-development toolset in seven exercises: cds watch, SQLite, configuration profiles, mocking, local messaging and monorepos, ending with remote debugging.","short":"reCAP 2025 workshop on CAP's local-development toolset","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-cap-microservices-workshop":{"href":"/cap/artifacts/sap-samples-cap-microservices-workshop","name":"cap-microservices-workshop","kind":"sample","line":"A reCAP 2025 hands-on workshop on cutting a CAP application into microservices, and on when to do it at all, built up over six exercises from a solution monorepo to deployment and test.","short":"reCAP 2025 workshop on cutting a CAP app into microservices","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-cap-nodejs-dev-env":{"href":"/cap/artifacts/sap-samples-cap-nodejs-dev-env","name":"cap-nodejs-dev-env","kind":"sample","line":"A development container definition for CAP Node.js with @sap/cds-dk and the Cloud Foundry CLI, for use with VS Code's Dev Containers extension or GitHub Codespaces.","short":"Development container definition for CAP Node.js","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-cap-service-integration-codejam":{"href":"/cap/artifacts/sap-samples-cap-service-integration-codejam","name":"SAP-samples/cap-service-integration-codejam","kind":"sample","line":"A CodeJam on integrating and consuming external services from a CAP project over twelve exercises, from importing and mocking an OData service to the SAP Cloud SDK covering connectivity and destinations.","short":"CodeJam on consuming external services from a CAP project","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-cap-sflight":{"href":"/cap/artifacts/sap-samples-cap-sflight","name":"SAP-samples/cap-sflight","kind":"sample","line":"A travel-booking reference application built with CAP and SAP Fiori elements, whose same UIs run against a Node.js and a Java backend so the two stacks can be compared directly.","short":"Travel-booking reference app on CAP Node.js and Java backends","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-cap-tour-hands-on":{"href":"/cap/artifacts/sap-samples-cap-tour-hands-on","name":"SAP-samples/cap-tour-hands-on","kind":"sample","line":"An eight-exercise tour of CAP features: mocked auth and messaging, the cds REPL, plugin authoring, status-transition flows, testing, declarative constraints and API client packages.","short":"Eight-exercise tour of CAP features, from mocking to plugins","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-cf-autoscaler-custom-metrics-mtls":{"href":"/btp/artifacts/sap-samples-cf-autoscaler-custom-metrics-mtls","name":"cf-autoscaler-custom-metrics-mtls","kind":"sample","line":"A Golang sample that sends custom metrics to the Cloud Foundry Application Autoscaler over mTLS authentication, alongside a second example that scales purely on CPU utilisation.","short":"Golang sample sending custom metrics to the CF Autoscaler over mTLS","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-cf-mta-examples":{"href":"/btp/artifacts/sap-samples-cf-mta-examples","name":"cf-mta-examples","kind":"sample","line":"Multitarget Application (MTA) examples for the SAP BTP, Cloud Foundry environment, one directory per deployment topic, from routes and service instances to blue-green deployment and module hooks.","short":"MTA examples for SAP BTP, Cloud Foundry, one per deployment topic","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-cf-routing-samples":{"href":"/btp/artifacts/sap-samples-cf-routing-samples","name":"cf-routing-samples","kind":"sample","line":"Samples for application routing on the Cloud Foundry runtime for SAP BTP: HTTP/2 and gRPC servers, a route service for IP allow-listing, and customisable load balancing, in several languages.","short":"Cloud Foundry routing samples: HTTP/2, gRPC, IP allow-lists","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-cloud-abap-rap":{"href":"/abap/artifacts/sap-samples-cloud-abap-rap","name":"SAP-samples/cloud-abap-rap","kind":"sample","line":"A RAP business object that generates other RAP business objects from a table, behaviour definitions, projections and value helps included, so a developer starts on business logic rather than boilerplate.","short":"RAP business object that generates other RAP business objects","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-cloud-btp-cli-api-codejam":{"href":"/btp/artifacts/sap-samples-cloud-btp-cli-api-codejam","name":"SAP-samples/cloud-btp-cli-api-codejam","kind":"sample","line":"The material for the \"Hands-on with the btp CLI and APIs\" SAP CodeJam, from installing the command line to creating and deleting account resources through the Core Services API.","short":"CodeJam material on the btp CLI and the Core Services API","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-cloud-cap-hana-swapi":{"href":"/cap/artifacts/sap-samples-cloud-cap-hana-swapi","name":"SAP-samples/cloud-cap-hana-swapi","kind":"sample","line":"A CAP data model demonstrating bi-directional, many-to-many relationships, built on the SWAPI Star Wars dataset extended with TV shows and streaming series and loadable into SQLite, HANA or PostgreSQL.","short":"CAP data model of many-to-many relationships on a Star Wars dataset","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-cloud-cap-samples-java":{"href":"/cap/artifacts/sap-samples-cloud-cap-samples-java","name":"SAP-samples/cloud-cap-samples-java","kind":"sample","line":"The bookshop web application that demonstrates the CAP Java SDK end to end, from CDS domain models and OData V4 to a generated Fiori UI, multitenancy and deployment to Cloud Foundry and Kyma.","short":"Bookshop app demonstrating the CAP Java SDK end to end","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-cloud-cf-feature-flags-sample":{"href":"/btp/artifacts/sap-samples-cloud-cf-feature-flags-sample","name":"SAP-samples/cloud-cf-feature-flags-sample","kind":"sample","line":"A Spring Boot demo application on Cloud Foundry that evaluates boolean and string feature toggles against the SAP BTP Feature Flags service and exposes the result through a web UI.","short":"Spring Boot demo evaluating a toggle from the Feature Flags service","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-cloud-foundry-runtime-learning-journey":{"href":"/cap/artifacts/sap-samples-cloud-foundry-runtime-learning-journey","name":"SAP-samples/cloud-foundry-runtime-learning-journey","kind":"sample","line":"The companion repository for SAP's Cloud Foundry runtime learning journey, walking through both native cf push and MTA-based deployment of a CAP application to SAP BTP.","short":"Companion repo deploying a CAP app to Cloud Foundry two ways","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-cloud-integration-pipeline-datastore-extension-ui":{"href":"/btp/artifacts/sap-samples-cloud-integration-pipeline-datastore-extension-ui","name":"cloud-integration-pipeline-datastore-extension-ui","kind":"sample","line":"A CAP and SAP Fiori elements application that inspects, restarts, moves and deletes Cloud Integration datastore entries without direct API calls.","short":"CAP and Fiori elements app for managing Cloud Integration datastores","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-cloud-mdk-samples":{"href":"/btp/artifacts/sap-samples-cloud-mdk-samples","name":"cloud-mdk-samples","kind":"sample","line":"A collection of mobile development kit (MDK) sample apps and how-to demonstrations for intermediate to experienced developers, some shipping their own Mobile OData Service or CAP project for backend data.","short":"Mobile development kit sample apps and how-to demonstrations","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-cloud-mdk-tutorial-samples":{"href":"/btp/artifacts/sap-samples-cloud-mdk-tutorial-samples","name":"cloud-mdk-tutorial-samples","kind":"sample","line":"The sample projects the mobile development kit's developer tutorials reference, one folder per tutorial, mission or group, from a quick start to branding a customised app and creating extension controls.","short":"Sample projects referenced by the mobile development kit tutorials","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-cloud-sample-webhooks":{"href":"/btp/artifacts/sap-samples-cloud-sample-webhooks","name":"SAP-samples/cloud-sample-webhooks","kind":"sample","line":"A pair of Java servlets that relay alerts from SAP BTP's Neo environment to an on-premise system through the Cloud Connector.","short":"Java servlets relaying Neo alerts on premise via Cloud Connector","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-codejam-cap-llm":{"href":"/cap/artifacts/sap-samples-codejam-cap-llm","name":"SAP-samples/codejam-cap-llm","kind":"sample","line":"A CodeJam that builds a CAP-based job posting service exposing SAP AI Core's generative AI capabilities, including vector embeddings, through an OData API.","short":"CodeJam on a CAP job posting service using SAP AI Core over OData","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-codejam-code-based-agents":{"href":"/btp/artifacts/sap-samples-codejam-code-based-agents","name":"SAP-samples/codejam-code-based-agents","kind":"sample","line":"A CodeJam teaching code-based AI agents in Python or TypeScript, from a first agent through custom tools to deployment on SAP BTP and integration with Joule.","short":"CodeJam on code-based AI agents in Python or TypeScript on SAP BTP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-concur-joule-ips-jobs":{"href":"/btp/artifacts/sap-samples-concur-joule-ips-jobs","name":"SAP-samples/concur-joule-ips-jobs","kind":"sample","line":"Pre-configured Identity Provisioning jobs that source users from SAP Concur and write the SAP Global ID back, the prerequisite for enabling Joule and Task Center.","short":"Identity Provisioning jobs syncing SAP Concur users for Joule","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-connecting-systems-services-integration-suite-codejam":{"href":"/btp/artifacts/sap-samples-connecting-systems-services-integration-suite-codejam","name":"SAP-samples/connecting-systems-services-integration-suite-codejam","kind":"sample","line":"A CodeJam that builds an integration flow in SAP Integration Suite, from validating an employee ID to retrieving dependant data from the regional server that holds it.","short":"CodeJam building an integration flow in SAP Integration Suite","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-cross-stack-partner-reference-extension":{"href":"/abap/artifacts/sap-samples-cross-stack-partner-reference-extension","name":"SAP-samples/cross-stack-partner-reference-extension","kind":"sample","line":"A worked cross-stack extension pairing an on-stack RAP extension on SAP S/4HANA Cloud Public Edition with a side-by-side, multi-tenant CAP application on SAP BTP.","short":"Cross-stack extension pairing on-stack RAP with a side-by-side CAP app","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-dbt-sap-hana-cloud":{"href":"/btp/artifacts/sap-samples-dbt-sap-hana-cloud","name":"dbt-sap-hana-cloud","kind":"package","line":"A dbt adapter, installed as a Python package beside dbt-core, that lets a dbt project target SAP HANA Cloud as its warehouse through a profile in profiles.yml.","short":"dbt adapter targeting SAP HANA Cloud as its warehouse","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-digital-manufacturing-extension-samples":{"href":"/digital-manufacturing/artifacts/sap-samples-digital-manufacturing-extension-samples","name":"SAP-samples/digital-manufacturing-extension-samples","kind":"sample","line":"Worked samples for the six ways SAP Digital Manufacturing can be extended, from POD plugins to XSLT inside an integration flow.","short":"Samples for the six extension types of SAP Digital Manufacturing","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, digital-manufacturing"},"artifact:sap-samples-e-mobility-driver-app":{"href":"/cap/artifacts/sap-samples-e-mobility-driver-app","name":"SAP-samples/e-mobility-driver-app","kind":"sample","line":"A CAP-based progressive web app that lets electric-vehicle drivers manage charging badges, start and stop charging sessions, and find stations, proxying three SAP E-Mobility OData APIs.","short":"CAP-based PWA for EV drivers proxying SAP E-Mobility OData APIs","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-event-driven-integrations-codejam":{"href":"/btp/artifacts/sap-samples-event-driven-integrations-codejam","name":"SAP-samples/event-driven-integrations-codejam","kind":"sample","line":"An eleven-exercise CodeJam that moves a fictional ticketing company from polling APIs to a publish-subscribe architecture on SAP Integration Suite, advanced event mesh.","short":"CodeJam moving from polling to pub-sub on advanced event mesh","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-event-hub-cap-samples":{"href":"/cap/artifacts/sap-samples-event-hub-cap-samples","name":"SAP-samples/event-hub-cap-samples","kind":"sample","line":"A CAP consumer wired to SAP Cloud Application Event Hub, which has to be deployed to SAP BTP before events arrive, exposing the received events through an OData V4 service.","short":"CAP consumer of SAP Cloud Application Event Hub events","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-event-mesh-client-java-samples":{"href":"/btp/artifacts/sap-samples-event-mesh-client-java-samples","name":"SAP-samples/event-mesh-client-java-samples","kind":"sample","line":"Two Spring Boot applications showing point-to-point and publish-subscribe messaging against SAP Event Mesh through its Java JMS client.","short":"Spring Boot apps messaging over SAP Event Mesh's Java JMS client","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-event-mesh-client-nodejs-samples":{"href":"/btp/artifacts/sap-samples-event-mesh-client-nodejs-samples","name":"SAP-samples/event-mesh-client-nodejs-samples","kind":"sample","line":"Node.js samples and documentation for SAP Event Mesh's AMQP 1.0 messaging client, from a basic send/receive pair to a full event simulator.","short":"Node.js samples for SAP Event Mesh's AMQP 1.0 messaging client","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-fiori-elements-feature-showcase":{"href":"/cap/artifacts/sap-samples-fiori-elements-feature-showcase","name":"SAP-samples/fiori-elements-feature-showcase","kind":"sample","line":"A running showcase of SAP Fiori elements for OData V4 features on a CAP backend, each one searchable to the CDS annotation or configuration behind it.","short":"Showcase of Fiori elements for OData V4 features on a CAP backend","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-fiori-elements-fpm-exercises-codejam":{"href":"/cap/artifacts/sap-samples-fiori-elements-fpm-exercises-codejam","name":"SAP-samples/fiori-elements-fpm-exercises-codejam","kind":"sample","line":"A CodeJam walkthrough that builds a bookshop app on the SAP Fiori elements flexible programming model, chapter by chapter, over a CAP Node.js OData backend.","short":"CodeJam building a bookshop app on the flexible programming model","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-fiori-elements-v4-cap-advanced":{"href":"/cap/artifacts/sap-samples-fiori-elements-v4-cap-advanced","name":"SAP-samples/fiori-elements-v4-cap-advanced","kind":"sample","line":"Branch-by-branch solutions for the UX405 e-learning course, each one an exercise in the advanced concepts of a Fiori elements app on a CAP OData V4 service.","short":"Exercise solutions for the UX405 course on Fiori elements with CAP","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-02"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-fiori-mcp-server-hands-on":{"href":"/ui5/artifacts/sap-samples-fiori-mcp-server-hands-on","name":"SAP-samples/fiori-mcp-server-hands-on","kind":"sample","line":"A hands-on exercise set that builds and modifies an SAP Fiori elements app from a Figma design, using the MCP servers for SAP Fiori elements and for Figma with an AI coding assistant.","short":"Exercises building a Fiori elements app from Figma via MCP servers","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-forms-service-by-adobe-samples":{"href":"/abap/artifacts/sap-samples-forms-service-by-adobe-samples","name":"SAP-samples/forms-service-by-adobe-samples","kind":"sample","line":"Example projects for integrating SAP Forms Service by Adobe into a project; the overview lists one, the integration with ABAP Environment.","short":"Projects integrating SAP Forms Service by Adobe with ABAP Environment","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-fundamental-ngx-sample-apps":{"href":"/ui5/artifacts/sap-samples-fundamental-ngx-sample-apps","name":"SAP-samples/fundamental-ngx-sample-apps","kind":"sample","line":"An Angular performance-review demo showcasing Fundamental NGX components, including its UI5 Web Components wrapper, with dashboard tiles, an employee table and forms on mock data.","short":"Angular performance-review demo of Fundamental NGX components","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-generative-ai-codejam":{"href":"/btp/artifacts/sap-samples-generative-ai-codejam","name":"SAP-samples/generative-ai-codejam","kind":"sample","line":"A CodeJam that deploys and queries a large language model on SAP AI Core's Generative AI Hub, then builds a retrieval-augmented chatbot on top of it.","short":"CodeJam deploying an LLM on Generative AI Hub and building RAG","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-hana-apl-apis-runtimes":{"href":"/btp/artifacts/sap-samples-hana-apl-apis-runtimes","name":"hana-apl-apis-runtimes","kind":"sample","line":"SQL code examples for every SAP HANA Automated Predictive Library API, plus reference runtimes for scoring an exported model in C++, Java or JavaScript.","short":"SQL examples for the HANA APL APIs plus scoring runtimes","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-hana-cf-get-started-trial":{"href":"/btp/artifacts/sap-samples-hana-cf-get-started-trial","name":"SAP-samples/hana-cf-get-started-trial","kind":"sample","line":"The starting-point repository for an SAP tutorial that explores NoSQL, graph, geospatial and text analytics in SAP HANA; the setup instructions and every step are in the tutorial itself.","short":"Starting project for a tutorial on NoSQL, graph and spatial in HANA","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-hana-cli-claude-plugin":{"href":"/btp/artifacts/sap-samples-hana-cli-claude-plugin","name":"SAP-samples/hana-cli-claude-plugin","kind":"mcp-server","line":"A Claude Code plugin that registers the MCP server of hana-cli, so Claude Code can work on SAP HANA Cloud and on-premise SAP HANA databases.","short":"Claude Code plugin registering hana-cli's MCP server","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-hana-cloud-modeling-learning-journey":{"href":"/btp/artifacts/sap-samples-hana-cloud-modeling-learning-journey","name":"SAP-samples/hana-cloud-modeling-learning-journey","kind":"sample","line":"Course files, the archive HC300_2410_Course_Files.zip among them, for the exercises of the SAP Learning journey Developing Data Models with SAP HANA Cloud, whose handbook holds the instructions.","short":"Course files for Developing Data Models with SAP HANA Cloud","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-hana-developer-cli-tool-example":{"href":"/btp/artifacts/sap-samples-hana-developer-cli-tool-example","name":"SAP-samples/hana-developer-cli-tool-example","kind":"cli","line":"A developer-centric command line for SAP HANA, built for local development outside SAP tooling and connecting to a local, cloud or remote HANA instance the same way.","short":"Developer-centric command line for SAP HANA","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-hana-graph-examples":{"href":"/btp/artifacts/sap-samples-hana-graph-examples","name":"hana-graph-examples","kind":"sample","line":"SQL scripts and a notebook demonstrating SAP HANA's built-in graph algorithms called from database procedures, from path finding over flight routes to isochrones on a London street network.","short":"SQL scripts and a notebook for SAP HANA's built-in graph algorithms","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-hana-hdbext-promisfied-example":{"href":"/btp/artifacts/sap-samples-hana-hdbext-promisfied-example","name":"SAP-samples/hana-hdbext-promisfied-example","kind":"package","line":"Promise-based wrappers around the SAP HANA client libraries for Node.js, Go and Python, replacing nested callbacks with a single async call.","short":"Promise-based wrappers around the SAP HANA client libraries","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-hana-ml-py-codejam":{"href":"/btp/artifacts/sap-samples-hana-ml-py-codejam","name":"SAP-samples/hana-ml-py-codejam","kind":"sample","line":"SAP CodeJam material that walks through a first machine learning workflow in SAP HANA Cloud from Python, in Jupyter notebooks from HANA DataFrames to hyperparameter tuning and AutoML.","short":"CodeJam on a first machine learning workflow in SAP HANA Cloud","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-01"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-hana-ml-samples":{"href":"/btp/artifacts/sap-samples-hana-ml-samples","name":"hana-ml-samples","kind":"sample","line":"SAP-authored code examples for predictive and machine learning scenarios on SAP HANA, from Predictive Analysis Library SQL to hana-ml Python notebooks.","short":"Code examples for predictive and ML scenarios on SAP HANA","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-hana-shine-xsa":{"href":"/btp/artifacts/sap-samples-hana-shine-xsa","name":"hana-shine-xsa","kind":"sample","line":"SHINE, SAP's demo application for learning SAP HANA Extended Application Services, Advanced Model, shipped as a Multi-Target Application with sample data, tables, views, OData services and a UI.","short":"SHINE demo application for learning SAP HANA XS Advanced","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-hda-cross-pm-samples":{"href":"/btp/artifacts/sap-samples-hda-cross-pm-samples","name":"hda-cross-pm-samples","kind":"sample","line":"An ongoing collection of tutorials and use cases for SAP HANA database and analytics products, including SAP Datasphere and SAP Analytics Cloud.","short":"Tutorials and use cases for SAP HANA database and analytics products","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-html5-applications-migration-skills-for-sap-btp":{"href":"/btp/artifacts/sap-samples-html5-applications-migration-skills-for-sap-btp","name":"SAP-samples/html5-applications-migration-skills-for-sap-btp","kind":"skill","line":"A Claude Code plugin with migrate, validate and cleanup skills that move an HTML5 app from SAP Neo, html5-apps-repo or a standalone approuter to the SAP BTP Application Frontend (appFront) service.","short":"Claude Code plugin with skills migrating HTML5 apps to appFront","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-hxe-hibernate-google-app-engine":{"href":"/btp/artifacts/sap-samples-hxe-hibernate-google-app-engine","name":"hxe-hibernate-google-app-engine","kind":"sample","line":"A Java demo application that runs Spring and Hibernate against a SAP HANA database, including geospatial queries through the HANA Hibernate Spatial dialect, locally or on Google App Engine.","short":"Java demo running Spring and Hibernate against SAP HANA","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-integration-suite-partner-directory-accelerator-for-pipeline-concept":{"href":"/btp/artifacts/sap-samples-integration-suite-partner-directory-accelerator-for-pipeline-concept","name":"integration-suite-partner-directory-accelerator-for-pipeline-concept","kind":"desktop-app","line":"A Java Swing desktop tool that maintains the Partner Directory entries the Pipeline for Cloud Integration reads at runtime.","short":"Java Swing tool maintaining Partner Directory entries for the Pipeline","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-iq-to-hdl-migration":{"href":"/btp/artifacts/sap-samples-iq-to-hdl-migration","name":"iq-to-hdl-migration","kind":"sample","line":"A set of Python utilities for migrating an on-premise SAP IQ database's schema and data into SAP HANA Cloud, data lake Relational Engine.","short":"Python utilities migrating SAP IQ into HANA Cloud, data lake","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-joule-a2a-agent-toolkit":{"href":"/btp/artifacts/sap-samples-joule-a2a-agent-toolkit","name":"SAP-samples/joule-a2a-agent-toolkit","kind":"skill","line":"Four skills for building an agent that talks to SAP Joule over A2A and getting it onto Cloud Foundry — the agent itself, and the three CLIs the deployment goes through.","short":"Skills for building an A2A agent for Joule and deploying it to CF","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-joule-gui-automation-and-integration":{"href":"/abap/artifacts/sap-samples-joule-gui-automation-and-integration","name":"SAP-samples/joule-gui-automation-and-integration","kind":"sample","line":"Sample Joule capabilities that drive an SAP GUI for Windows session through the SAP Business Client's frontend actions, and patterns for feeding a GUI session's own state back into Joule.","short":"Joule capabilities driving SAP GUI sessions via Business Client","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-joule-studio-setup-terraform":{"href":"/btp/artifacts/sap-samples-joule-studio-setup-terraform","name":"joule-studio-setup-terraform","kind":"sample","line":"A Terraform template that provisions an SAP BTP subaccount preconfigured for Joule Studio, with identity provider trust, a Cloud Foundry space, subscriptions and role collections.","short":"Terraform template for a BTP subaccount set up for Joule Studio","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-liteinventorymanagement":{"href":"/cap/artifacts/sap-samples-liteinventorymanagement","name":"liteinventorymanagement","kind":"sample","line":"A CAP reference application for a lightweight local inventory system, covering goods receipt, goods issue and stock reporting by plant, running on PostgreSQL on SAP BTP, hyperscaler.","short":"CAP reference app for lightweight local inventory management","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-manage-apis-codejam":{"href":"/btp/artifacts/sap-samples-manage-apis-codejam","name":"SAP-samples/manage-apis-codejam","kind":"sample","line":"A SAP CodeJam that builds an API management scenario in SAP Integration Suite, including importing an API from an OpenAPI specification.","short":"CodeJam on API management in SAP Integration Suite","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-multi-cloud-html5-apps-samples":{"href":"/btp/artifacts/sap-samples-multi-cloud-html5-apps-samples","name":"SAP-samples/multi-cloud-html5-apps-samples","kind":"sample","line":"Example HTML5 apps on the SAP HTML5 Application Repository service, split between a standalone and a managed application router, across Cloud Foundry and Kyma.","short":"HTML5 apps on the HTML5 Application Repository across CF and Kyma","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-odata-dd-server":{"href":"/cap/artifacts/sap-samples-odata-dd-server","name":"SAP-samples/odata-dd-server","kind":"sample","line":"The CAP Node.js server behind the OData Deep Dive tutorial series on the SAP Tutorial Navigator, serving the OData service the tutorials work against rather than standing alone as a reference.","short":"CAP Node.js server behind the OData Deep Dive tutorials","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-odbc-driver-for-abap-examples":{"href":"/abap/artifacts/sap-samples-odbc-driver-for-abap-examples","name":"odbc-driver-for-abap-examples","kind":"sample","line":"SAP's example programs for the ODBC driver for ABAP, one subfolder per programming language, with the ABAP objects they use and a unixodbc configuration template for Unix clients.","short":"Example programs for the ODBC driver for ABAP in several languages","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-01"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-on-stack-partner-reference-extension":{"href":"/abap/artifacts/sap-samples-on-stack-partner-reference-extension","name":"SAP-samples/on-stack-partner-reference-extension","kind":"sample","line":"The 'Loyalty Hub' reference application: an on-stack RAP extension to the standard Manage Sales Orders app on SAP S/4HANA Cloud Public Edition, built to the clean-core rules a partner extension must follow.","short":"Loyalty Hub on-stack RAP extension for S/4HANA Cloud Public Edition","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-openui5-fhir-sample-app":{"href":"/ui5/artifacts/sap-samples-openui5-fhir-sample-app","name":"openui5-fhir-sample-app","kind":"sample","line":"A sample app showing the use of the openui5-fhir project to build a SAP Fiori look-and-feel UI5 application against services using the FHIR protocol.","short":"UI5 app built with openui5-fhir against FHIR services","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-partner-reference-application-extension":{"href":"/cap/artifacts/sap-samples-partner-reference-application-extension","name":"SAP-samples/partner-reference-application-extension","kind":"sample","line":"Extends the 'Poetry Slam Manager' partner reference application with a customer-specific catering management feature, without changing the shared core.","short":"Customer-specific catering extension to the Poetry Slam Manager","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-partner-reference-application":{"href":"/cap/artifacts/sap-samples-partner-reference-application","name":"SAP-samples/partner-reference-application","kind":"sample","line":"The 'Poetry Slam Manager' reference application: a golden path to becoming a multi-tenant SaaS provider on SAP BTP, delivered as a side-by-side extension to any SAP ERP.","short":"Poetry Slam Manager, a multi-tenant SaaS reference app on SAP BTP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-private-link-aws-services":{"href":"/btp/artifacts/sap-samples-private-link-aws-services","name":"private-link-aws-services","kind":"sample","line":"Spring Boot sample apps that show how the AWS SDK must be configured so its traffic goes over SAP Private Link Service.","short":"Spring Boot apps routing AWS SDK traffic over SAP Private Link","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-recap2026-cap-level-data-federation":{"href":"/cap/artifacts/sap-samples-recap2026-cap-level-data-federation","name":"SAP-samples/recap2026-cap-level-data-federation","kind":"sample","line":"A reCAP 2026 workshop that federates flight master data from one CAP application into another via service-level replication and HANA synonyms, then imports a Business Data Cloud data product.","short":"reCAP 2026 workshop on data federation between CAP applications","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-s4hana-avc-ui-extension-template":{"href":"/abap/artifacts/sap-samples-s4hana-avc-ui-extension-template","name":"s4hana-avc-ui-extension-template","kind":"sample","line":"A template project of code samples and a local mock runtime for writing a Variant Configuration (VC) UI Extension for SAP S/4HANA.","short":"Template and mock runtime for S/4HANA Variant Configuration UIs","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-s4hana-gcts-badi":{"href":"/abap/artifacts/sap-samples-s4hana-gcts-badi","name":"SAP-samples/s4hana-gcts-badi","kind":"sample","line":"A BAdI implementation that wires the ABAP transport organizer to gCTS, so releasing a transport task also commits it to Git and registers the release.","short":"BAdI wiring the transport organizer to gCTS on task release","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-s4hana-hana-audit-policies":{"href":"/btp/artifacts/sap-samples-s4hana-hana-audit-policies","name":"s4hana-hana-audit-policies","kind":"practice","line":"SQL templates for the SAP HANA audit policies of the database tenant an SAP S/4HANA system uses, in four sets from the mandatory default policies to scenario examples.","short":"SQL templates for HANA audit policies of an S/4HANA tenant","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-sap-bdc-explore-hyperscaler-data":{"href":"/btp/artifacts/sap-samples-sap-bdc-explore-hyperscaler-data","name":"SAP-samples/sap-bdc-explore-hyperscaler-data","kind":"doc-source","line":"Step-by-step guides for connecting AWS, Azure, Google Cloud and Databricks sources into SAP Datasphere inside SAP Business Data Cloud.","short":"Guides connecting hyperscaler sources into SAP Datasphere in BDC","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-01"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-sap-btp-ai-best-practices":{"href":"/btp/artifacts/sap-samples-sap-btp-ai-best-practices","name":"sap-btp-ai-best-practices","kind":"sample","line":"SAP's collection of sample implementations for AI-powered applications on SAP BTP, one directory per topic under best-practices, in TypeScript, Python, Java and CAP.","short":"Sample implementations for AI-powered applications on SAP BTP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-sap-concur-user-provisioning-service-apis":{"href":"/btp/artifacts/sap-samples-sap-concur-user-provisioning-service-apis","name":"sap-concur-user-provisioning-service-apis","kind":"sample","line":"A Postman collection whose requests demonstrate the SAP Concur User Provisioning Service APIs for creating users in bulk and assigning their approvers.","short":"Postman collection for the SAP Concur User Provisioning Service APIs","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-sap-devs-cli":{"href":"/btp/artifacts/sap-samples-sap-devs-cli","name":"SAP-samples/sap-devs-cli","kind":"cli","line":"A CLI that injects current SAP developer knowledge packs into an AI coding tool's context and wires up SAP's own MCP servers for it, shipped as a single binary through Homebrew, Scoop or GitHub Releases.","short":"CLI adding SAP developer knowledge and MCP servers to AI coding tools","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-sap-genai-hub-with-sap-hana-cloud-vector-engine":{"href":"/btp/artifacts/sap-samples-sap-genai-hub-with-sap-hana-cloud-vector-engine","name":"sap-genai-hub-with-sap-hana-cloud-vector-engine","kind":"sample","line":"A hands-on workshop that works through SAP HANA Cloud's vector engine, SAP Generative AI Hub and the Python LangChain framework in one Jupyter notebook.","short":"Workshop on HANA Cloud vector engine, Generative AI Hub and LangChain","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-sap-rpt-samples":{"href":"/btp/artifacts/sap-samples-sap-rpt-samples","name":"sap-rpt-samples","kind":"sample","line":"Bruno API collections and code samples for calling SAP's Relational Pretrained Transformer models on SAP AI Core for predictions on tabular data, one subdirectory per model.","short":"Bruno collections and code for SAP-RPT predictions on tabular data","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-slp-supplier-validation":{"href":"/cap/artifacts/sap-samples-slp-supplier-validation","name":"slp-supplier-validation","kind":"sample","line":"A CAP reference application for validating supplier registration data from Ariba Supplier Lifecycle Management against third-party providers before an erroneous record reaches SAP Master Data Governance or ERP.","short":"CAP reference app validating Ariba supplier registration data","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-smartrecruiters-ai-recruiting-custom-agent":{"href":"/btp/artifacts/sap-samples-smartrecruiters-ai-recruiting-custom-agent","name":"SAP-samples/smartrecruiters-ai-recruiting-custom-agent","kind":"sample","line":"A recruiting agent on SAP AI Core that reads SmartRecruiters pipeline data to flag stalled candidates, score disengagement risk and forecast hiring timelines from fixed funnel rates.","short":"Recruiting agent on SmartRecruiters data flagging stalled candidates","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-spfi-reference-application":{"href":"/btp/artifacts/sap-samples-spfi-reference-application","name":"SPFI-Reference-Application","kind":"sample","line":"A Spring Boot reference application that demonstrates how to implement the SPFI V2 REST API contract for tenant lifecycle management between a provisioning operator and a service provider.","short":"Spring Boot reference implementing the SPFI V2 tenant lifecycle API","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-tailspendmanagement":{"href":"/cap/artifacts/sap-samples-tailspendmanagement","name":"tailspendmanagement","kind":"sample","line":"A CAP reference application for tail spend management: preferred suppliers, region and commodity code mapping, automatic RFP event rules and SAP ERP demand.","short":"CAP reference application for tail spend management","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-teched2022-dt181":{"href":"/ui5/artifacts/sap-samples-teched2022-dt181","name":"SAP-samples/teched2022-DT181","kind":"sample","line":"A TechEd 2022 workshop that blends a custom SAPUI5 app with SAP Fiori Elements building blocks and controller extensions on one object page, starting from a CAP service in SAP Business Application Studio.","short":"TechEd 2022 workshop mixing SAPUI5 with Fiori elements building blocks","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-teched2022-xp260":{"href":"/btp/artifacts/sap-samples-teched2022-xp260","name":"teched2022-XP260","kind":"sample","line":"An SAP TechEd 2022 session on configuring SAP BTP services according to SAP's published security recommendations: a custom identity provider, multi-factor authentication, password policy and audit logs.","short":"TechEd 2022 session on SAP BTP security recommendations","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2022-xp281":{"href":"/btp/artifacts/sap-samples-teched2022-xp281","name":"SAP-samples/teched2022-XP281","kind":"sample","line":"An SAP TechEd 2022 workshop that combines SAP Alert Notification service for SAP BTP with SAP Automation Pilot for health checks and automated remediation on SAP HANA Cloud.","short":"TechEd 2022 workshop on Alert Notification and Automation Pilot","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2023-da263":{"href":"/btp/artifacts/sap-samples-teched2023-da263","name":"teched2023-DA263","kind":"sample","line":"An SAP TechEd 2023 session on SAP HANA features over the HANA Deployment Infrastructure: in-memory column tables, data tiering, spatial, the document store, graph and AutoML.","short":"TechEd 2023 session on SAP HANA features over HDI","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2023-dt187v":{"href":"/abap/artifacts/sap-samples-teched2023-dt187v","name":"teched2023-DT187v","kind":"sample","line":"An SAP TechEd 2023 hands-on tutorial that builds an analytical data model in ABAP Cloud, from measures and dimensions to a working analytical application.","short":"TechEd 2023 tutorial on an analytical data model in ABAP Cloud","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-teched2023-xp185v":{"href":"/btp/artifacts/sap-samples-teched2023-xp185v","name":"teched2023-XP185v","kind":"sample","line":"An SAP hands-on session that applies SAP's published BTP security recommendations to a live trial account, from multi-factor authentication to the audit log and administrative authorizations.","short":"Hands-on applying SAP BTP security recommendations to a trial account","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2024-in280":{"href":"/btp/artifacts/sap-samples-teched2024-in280","name":"teched2024-IN280","kind":"sample","line":"An SAP TechEd 2024 session that uses SAP Integration Suite as middleware between SAP IBP and non-SAP cloud services.","short":"TechEd 2024 session on Integration Suite between SAP IBP and others","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2024-xp280":{"href":"/btp/artifacts/sap-samples-teched2024-xp280","name":"SAP-samples/teched2024-XP280","kind":"sample","line":"An SAP TechEd 2024 session that creates an SAP BTP subaccount and sets up SAP Build Code and SAP Build Process Automation with the Terraform Provider for SAP BTP.","short":"TechEd 2024 session on Terraform setup of SAP Build services","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2025-ad162":{"href":"/abap/artifacts/sap-samples-teched2025-ad162","name":"teched2025-AD162","kind":"sample","line":"An SAP TechEd 2025 workshop on building an SAP Fiori app with ABAP Cloud and SAP Joule for Developers, ABAP AI capabilities.","short":"TechEd 2025 workshop on a Fiori app with ABAP Cloud and Joule","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-teched2025-ad163":{"href":"/abap/artifacts/sap-samples-teched2025-ad163","name":"SAP-samples/teched2025-AD163","kind":"sample","line":"A TechEd 2025 fusion-development workshop that models a Shopping Cart RAP business object graphically in SAP Build Code, then implements its transactional behaviour in ADT.","short":"TechEd 2025 workshop modelling a RAP object in SAP Build Code","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-teched2025-ad164":{"href":"/abap/artifacts/sap-samples-teched2025-ad164","name":"SAP-samples/teched2025-AD164","kind":"sample","line":"A TechEd 2025 workshop that rebuilds a classic ALV-based Manage Travels app as a RAP-based SAP Fiori app for developers new to ABAP Cloud, focused on backend development rather than Fiori UI.","short":"TechEd 2025 workshop rebuilding an ALV app as a RAP-based Fiori app","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-teched2025-ai160":{"href":"/btp/artifacts/sap-samples-teched2025-ai160","name":"SAP-samples/teched2025-AI160","kind":"sample","line":"A hands-on session that builds a purchase-order escalation agent in JavaScript or Java with the SAP Cloud SDK for AI and the Generative AI Hub in AI Foundation, calling the S/4HANA Purchase Order API.","short":"Hands-on building an AI agent with the SAP Cloud SDK for AI","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2025-ai161":{"href":"/btp/artifacts/sap-samples-teched2025-ai161","name":"teched2025-AI161","kind":"sample","line":"An SAP TechEd 2025 hands-on session that benchmarks, evaluates and optimises prompts across models with the generative AI hub capability in SAP AI Core.","short":"TechEd 2025 session on benchmarking and optimising prompts","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2025-ai163":{"href":"/btp/artifacts/sap-samples-teched2025-ai163","name":"teched2025-AI163","kind":"sample","line":"An SAP TechEd 2025 lab that builds a custom Joule Agent in Joule Studio to manage shipments in the SAP Business Networks Global Track and Trace (GTT) system.","short":"TechEd 2025 lab building a Joule Agent for Global Track and Trace","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-01"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2025-ai165":{"href":"/btp/artifacts/sap-samples-teched2025-ai165","name":"teched2025-AI165","kind":"sample","line":"An SAP TechEd 2025 hands-on that builds a custom agent in Joule Studio's Agent Builder and has it collaborate with an external partner agent over the Agent2Agent (A2A) protocol.","short":"TechEd 2025 hands-on on a Joule Studio agent collaborating over A2A","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-01"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2025-ca261":{"href":"/ui5/artifacts/sap-samples-teched2025-ca261","name":"SAP-samples/teched2025-CA261","kind":"sample","line":"A TechEd 2025 workshop that drives a Fiori elements app from a Figma design, through MCP servers from SAP and Figma read by an AI coding assistant, Cline in VS Code.","short":"TechEd 2025 workshop driving a Fiori elements app from Figma via MCP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-teched2025-ca262":{"href":"/ui5/artifacts/sap-samples-teched2025-ca262","name":"teched2025-CA262","kind":"sample","line":"An SAP TechEd 2025 hands-on that analyses and optimises front-end performance in a SAPUI5 application through its network traffic, the UI5 Builder and its OData requests.","short":"TechEd 2025 hands-on on SAPUI5 front-end performance","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-teched2025-cs261":{"href":"/btp/artifacts/sap-samples-teched2025-cs261","name":"teched2025-CS261","kind":"sample","line":"An SAP TechEd 2025 workshop that monitors a custom SAP BTP application with SAP Cloud ALM across health, integration and exception, real user and business process monitoring.","short":"TechEd 2025 workshop monitoring a BTP app with SAP Cloud ALM","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2025-da260":{"href":"/btp/artifacts/sap-samples-teched2025-da260","name":"SAP-samples/teched2025-DA260","kind":"sample","line":"A TechEd 2025 workshop covering SAP Business Data Cloud's connectivity options across SAP Analytics Cloud and SAP Datasphere, by replication, federation and push alike.","short":"TechEd 2025 workshop on SAP Business Data Cloud connectivity options","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2025-da261":{"href":"/btp/artifacts/sap-samples-teched2025-da261","name":"teched2025-DA261","kind":"sample","line":"An SAP TechEd 2025 hands-on workshop on SAP HANA Cloud's AI capabilities: outlier analysis, text embeddings with machine learning, and the knowledge graph engine.","short":"TechEd 2025 workshop on SAP HANA Cloud's AI capabilities","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2025-da264":{"href":"/btp/artifacts/sap-samples-teched2025-da264","name":"SAP-samples/teched2025-DA264","kind":"sample","line":"A TechEd 2025 jump-start that builds a business semantic model in SAP Datasphere and visualises it in SAP Analytics Cloud, end to end.","short":"TechEd 2025 jump-start on a semantic model in SAP Datasphere and SAC","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2025-da265":{"href":"/btp/artifacts/sap-samples-teched2025-da265","name":"teched2025-DA265","kind":"sample","line":"An SAP TechEd 2025 workshop on Just Ask, the engine behind Joule, asking models in SAP Analytics Cloud and SAP Business Data Cloud questions in natural language.","short":"TechEd 2025 workshop on Just Ask natural-language questions","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2025-da266":{"href":"/btp/artifacts/sap-samples-teched2025-da266","name":"teched2025-DA266","kind":"sample","line":"SAP TechEd 2025 session material for two SAP Databricks scenarios in SAP Business Data Cloud: cashflow forecasting and payment-delay prediction with SHAP explanations.","short":"TechEd 2025 material on two SAP Databricks scenarios in BDC","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2025-da267":{"href":"/btp/artifacts/sap-samples-teched2025-da267","name":"teched2025-DA267","kind":"sample","line":"An SAP TechEd 2025 workshop on seamless planning for xP&A in SAP Business Data Cloud, across SAP Analytics Cloud and SAP Datasphere.","short":"TechEd 2025 workshop on seamless planning for xP&A in BDC","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2025-dt260":{"href":"/abap/artifacts/sap-samples-teched2025-dt260","name":"SAP-samples/teched2025-DT260","kind":"sample","line":"A TechEd 2025 workshop that modernises a classic Flight Evaluation application to ABAP Cloud and governs the migration with the ABAP test cockpit, then generates a RAP-based SAP Fiori app on top.","short":"TechEd 2025 workshop modernising a classic app to ABAP Cloud","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-teched2025-dt261":{"href":"/abap/artifacts/sap-samples-teched2025-dt261","name":"SAP-samples/teched2025-DT261","kind":"sample","line":"A TechEd 2025 workshop that extends an SAP-delivered RAP business object with validations, a new field and a custom action, without touching the original.","short":"TechEd 2025 workshop extending an SAP-delivered RAP business object","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-teched2025-dt266":{"href":"/abap/artifacts/sap-samples-teched2025-dt266","name":"SAP-samples/teched2025-DT266","kind":"sample","line":"A TechEd 2025 hands-on workshop troubleshooting and optimising ABAP Cloud extensions in cloud ERP with the ABAP Debugger, Feed Reader, ABAP Cross Trace, ABAP Trace, SQL Trace and the Table Comparison Tool.","short":"TechEd 2025 workshop on troubleshooting ABAP Cloud extensions","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, abap"},"artifact:sap-samples-teched2025-in161":{"href":"/btp/artifacts/sap-samples-teched2025-in161","name":"teched2025-IN161","kind":"sample","line":"An SAP TechEd 2025 session on assessing and migrating SAP Process Orchestration integration scenarios to SAP Integration Suite.","short":"TechEd 2025 session on migrating SAP PO scenarios to Integration Suite","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2025-in162":{"href":"/btp/artifacts/sap-samples-teched2025-in162","name":"SAP-samples/teched2025-IN162","kind":"sample","line":"A TechEd 2025 hands-on workshop that pipes SAP S/4HANA Cloud sales-order and SAP Service Cloud support-case events through SAP Integration Suite, advanced event mesh into a HANA vector database, so a Joule skill can ground its answers in current business data.","short":"TechEd 2025 workshop piping business events into HANA vectors","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2025-in163":{"href":"/btp/artifacts/sap-samples-teched2025-in163","name":"SAP-samples/teched2025-IN163","kind":"sample","line":"A TechEd 2025 hands-on workshop implementing exactly-once, in-order delivery in SAP Integration Suite, with exclusive queues in Cloud Integration and with partitioned queues in advanced event mesh.","short":"TechEd 2025 workshop on exactly-once, in-order delivery","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2025-xp260":{"href":"/cap/artifacts/sap-samples-teched2025-xp260","name":"teched2025-XP260","kind":"sample","line":"An SAP TechEd 2025 workshop on embedding security into CAP applications on SAP BTP, worked through three of the OWASP Top 10 risks: broken access control, SQL injection and logging failures.","short":"TechEd 2025 workshop on OWASP Top 10 risks in CAP applications","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-teched2025-xp261":{"href":"/btp/artifacts/sap-samples-teched2025-xp261","name":"teched2025-XP261","kind":"sample","line":"An SAP TechEd on Tour hands-on session that integrates Cloud Identity Services with Microsoft Entra to provision users across cloud and on-premises SAP systems.","short":"Hands-on integrating Cloud Identity Services with Microsoft Entra","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2025-xp263":{"href":"/btp/artifacts/sap-samples-teched2025-xp263","name":"teched2025-XP263","kind":"sample","line":"An SAP TechEd 2025 hands-on session on SAP BTP's advanced administration tools: a Terraform account setup, then eight exercises on cost and usage for a global account administrator and a FinOps controller.","short":"TechEd 2025 hands-on on SAP BTP advanced administration tools","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2025-xp264":{"href":"/btp/artifacts/sap-samples-teched2025-xp264","name":"teched2025-XP264","kind":"sample","line":"An SAP TechEd 2025 session on Day-2 operations for SAP BTP, Kyma runtime: firefighter access, autoscaling, telemetry and on-premise connectivity on a pre-configured landscape.","short":"TechEd 2025 session on Day-2 operations for SAP BTP, Kyma runtime","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2025-xp265":{"href":"/btp/artifacts/sap-samples-teched2025-xp265","name":"teched2025-XP265","kind":"sample","line":"An SAP TechEd 2025 hands-on workshop on Day-2 operations for a CAP application on SAP BTP, Cloud Foundry Runtime: readiness checks, observability and scaling.","short":"TechEd 2025 workshop on Day-2 operations for a CAP app on CF","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-teched2025-xp267":{"href":"/btp/artifacts/sap-samples-teched2025-xp267","name":"teched2025-XP267","kind":"sample","line":"An SAP TechEd 2025 session that triggers SAP Automation Pilot remediation commands from alerts raised in SAP Cloud ALM, extended with an SAP AI Core assessment step.","short":"TechEd 2025 session on Automation Pilot fixes from Cloud ALM alerts","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-ui5-cap-event-app":{"href":"/cap/artifacts/sap-samples-ui5-cap-event-app","name":"SAP-samples/ui5-cap-event-app","kind":"sample","line":"An event-attendee registration app that pairs a freestyle SAPUI5 end-user UI and a Fiori elements admin UI over one Node.js CAP backend, built to show OData V4 draft handling end to end.","short":"Event registration app showing OData V4 draft with UI5 and CAP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-ui5-deployments":{"href":"/ui5/artifacts/sap-samples-ui5-deployments","name":"SAP-samples/ui5-deployments","kind":"sample","line":"A sample that deploys one UI5 freestyle application to SAP BTP, Cloud Foundry Environment through three approuter setups, standalone, managed and hybrid, each built into an MTA archive.","short":"UI5 app deployed to Cloud Foundry via three approuter setups","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-ui5-flexibility-easy-key-user-adaptation":{"href":"/ui5/artifacts/sap-samples-ui5-flexibility-easy-key-user-adaptation","name":"SAP-samples/ui5-flexibility-easy-key-user-adaptation","kind":"sample","line":"A UI5con 2025 hands-on tutorial enabling a Fiori elements application for SAPUI5 flexibility and building custom key user adaptations, from BTP ABAP environment deployment through no-code changes to manifest properties and OData annotations.","short":"UI5con 2025 tutorial on SAPUI5 flexibility and key user adaptations","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-07"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-ui5-mdc-json-tutorial":{"href":"/ui5/artifacts/sap-samples-ui5-mdc-json-tutorial","name":"ui5-mdc-json-tutorial","kind":"sample","line":"A unit-by-unit UI5 tutorial that builds a JSON-model app through the sap.ui.mdc metadata-driven controls: Table, FilterBar, value help, custom types and VariantManagement, plus Geomap and Chart.","short":"UI5 tutorial on sap.ui.mdc controls with a JSON model","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-ui5-p13n-tutorial":{"href":"/ui5/artifacts/sap-samples-ui5-p13n-tutorial","name":"ui5-p13n-tutorial","kind":"sample","line":"A ten-exercise UI5 tutorial that adds sap.m.p13n.Engine personalisation and sap.ui.fl.variants.VariantManagement to a custom table control: column selection, sorting, grouping, filtering and saved variants.","short":"UI5 tutorial adding p13n Engine personalisation to a custom table","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-ui5-typescript-control-library":{"href":"/ui5/artifacts/sap-samples-ui5-typescript-control-library","name":"SAP-samples/ui5-typescript-control-library","kind":"sample","line":"An example UI5 control library written in TypeScript, with its controls, themes, tests and the full tooling setup for TypeScript transpilation, build and linting.","short":"UI5 control library written in TypeScript with full tooling setup","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-ui5-typescript-helloworld":{"href":"/ui5/artifacts/sap-samples-ui5-typescript-helloworld","name":"SAP-samples/ui5-typescript-helloworld","kind":"sample","line":"A small UI5 application with a step-by-step guide to how its TypeScript setup is built from scratch, from the tsconfig and ui5-tooling-transpile wiring through to testing.","short":"Small UI5 app with a guide to its TypeScript setup from scratch","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-ui5-typescript-tutorial":{"href":"/ui5/artifacts/sap-samples-ui5-typescript-tutorial","name":"SAP-samples/ui5-typescript-tutorial","kind":"sample","line":"A roughly two-hour tutorial teaching TypeScript for UI5 application development by building a small weather-lookup app, from generator scaffolding through custom controls and testing.","short":"Tutorial on TypeScript for UI5 apps via a weather-lookup app","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-ui5-webcomponents-ngx-sample":{"href":"/ui5/artifacts/sap-samples-ui5-webcomponents-ngx-sample","name":"ui5-webcomponents-ngx-sample","kind":"sample","line":"SAP's demo application for @ui5/webcomponents-ngx, the UI5 Web Components bindings for Angular, powered by Fundamental Library Styles.","short":"Demo app for @ui5/webcomponents-ngx, UI5 Web Components for Angular","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-ui5con-2025-theming-workshop":{"href":"/ui5/artifacts/sap-samples-ui5con-2025-theming-workshop","name":"SAP-samples/ui5con-2025-theming-workshop","kind":"sample","line":"Starting points for a UI5con 2025 workshop that replace an app's theming logic with a parameterised skeleton CSS built on UI5's theming custom properties, CSS relative colours and container style queries.","short":"UI5con 2025 workshop on theming with UI5's CSS custom properties","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-ui5con-2026-a11y-hands-on":{"href":"/ui5/artifacts/sap-samples-ui5con-2026-a11y-hands-on","name":"ui5con-2026-a11y-hands-on","kind":"sample","line":"A UI5con 2026 hands-on workshop that fixes accessibility defects planted in a small UI5 TypeScript app, one exercise at a time, then sweeps the codebase with the ui5-accessibility Claude Code plugin.","short":"UI5con 2026 workshop fixing accessibility defects in a UI5 app","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-ui5con-2026-chrome-built-in-ai":{"href":"/ui5/artifacts/sap-samples-ui5con-2026-chrome-built-in-ai","name":"ui5con-2026-chrome-built-in-ai","kind":"sample","line":"A hands-on UI5 workshop that adds Chrome's on-device AI APIs to a small TypeScript app for triaging multilingual support tickets: language detection, summaries, structured extraction, translation and replies.","short":"UI5 workshop adding Chrome's on-device AI APIs to a TypeScript app","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-ui5con-2026-fiori-building-blocks":{"href":"/ui5/artifacts/sap-samples-ui5con-2026-fiori-building-blocks","name":"ui5con-2026-fiori-building-blocks","kind":"sample","line":"A hands-on session that builds a flexible travel dashboard by combining SAP Fiori elements templates, building blocks, extensions and freestyle SAPUI5 on a CAP back end.","short":"Session building a travel dashboard with Fiori elements and SAPUI5","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-ui5con-2026-fiori-mcp-server":{"href":"/ui5/artifacts/sap-samples-ui5con-2026-fiori-mcp-server","name":"SAP-samples/ui5con-2026-fiori-mcp-server","kind":"sample","line":"A UI5con hands-on tutorial creating and modifying a Fiori elements application with AI coding assistants, using Cline and Anthropic's Claude 4.5 Sonnet against the MCP servers developed by SAP for Fiori.","short":"UI5con tutorial on Fiori elements apps with AI assistants and MCP","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-ui5con-2026-ui5-linter-workshop":{"href":"/ui5/artifacts/sap-samples-ui5con-2026-ui5-linter-workshop","name":"ui5con-2026-ui5-linter-workshop","kind":"sample","line":"SAP's UI5con hands-on workshop that takes a legacy UI5 app, seeded with deprecated APIs and inline scripts, from its first UI5 linter report to a clean, CSP-compliant one.","short":"UI5con workshop taking a legacy UI5 app to a clean UI5 linter report","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-uxc-integration":{"href":"/ui5/artifacts/sap-samples-uxc-integration","name":"SAP-samples/uxc-integration","kind":"sample","line":"A sample that embeds UI5 Web Components such as the shell bar, side navigation and search inside an OpenUI5 application, built to SAP's UXC design standards, mixing both control sets in one app.","short":"UI5 Web Components shell bar and navigation inside an OpenUI5 app","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-05"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-wdf2025-fiori-innov-day-building-blocks":{"href":"/ui5/artifacts/sap-samples-wdf2025-fiori-innov-day-building-blocks","name":"wdf2025-fiori-innov-day-building-blocks","kind":"sample","line":"A SAP Fiori Innovation Day Walldorf hands-on session that builds a flexible travel dashboard from freestyle SAPUI5, SAP Fiori elements templates and building blocks.","short":"Fiori Innovation Day session building a travel dashboard","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-wdf2025-fiori-innov-day-mcp-server":{"href":"/ui5/artifacts/sap-samples-wdf2025-fiori-innov-day-mcp-server","name":"wdf2025-fiori-innov-day-mcp-server","kind":"sample","line":"Exercise material for an SAP Fiori Innovation Day hands-on session on building a Fiori elements app with an AI coding client wired to SAP's MCP servers.","short":"Fiori Innovation Day exercises on Fiori elements with MCP servers","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-02"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-samples-workzone-content-package-templates":{"href":"/btp/artifacts/sap-samples-workzone-content-package-templates","name":"workzone-content-package-templates","kind":"sample","line":"Project templates for SAP Work Zone content packages and the artefacts they contain, a card, a workflow, a workspace template, a workspace and a home page, plus the content-package project itself.","short":"Project templates for SAP Work Zone content packages","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-xsa-cap-migration-using-basextn":{"href":"/cap/artifacts/sap-samples-xsa-cap-migration-using-basextn","name":"xsa-cap-migration-using-basextn","kind":"sample","line":"A step-by-step guide to migrating an XS Advanced application's database artefacts to the Cloud Application Programming Model with the SAP HANA Application Migration extension.","short":"Guide to migrating XS Advanced database artefacts to CAP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-xsa-cap-migration":{"href":"/cap/artifacts/sap-samples-xsa-cap-migration","name":"xsa-cap-migration","kind":"sample","line":"A migration guide that moves the hana-shine-xsa demo application from the XS Advanced programming model to the Cloud Application Programming Model on SAP HANA Cloud.","short":"Guide migrating the hana-shine-xsa demo from XS Advanced to CAP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-xsc-cap-migration":{"href":"/cap/artifacts/sap-samples-xsc-cap-migration","name":"xsc-cap-migration","kind":"sample","line":"A step-by-step guide to migrating an XS Classic application's database artefacts, packaged as a delivery unit or a package, to the Cloud Application Programming Model.","short":"Guide to migrating XS Classic database artefacts to CAP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"sap official, cap"},"artifact:sap-samples-xsc-to-native-hana-cloud":{"href":"/btp/artifacts/sap-samples-xsc-to-native-hana-cloud","name":"xsc-to-native-hana-cloud","kind":"sample","line":"A guide to converting an XS Classic delivery unit or package into native SAP HANA Cloud database artefacts, with no service layer migration and no AI in the conversion.","short":"Guide converting XS Classic content to native SAP HANA Cloud artefacts","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"sap official, btp"},"artifact:sap-samples-xsc-xsa-migration":{"href":"/btp/artifacts/sap-samples-xsc-xsa-migration","name":"xsc-xsa-migration","kind":"sample","line":"A guide to migrating an XS Classic delivery unit or package to the XS Advanced programming model with the SAP HANA Application Migration Assistant, including its deprecated XSJS library.","short":"Guide to migrating XS Classic content to XS Advanced","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-styleguides-clean-abap":{"href":"/abap/artifacts/sap-styleguides-clean-abap","name":"Clean ABAP","kind":"practice","line":"SAP's open, versioned style guide for ABAP: the answer to how a piece of ABAP should be written, an agreement a team adopts rather than anything to install.","short":"Open, versioned style guide for ABAP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, abap"},"artifact:sap-terraform-provider-btp":{"href":"/btp/artifacts/sap-terraform-provider-btp","name":"Terraform Provider for SAP BTP","kind":"package","line":"The plugin that lets a Terraform or OpenTofu configuration manage the resources of an SAP BTP global account, from directories and subaccounts to entitlements, role collections and subscriptions.","short":"Terraform and OpenTofu provider for SAP BTP global accounts","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-theming-base-content":{"href":"/ui5/artifacts/sap-theming-base-content","name":"@sap-theming/theming-base-content","kind":"package","line":"The colour, font and metric definitions of the SAP themes, published as Less, CSS variable, SASS and JSON parameter sets for an HTML framework to read.","short":"Colour, font and metric definitions of the SAP themes","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"sap official, ui5"},"actor:andreas-roessler":{"href":"/actors/andreas-roessler","name":"Andreas Roessler","kind":"person","glyph":{"type":"avatar","name":"Andreas Roessler","src":"/avatars/andreas-roessler.png"},"line":"maintains 1 entry, contributed to 1 entry"},"actor:theming-technical-user":{"href":"/actors/theming-technical-user","name":"theming-technical-user","kind":"person","glyph":{"type":"avatar","name":"theming-technical-user","src":"/avatars/theming-technical-user.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:sap-tutorials-content":{"href":"/btp/artifacts/sap-tutorials-content","name":"sap-tutorials-content","kind":"skill","line":"An agent skill that maps the public developers.sap.com content API: the catalogue, the navigation, a tutorial's HTML or JSON, and full-text search, all anonymous and read-only.","short":"Agent skill mapping the developers.sap.com content API","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, btp"},"artifact:sap-ui-theme-designer-plugins":{"href":"/ui5/artifacts/sap-ui-theme-designer-plugins","name":"SAP/ui-theme-designer-plugins-for-coding-agents","kind":"skill","line":"One plugin that teaches a coding agent the SAP Design System, Fiori design tokens, and which theming parameters a given control actually reads, installed into Claude Code or GitHub Copilot.","short":"Agent plugin on the SAP Design System and theming parameters","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-ui5-cli":{"href":"/ui5/artifacts/sap-ui5-cli","name":"@ui5/cli","kind":"cli","line":"The UI5 Tooling command line for project setup, the local dev server and the build, which defines a UI5 project's shape and its two extension points, custom middleware and custom tasks.","short":"UI5 Tooling command line for project setup, dev server and build","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-ux-cap-config-writer":{"href":"/cap/artifacts/sap-ux-cap-config-writer","name":"@sap-ux/cap-config-writer","kind":"package","line":"SAP's writer module for changing a CAP project's configuration from code, so a tool can add a UI5 app to a project that already exists, returning a mem-fs editor whose commit writes the changes.","short":"Writer module for changing a CAP project's configuration from code","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"actor:devinea":{"href":"/actors/devinea","name":"Austin Devine","kind":"person","glyph":{"type":"avatar","name":"Austin Devine","src":"/avatars/devinea.png"},"line":"maintains 7 entries, contributed to 25 entries"},"artifact:sap-ux-cds-annotation-parser":{"href":"/cap/artifacts/sap-ux-cds-annotation-parser","name":"@sap-ux/cds-annotation-parser","kind":"package","line":"Parses annotations out of CDS source, so tooling can read what a model says about its UI without compiling it.","short":"Parser for annotations in CDS source","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-ux-cds-compiler-facade":{"href":"/cap/artifacts/sap-ux-cds-compiler-facade","name":"@sap/ux-cds-compiler-facade","kind":"package","line":"Wraps the CAP CDS compiler behind one set of APIs for annotation handling, so tooling reads a model without tracking which compiler version is installed.","short":"Wrapper around the CDS compiler for annotation handling","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:sap-ux-cds-odata-annotation-converter":{"href":"/cap/artifacts/sap-ux-cds-odata-annotation-converter","name":"@sap-ux/cds-odata-annotation-converter","kind":"package","line":"Converts CDS annotations into their OData form, which is the translation Fiori tooling needs to reason about a service the way a client sees it.","short":"Converter from CDS annotations to their OData form","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-ux-cds-odata-language-server-extension":{"href":"/cap/artifacts/sap-ux-cds-odata-language-server-extension","name":"@sap/ux-cds-odata-language-server-extension","kind":"ide-extension","line":"Adds the OData annotation features to @sap/vscode-cds, the CDS plug-in for Visual Studio Code: completion, micro-snippets, diagnostics, vocabulary documentation, Go to Definition and an i18n check inside a .cds file.","short":"OData annotation features for the @sap/vscode-cds extension","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"sap official, cap"},"artifact:sap-ux-create":{"href":"/ui5/artifacts/sap-ux-create","name":"@sap-ux/create","kind":"cli","line":"SAP Fiori tools as a command: npx @sap-ux/create changes the features of a Fiori project that already exists, through its add, generate, convert, remove, update and change subcommands.","short":"Command line for changing features of an existing Fiori project","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-ux-eslint-plugin-fiori-tools":{"href":"/cap/artifacts/sap-ux-eslint-plugin-fiori-tools","name":"@sap-ux/eslint-plugin-fiori-tools","kind":"build-tool","line":"ESLint rules from the Fiori tools team, aimed at the parts of a project their generators produce.","short":"ESLint rules for projects the Fiori tools generators produce","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-ux-fe-fpm-writer":{"href":"/ui5/artifacts/sap-ux-fe-fpm-writer","name":"@sap-ux/fe-fpm-writer","kind":"package","line":"A library that writes flexible programming model elements, such as a custom page wired into the app's routing, into a Fiori elements application for OData v4 from Node code.","short":"Writer of flexible programming model elements into Fiori elements apps","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-ux-fe-mockserver-plugin-cds":{"href":"/cap/artifacts/sap-ux-fe-mockserver-plugin-cds","name":"@sap-ux/fe-mockserver-plugin-cds","kind":"package","line":"Lets the Fiori Elements mock server take a CDS file as its metadata source, so a UI is developed against the real model before a service exists.","short":"Fiori Elements mock server plugin taking a CDS file as metadata","chip":{"label":"Maintenance","tier":"poor","evidence":"23 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:sap-ux-fiori-annotation-api":{"href":"/cap/artifacts/sap-ux-fiori-annotation-api","name":"@sap-ux/fiori-annotation-api","kind":"package","line":"The programmatic API Fiori tooling uses to read and write annotations on a project, rather than editing the files as text.","short":"Programmatic API for reading and writing project annotations","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-ux-fiori-docs-embeddings":{"href":"/cap/artifacts/sap-ux-fiori-docs-embeddings","name":"@sap-ux/fiori-docs-embeddings","kind":"package","line":"Fiori documentation indexed as embeddings, which is what makes it searchable by something other than a person scrolling it.","short":"Fiori documentation indexed as embeddings","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"sap official, cap"},"artifact:sap-ux-fiori-generator-shared":{"href":"/cap/artifacts/sap-ux-fiori-generator-shared","name":"@sap-ux/fiori-generator-shared","kind":"package","line":"The shared functions and types the Fiori generators are built from; a dependency of theirs rather than a generator itself.","short":"Shared functions and types of the Fiori generators","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-ux-fiori-mcp-server":{"href":"/ui5/artifacts/sap-ux-fiori-mcp-server","name":"@sap-ux/fiori-mcp-server","kind":"mcp-server","line":"SAP's Fiori MCP server, run as fiori-mcp, letting a coding assistant create and edit Fiori applications directly rather than describing the steps.","short":"MCP server for creating and editing Fiori applications","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-ux-i18n":{"href":"/ui5/artifacts/sap-ux-i18n","name":"@sap-ux/i18n","kind":"package","line":"A library that reads and writes the i18n bundles of a UI5 or CAP project from Node code, the i18n.properties file of a UI5 app and the i18n folder of a CAP project alike.","short":"Reader and writer for i18n bundles of UI5 or CAP projects","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-ux-odata-service-writer":{"href":"/ui5/artifacts/sap-ux-odata-service-writer","name":"@sap-ux/odata-service-writer","kind":"package","line":"A library that adds an OData service to a UI5 project that already exists, writing the file updates from a config object naming the service url, its OData version and a destination.","short":"Writer that adds an OData service to an existing UI5 project","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-ux-odata-vocabularies":{"href":"/ui5/artifacts/sap-ux-odata-vocabularies","name":"@sap-ux/odata-vocabularies","kind":"package","line":"Carries the OASIS and SAP OData vocabularies as a package, with a VocabularyService for asking which terms exist, where they apply and what their types and properties are.","short":"OASIS and SAP OData vocabularies with a VocabularyService","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-ux-telemetry":{"href":"/cap/artifacts/sap-ux-telemetry","name":"@sap-ux/telemetry","kind":"package","line":"Library for sending usage telemetry data","short":"Library for sending usage telemetry data","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-ux-ui5-application-writer":{"href":"/ui5/artifacts/sap-ux-ui5-application-writer","name":"@sap-ux/ui5-application-writer","kind":"package","line":"A library that writes the base structure of a UI5 project from Node code, out of an app id, title and description, returning a mem-fs editor so a generator needs no template engine of its own.","short":"Writer of the base structure of a UI5 project from Node code","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-vscode-cds":{"href":"/cap/artifacts/sap-vscode-cds","name":"@sap/vscode-cds","kind":"ide-extension","line":"SAP CDS language support for Visual Studio Code and Business Application Studio, published as an npm library.","short":"CDS language support for VS Code and Business Application Studio","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, cap"},"artifact:sap-vscode-ui5-language-assistant":{"href":"/ui5/artifacts/sap-vscode-ui5-language-assistant","name":"vscode-ui5-language-assistant","kind":"ide-extension","line":"SAP's VS Code extension for SAPUI5 and OpenUI5: completion, validation, hover tooltips, go to definition, quick fix and formatting for XML views, and completion and validation for manifest.json.","short":"VS Code extension for SAPUI5 and OpenUI5 XML views and manifest","chip":{"label":"Maintenance","tier":"fair","evidence":"10 months since release"},"ai":true,"meta":"sap official, ui5"},"artifact:sap-xssec":{"href":"/cap/artifacts/sap-xssec","name":"@sap/xssec","kind":"package","line":"Token validation and security context for XSUAA and IAS.","short":"Token validation and security context for XSUAA and IAS","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:sap2moose-sap2moose":{"href":"/abap/artifacts/sap2moose-sap2moose","name":"SAP2Moose","kind":"app","line":"An ABAP program that extracts model data from a system as a SOMIX model, for Moose2Model to draw as a dependency diagram.","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"independent, abap"},"actor:sap2moose":{"href":"/actors/sap2moose","name":"SAP2Moose","kind":"org","glyph":{"type":"avatar","name":"SAP2Moose","ring":"independent","src":"/avatars/sap2moose.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:sapmentors-cds-azure-ad":{"href":"/cap/artifacts/sapmentors-cds-azure-ad","name":"cds-azure-ad","kind":"cds-plugin","line":"Azure AD and Azure AD B2C as a custom-defined authentication strategy for CAP through passport-azure-ad, implementing the hook capire documents so the application does not validate tokens itself.","short":"Azure AD and Azure AD B2C authentication strategy for CAP","chip":{"label":"Maintenance","tier":"poor","evidence":"57 months since release"},"ai":true,"meta":"independent, cap"},"actor:sapmentors":{"href":"/actors/sapmentors","name":"SAP Mentors & Friends","kind":"org","glyph":{"type":"avatar","name":"SAP Mentors & Friends","ring":"independent","src":"/avatars/sapmentors.png"},"line":"maintains 3 entries","meta":"independent"},"artifact:sapmentors-cds-pg":{"href":"/cap/artifacts/sapmentors-cds-pg","name":"cds-pg","kind":"cds-plugin","line":"A PostgreSQL adapter for SAP CDS, built by the SAP Mentors community, which gave CAP a Postgres persistence option years before @cap-js/postgres shipped.","short":"PostgreSQL adapter for SAP CDS from the SAP Mentors community","chip":{"label":"Maintenance","tier":"poor","evidence":"43 months since release"},"ai":true,"meta":"independent, cap"},"actor:vobu":{"href":"/actors/vobu","name":"Volker Buzek","kind":"person","glyph":{"type":"avatar","name":"Volker Buzek","src":"/avatars/vobu.png"},"line":"maintains 7 entries, wrote 2 posts, contributed to 53 entries"},"artifact:sapmentors-cds-scp-api":{"href":"/cap/artifacts/sapmentors-cds-scp-api","name":"@sapmentors/cds-scp-api","kind":"package","line":"A Node module for CAP that calls an external API through a destination instead of a hardcoded endpoint, taking its address, credentials and on-premise tunnel from the SAP Destination and Connectivity services.","short":"Node module for CAP calling external APIs through a destination","chip":{"label":"Maintenance","tier":"poor","evidence":"68 months since release"},"ai":true,"meta":"community org, cap"},"artifact:saposs-vscode-mta-tools":{"href":"/cap/artifacts/saposs-vscode-mta-tools","name":"@sap_oss/vscode-mta-tools","kind":"ide-extension","line":"VS Code Multi-Target Application tools","short":"VS Code Multi-Target Application tools","chip":{"label":"Maintenance","tier":"poor","evidence":"41 months since release"},"ai":true,"meta":"sap official, cap"},"artifact:saptarishi-cds-plugin-llm":{"href":"/cap/artifacts/saptarishi-cds-plugin-llm","name":"@saptarishi/cds-plugin-llm","kind":"cds-plugin","line":"A CAP service kind that puts eleven model providers behind one chat, stream, embed and batch interface, so which backend a service calls is a profile in package.json rather than a change to the handler.","short":"CAP service kind putting eleven model providers behind one API","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, cap"},"actor:kalyanjanumpally":{"href":"/actors/kalyanjanumpally","name":"kalyanjanumpally","kind":"person","glyph":{"type":"avatar","name":"kalyanjanumpally","src":"/avatars/kalyanjanumpally.png"},"line":"maintains 2 entries"},"artifact:saptarishi-cds-plugin-vector-hana":{"href":"/cap/artifacts/saptarishi-cds-plugin-vector-hana","name":"@saptarishi/cds-plugin-vector-hana","kind":"cds-plugin","line":"Vector storage and similarity search on SAP HANA from CAP, packaged as a plugin so the embedding column and the query are modelled rather than hand-written.","short":"Vector storage and similarity search on SAP HANA from CAP","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, cap"},"artifact:saptools-bruno":{"href":"/btp/artifacts/saptools-bruno","name":"@saptools/bruno","kind":"cli","line":"A command line that runs Bruno collections against XSUAA-protected apps on Cloud Foundry, fetching the app's token and writing it into the selected environment file before each run.","short":"Runner for Bruno collections against XSUAA-protected CF apps","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, btp"},"artifact:saptools-cf-debugger":{"href":"/btp/artifacts/saptools-cf-debugger","name":"@saptools/cf-debugger","kind":"cli","line":"Opens a verified Node.js inspector tunnel over cf ssh to an app on SAP BTP Cloud Foundry from one command, with its own local port for each concurrent session.","short":"Node.js inspector tunnel over cf ssh to Cloud Foundry apps","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, btp"},"artifact:saptools-cf-explorer":{"href":"/btp/artifacts/saptools-cf-explorer","name":"@saptools/cf-explorer","kind":"cli","line":"Searches the files of an app deployed to SAP BTP Cloud Foundry over cf ssh, finding the app root, grepping the deployed code and turning matches into file and line candidates.","short":"File search in apps deployed to SAP BTP Cloud Foundry over cf ssh","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, btp"},"artifact:saptools-cf-function-trace":{"href":"/btp/artifacts/saptools-cf-function-trace","name":"@saptools/cf-function-trace","kind":"cli","line":"Records how one JavaScript function's state changes, step by step, in a Node.js process running locally or on SAP BTP Cloud Foundry, and stores the run as a redacted timeline that can be queried later.","short":"Step-by-step state recorder for one JavaScript function in Node.js","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, btp"},"artifact:saptools-cf-hana":{"href":"/btp/artifacts/saptools-cf-hana","name":"@saptools/cf-hana","kind":"cli","line":"A command line and TypeScript API that runs SQL against the SAP HANA Cloud database bound to a Cloud Foundry app, addressed by a region/org/space/app selector.","short":"SQL runner against the SAP HANA Cloud database bound to a CF app","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, btp"},"artifact:saptools-cf-inspector":{"href":"/btp/artifacts/saptools-cf-inspector","name":"@saptools/cf-inspector","kind":"cli","line":"Sets breakpoints, captures variable snapshots and evaluates expressions on a remote Node.js process over the Chrome DevTools Protocol from the shell, with no IDE attached.","short":"Shell debugger for remote Node.js over the Chrome DevTools Protocol","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"independent, btp"},"artifact:saptools-cf-live-trace":{"href":"/btp/artifacts/saptools-cf-live-trace","name":"@saptools/cf-live-trace","kind":"cli","line":"Injects a bounded HTTP trace hook into a running Node.js app on SAP BTP Cloud Foundry and streams each request and response to the terminal as JSON.","short":"HTTP trace hook streaming a running CF Node.js app's traffic","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, btp"},"artifact:saptools-cf-logs":{"href":"/btp/artifacts/saptools-cf-logs","name":"@saptools/cf-logs","kind":"cli","line":"A command line and typed Node.js library that fetches and streams the logs of one Cloud Foundry app and parses them into structured rows.","short":"Log fetcher and parser for one Cloud Foundry app","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, btp"},"artifact:saptools-cf-metrics":{"href":"/btp/artifacts/saptools-cf-metrics","name":"@saptools/cf-metrics","kind":"cli","line":"A read-only command line that queries the container and OpenTelemetry metrics SAP Cloud Logging has ingested for Cloud Foundry apps, as history over a time range, a ranking across apps or a live watch.","short":"Read-only query tool for metrics in SAP Cloud Logging","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"independent, btp"},"artifact:saptools-cf-otel":{"href":"/btp/artifacts/saptools-cf-otel","name":"@saptools/cf-otel","kind":"cli","line":"A read-only command line that queries the OpenTelemetry trace spans SAP Cloud Logging has already ingested and ranks the spans of a trace by self-time.","short":"Read-only query tool for OpenTelemetry spans in SAP Cloud Logging","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"independent, btp"},"artifact:saptools-cf-request-runner":{"href":"/cap/artifacts/saptools-cf-request-runner","name":"@saptools/cf-request-runner","kind":"cli","line":"Discovers every API endpoint of a CAP service already deployed to Cloud Foundry by walking its service documents, $metadata and endpoints catalog — falling back to container SSH to parse .cds files.","short":"Endpoint discovery for CAP services deployed to Cloud Foundry","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, cap"},"artifact:saptools-cf-sync":{"href":"/btp/artifacts/saptools-cf-sync","name":"@saptools/cf-sync","kind":"cli","line":"A command line and Node.js API that logs into Cloud Foundry once, walks every region, org, space and app the user can reach, and caches that topology as JSON for the other @saptools packages to read.","short":"Cloud Foundry topology cache for the other @saptools packages","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, btp"},"artifact:saptools-cf-tail":{"href":"/btp/artifacts/saptools-cf-tail","name":"@saptools/cf-tail","kind":"cli","line":"A command line that tails every started app in a Cloud Foundry space at once and merges their logs into one timeline by timestamp, with filters by level, tenant, router status and time window.","short":"Merged log tail of every started app in a Cloud Foundry space","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, btp"},"artifact:saptools-cf-xsuaa":{"href":"/btp/artifacts/saptools-cf-xsuaa","name":"@saptools/cf-xsuaa","kind":"cli","line":"A command line and Node.js API that reads the XSUAA binding of a Cloud Foundry app and prints an OAuth2 client_credentials token for it, cached until it expires.","short":"OAuth2 token fetcher for a Cloud Foundry app's XSUAA binding","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, btp"},"artifact:saptools-hana-lens":{"href":"/cap/artifacts/saptools-hana-lens","name":"@saptools/hana-lens","kind":"cli","line":"Compiles every CAP package in a workspace into one minified CSN cache, so \"where is this entity and what columns does it have\" is a query rather than a monorepo load.","short":"Workspace-wide CSN cache for querying CAP entities and columns","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"independent, cap"},"artifact:saptools-service-flow":{"href":"/cap/artifacts/saptools-service-flow","name":"@saptools/service-flow","kind":"cli","line":"Traces one CAP operation end to end across several repositories without running anything — handlers, helper packages, local database access, remote OData calls, external HTTP and async channels.","short":"Static end-to-end tracer of one CAP operation across repositories","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, cap"},"artifact:saptools-sqltools":{"href":"/btp/artifacts/saptools-sqltools","name":"@saptools/sqltools","kind":"cli","line":"A command line that turns the HANA service binding of a Cloud Foundry app into a connection for the SQLTools extension in VS Code, written to the workspace's .vscode/settings.json.","short":"SQLTools connection from a Cloud Foundry app's HANA binding","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, btp"},"artifact:satiroglu-kaev":{"href":"/ui5/artifacts/satiroglu-kaev","name":"@satiroglu/kaev","kind":"cli","line":"A command line that runs rule-based checks over a SAPUI5 or OpenUI5 project, reporting each finding with a rule id, a category, a severity, a confidence and the file it sits in.","short":"Rule-based checker for SAPUI5 and OpenUI5 projects","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"independent, ui5"},"actor:satiroglu":{"href":"/actors/satiroglu","name":"aesatiroglu","kind":"person","glyph":{"type":"avatar","name":"aesatiroglu","src":"/avatars/satiroglu.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:saurabhvc-abapdocmcp":{"href":"/abap/artifacts/saurabhvc-abapdocmcp","name":"ABAPDocMCP","kind":"mcp-server","line":"Turns a transport request into a WRICEF technical specification: reads the transport's objects and source over ADT and writes a structured Markdown document with an object-relationship diagram.","short":"MCP server turning a transport request into a WRICEF specification","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-02"},"ai":true,"meta":"independent, abap"},"actor:saurabhvc":{"href":"/actors/saurabhvc","name":"Saurabh Chikate","kind":"person","glyph":{"type":"avatar","name":"Saurabh Chikate","src":"/avatars/saurabhvc.png"},"line":"maintains 1 entry"},"artifact:sbcgua-abap-gui-boilerplate":{"href":"/abap/artifacts/sbcgua-abap-gui-boilerplate","name":"abap_gui_boilerplate","kind":"sample","line":"A template for ABAP applications with an HTML UI, built on GUI classes copied from abapGit into a contrib package of its own.","short":"Template for ABAP applications with an HTML UI","chip":{"label":"Repository","tier":"poor","evidence":"archived on GitHub"},"ai":true,"meta":"independent, abap"},"actor:sbcgua":{"href":"/actors/sbcgua","name":"Alexander Tsybulsky","kind":"person","glyph":{"type":"avatar","name":"Alexander Tsybulsky","src":"/avatars/sbcgua.png"},"line":"maintains 5 entries, contributed to 11 entries"},"artifact:sbcgua-abap-mustache":{"href":"/abap/artifacts/sbcgua-abap-mustache","name":"abap_mustache","kind":"package","line":"A Mustache template engine for ABAP, rendering logic-less templates into HTML or any other text from a structure or table of any type, with partials and a separate Steampunk-compatible branch.","short":"Mustache template engine for ABAP","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-06"},"ai":true,"meta":"independent, abap"},"artifact:sbcgua-ajson":{"href":"/abap/artifacts/sbcgua-ajson","name":"ajson","kind":"package","line":"A JSON parser and serialiser for ABAP that parses into a flexible, unstructured node tree rather than a fixed target structure, converting to one only when asked through to_abap.","short":"JSON parser and serialiser for ABAP with a node tree","chip":{"label":"Maintenance","tier":"poor","evidence":"95 months since release"},"ai":true,"meta":"independent, abap"},"artifact:sbcgua-mockup-loader":{"href":"/abap/artifacts/sbcgua-mockup-loader","name":"mockup_loader","kind":"package","line":"A tool that loads ABAP unit test data prepared in Excel as TAB-delimited text into ABAP structures and tables, and generates interface stubs that return that mock data.","short":"Loader of Excel-prepared ABAP unit test data, with stub generation","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"independent, abap"},"artifact:sbcgua-text2tab":{"href":"/abap/artifacts/sbcgua-text2tab","name":"sbcgua/text2tab","kind":"package","line":"A library that parses TAB-delimited text into an internal table of any flat ABAP structure, with non-strict, header and type-less modes, and serialises tables back to text in configurable formats.","short":"Parser of TAB-delimited text into ABAP internal tables and back","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"independent, abap"},"artifact:schwarzit-sap-usi-authority-check":{"href":"/abap/artifacts/schwarzit-sap-usi-authority-check","name":"sap-usi-authority-check","kind":"package","line":"A helper class, /USI/CL_AUTH, that checks whether the current user is authorized for the running transaction, mandatory for SchwarzIT's USI reports under their internal development guidelines.","short":"Authority check helper class used across SchwarzIT's USI reports","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-01"},"ai":true,"meta":"independent, abap"},"actor:schwarzit":{"href":"/actors/schwarzit","name":"Schwarz IT","kind":"org","glyph":{"type":"avatar","name":"Schwarz IT","ring":"independent","src":"/avatars/schwarzit.png"},"line":"maintains 3 entries","meta":"independent"},"artifact:schwarzit-sap-usi-exception":{"href":"/abap/artifacts/schwarzit-sap-usi-exception","name":"sap-usi-exception","kind":"package","line":"A shared root exception class and text getter API used across SchwarzIT's USI ABAP developments, converting an exception's text into a common format such as BAPIRET2 or SYMSG.","short":"Shared root exception class and text getter for USI developments","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-01"},"ai":true,"meta":"independent, abap"},"artifact:schwarzit-sap-usi-logging-api":{"href":"/abap/artifacts/schwarzit-sap-usi-logging-api","name":"sap-usi-logging-api","kind":"package","line":"An object-oriented encapsulation around SAP's Application Log (transaction SLG1), controlled by customizing, with attachable data containers that SLG1 shows behind a detail button.","short":"Object-oriented wrapper around SAP's Application Log (SLG1)","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-03"},"ai":true,"meta":"independent, abap"},"artifact:se38-abapfaker":{"href":"/abap/artifacts/se38-abapfaker","name":"abapFaker","kind":"package","line":"Generates fake data in ABAP, for bootstrapping a database, creating XML documents, stress-testing a persistence layer or anonymising data taken from a production service.","short":"Fake data generator for ABAP","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2022-05"},"ai":true,"meta":"independent, abap"},"actor:se38":{"href":"/actors/se38","name":"Uwe Fetzer","kind":"person","glyph":{"type":"avatar","name":"Uwe Fetzer","src":"/avatars/se38.png"},"line":"maintains 1 entry, contributed to 5 entries"},"artifact:sebsst-cap-js-geoloc-plugin":{"href":"/cap/artifacts/sebsst-cap-js-geoloc-plugin","name":"cap-js-geoloc-plugin","kind":"cds-plugin","line":"A CAP plugin for geocoding, address correction and route calculation, driven by three annotations on the model, with the geocoder and router chosen in configuration from providers such as OSRM and Nominatim.","short":"Annotation-driven geocoding, address correction and routing for CAP","chip":{"label":"Maintenance","tier":"fair","evidence":"12 months since release"},"ai":true,"meta":"independent, cap"},"artifact:secondsky-sap-skills":{"href":"/btp/artifacts/secondsky-sap-skills","name":"secondsky/sap-skills","kind":"skill","line":"Forty SAP development plugins installed through the skills command line or the Claude Code and Codex marketplaces, with a record per plugin of what its claims were checked against.","short":"Forty SAP development plugins for coding agents","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, btp"},"actor:secondsky":{"href":"/actors/secondsky","name":"Eddie","kind":"person","glyph":{"type":"avatar","name":"Eddie","src":"/avatars/secondsky.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:shahid-la-cds-db-nlquery-mcp":{"href":"/cap/artifacts/shahid-la-cds-db-nlquery-mcp","name":"@shahid.la/cds-db-nlquery-mcp","kind":"mcp-server","line":"MCP server that answers plain-English questions against the entities in db/schema.cds — it discovers the schema, generates CQN-backed SQL with real joins, and returns rows.","short":"MCP server answering plain-English questions against a CDS schema","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"independent, cap"},"actor:shahidla":{"href":"/actors/shahidla","name":"shahidla","kind":"person","glyph":{"type":"avatar","name":"shahidla","src":"/avatars/shahidla.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:silvius1996-claude-sap-kit":{"href":"/abap/artifacts/silvius1996-claude-sap-kit","name":"claude-sap-kit","kind":"skill","line":"A Claude Code plugin of three skills that extends arc-1 with five Custom_* tools for an on-premise ABAP system: running a report and reading its ALV as JSON, previewing a NAST message as PDF, and reading, writing and replacing SmartForms as XML.","short":"Claude Code plugin adding Custom_* tools to arc-1","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:silvius1996":{"href":"/actors/silvius1996","name":"silvius1996","kind":"person","glyph":{"type":"avatar","name":"silvius1996","src":"/avatars/silvius1996.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:skybuffer-ai-mcp-server":{"href":"/abap/artifacts/skybuffer-ai-mcp-server","name":"Skybuffer AI MCP server","kind":"mcp-server","line":"An ABAP add-on that serves SAP business data, transactions and development context as MCP tools from an ICF node inside SAP ECC and S/4HANA, each call running as the signed-in user under PFCG authorization checks.","short":"ABAP add-on serving business data and transactions as MCP tools","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"independent, abap"},"artifact:sleibach-cap-collaborative-draft":{"href":"/cap/artifacts/sleibach-cap-collaborative-draft","name":"cap-collaborative-draft","kind":"cds-plugin","line":"A cds-plugin that gives a CAP Node.js service the OData contract, tables and handlers Fiori elements needs for collaborative draft, so a second user joins an open draft instead of meeting HTTP 423.","short":"Collaborative draft support for CAP Node.js services","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"independent, cap"},"actor:sleibach":{"href":"/actors/sleibach","name":"Sören Leibach","kind":"person","glyph":{"type":"avatar","name":"Sören Leibach","ring":"independent","src":"/avatars/sleibach.png"},"line":"maintains 6 entries, wrote 1 post, contributed to 5 entries","meta":"independent"},"artifact:sleibach-cap-companion":{"href":"/cap/artifacts/sleibach-cap-companion","name":"cap-companion","kind":"cds-plugin","line":"Serves a playback-only SAP Companion (Help4) workarea from a CAP service, so a Fiori application shows tours and in-app help without Enable Now Manager.","short":"Playback-only SAP Companion (Help4) workarea served from CAP","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, cap"},"artifact:sleibach-cap-mcp-plugin":{"href":"/cap/artifacts/sleibach-cap-mcp-plugin","name":"cap-mcp-plugin","kind":"cds-plugin","line":"Generates an MCP server from a CDS model: annotated entities become MCP resources, functions and actions become tools, and services can expose reusable prompt templates. A fork of @gavdi/cap-mcp that adds an OAuth proxy, IAS client registration and draft-lifecycle tools.","short":"MCP server generated from a CDS model, forked from @gavdi/cap-mcp","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"independent, cap"},"artifact:sleibach-cap-n8n":{"href":"/cap/artifacts/sleibach-cap-n8n","name":"cap-n8n","kind":"cds-plugin","line":"Maps CAP onto n8n: a programmatic workflow API, @n8n.trigger annotations dispatched through the transactional outbox, and a typed cds import --from n8n.","short":"Integration of CAP with n8n workflows and triggers","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"independent, cap"},"artifact:sleibach-cap-snowflake":{"href":"/cap/artifacts/sleibach-cap-snowflake","name":"cap-snowflake","kind":"cds-plugin","line":"A CAP database adapter for Snowflake with OData V4 support, which the maintainer marks as early development, so its contract is expected to move.","short":"CAP database adapter for Snowflake with OData V4 support","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"independent, cap"},"artifact:sleibach-cap-ui-telemetry":{"href":"/cap/artifacts/sleibach-cap-ui-telemetry","name":"cap-ui-telemetry","kind":"cds-plugin","line":"UI5 frontend performance (FESR) and client error capture for CAP, written as cds.log records and forwarded to SAP Cloud Logging, rather than as OpenTelemetry spans.","short":"UI5 frontend performance and error capture for CAP","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"independent, cap"},"artifact:sonnyfrenzel-rgb-clean-core-io":{"href":"/abap/artifacts/sonnyfrenzel-rgb-clean-core-io","name":"Clean-Core.io","kind":"web-tool","line":"A free hosted workspace that reads one piece of custom ABAP, redraws its business process as BPMN with a line anchor on every element, grades the SAP objects it uses Level A–D and ends in a keep, rebuild, move-to-standard or retire decision.","short":"Hosted workspace redrawing custom ABAP as BPMN and grading it","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"independent, abap"},"artifact:soontao-cds-common-jwt-support":{"href":"/cap/artifacts/soontao-cds-common-jwt-support","name":"cds-common-jwt-support","kind":"cds-plugin","line":"JWT authentication for CAP without xsuaa or xssec, validating tokens with jose instead, for a service that authenticates against an identity provider other than XSUAA; last released in April 2022.","short":"JWT authentication for CAP without xsuaa or xssec","chip":{"label":"Maintenance","tier":"poor","evidence":"54 months since release"},"ai":true,"meta":"independent, cap"},"actor:theo-sun":{"href":"/actors/theo-sun","name":"Theo Sun","kind":"person","glyph":{"type":"avatar","name":"Theo Sun","ring":"independent","src":"/avatars/theo-sun.png"},"line":"maintains 8 entries, contributed to 3 entries","meta":"independent"},"artifact:soontao-cds-feature-toggle":{"href":"/cap/artifacts/soontao-cds-feature-toggle","name":"cds-feature-toggle","kind":"cds-plugin","line":"A feature-toggle pattern for CAP CDS from before the core had one, sitting at the CDS layer rather than the tenant-extensibility layer of @sap/cds-mtxs feature toggles.","short":"Feature-toggle pattern for CAP CDS","chip":{"label":"Maintenance","tier":"poor","evidence":"53 months since release"},"ai":true,"meta":"independent, cap"},"artifact:soontao-cds-hyper-app-service":{"href":"/cap/artifacts/soontao-cds-hyper-app-service","name":"cds-hyper-app-service","kind":"package","line":"A typed service implementation layer over CAP ApplicationService, for writing handlers as class members rather than registrations; last released July 2022, with no repository declared.","short":"Typed class-based service layer over CAP ApplicationService","chip":{"label":"Maintenance","tier":"poor","evidence":"52 months since release"},"ai":true,"meta":"independent, cap"},"artifact:soontao-cds-internal-tool":{"href":"/cap/artifacts/soontao-cds-internal-tool","name":"cds-internal-tool","kind":"package","line":"Reusable internals for people writing CAP extensions — annotation helpers, current cds runtime types, module resolution, reflection utilities and type assertions.","short":"Reusable internals for authors of CAP extensions","chip":{"label":"Maintenance","tier":"poor","evidence":"31 months since release"},"ai":true,"meta":"independent, cap"},"artifact:soontao-cds-mysql":{"href":"/cap/artifacts/soontao-cds-mysql","name":"cds-mysql","kind":"cds-plugin","line":"A MySQL and MariaDB database adapter for CAP that connects to a database instance and translates incoming CQL/CQN requests to it; the repository the package declares has been deleted.","short":"MySQL and MariaDB database adapter for CAP","chip":{"label":"Maintenance","tier":"poor","evidence":"30 months since release"},"ai":true,"meta":"independent, cap"},"artifact:soontao-cds-nats":{"href":"/cap/artifacts/soontao-cds-nats","name":"cds-nats","kind":"cds-plugin","line":"NATS as a messaging service for the CAP Node.js runtime, the broker behind cds.connect for emit and subscribe, for teams already running NATS rather than Event Mesh or Redis.","short":"NATS messaging service for the CAP Node.js runtime","chip":{"label":"Maintenance","tier":"poor","evidence":"47 months since release"},"ai":true,"meta":"independent, cap"},"artifact:soontao-cds-rate-limit":{"href":"/cap/artifacts/soontao-cds-rate-limit","name":"cds-rate-limit","kind":"cds-plugin","line":"A CAP plugin that applies a rate-limit pattern inside the CAP Node.js runtime, capping how many requests a caller gets where tenant and user are already resolved rather than at an approuter or gateway.","short":"Rate-limit pattern for CAP Node.js applications","chip":{"label":"Maintenance","tier":"poor","evidence":"33 months since release"},"ai":true,"meta":"independent, cap"},"artifact:soontao-opentelemetry-cds":{"href":"/cap/artifacts/soontao-opentelemetry-cds","name":"opentelemetry-cds","kind":"cds-plugin","line":"opentelemetry support for CDS nodejs runtime","short":"OpenTelemetry support for the CDS Node.js runtime","chip":{"label":"Maintenance","tier":"poor","evidence":"34 months since release"},"ai":true,"meta":"independent, cap"},"artifact:spreadsheetimporter-abap-importer":{"href":"/abap/artifacts/spreadsheetimporter-abap-importer","name":"ABAP Spreadsheet Importer","kind":"package","line":"A server-side ABAP component that parses an uploaded XLSX or CSV file and creates instances of a named RAP business object through dynamic EML, so its validations and authorizations run on every row.","short":"ABAP component importing XLSX or CSV files into RAP business objects","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"community org, abap"},"artifact:spreadsheetimporter-cds-spreadsheetimporter-plugin":{"href":"/cap/artifacts/spreadsheetimporter-cds-spreadsheetimporter-plugin","name":"cds-spreadsheetimporter-plugin","kind":"cds-plugin","line":"A CAP plugin that adds an ImporterService accepting an uploaded Excel file, parses it on the server and writes its rows into the CDS entity named in the URL.","short":"Spreadsheet upload into a CDS entity, parsed on the server","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"community org, cap"},"actor:spreadsheetimporter":{"href":"/actors/spreadsheetimporter","name":"Spreadsheet Importer","kind":"org","glyph":{"type":"avatar","name":"Spreadsheet Importer","ring":"independent","src":"/avatars/spreadsheetimporter.png"},"line":"maintains 9 entries","meta":"independent"},"artifact:spreadsheetimporter-packed-deployment-abap":{"href":"/ui5/artifacts/spreadsheetimporter-packed-deployment-abap","name":"spreadsheetimporter/packed-deployment-abap","kind":"sample","line":"A UI5 application template containing nothing but the Spreadsheet Importer, deployed once to an ABAP server so other apps reference that copy instead of bundling the component each time.","short":"UI5 app template deploying the Spreadsheet Importer once to ABAP","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"community org, ui5"},"artifact:spreadsheetimporter-sample-adaptation-banks-update":{"href":"/ui5/artifacts/spreadsheetimporter-sample-adaptation-banks-update","name":"spreadsheetimporter/sample-adaptation-banks-update","kind":"sample","line":"An adaptation project over SAP's Manage Banks Fiori app, set up so an uploaded spreadsheet updates records that already exist instead of creating new ones.","short":"Manage Banks adaptation updating existing records from a spreadsheet","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2025-02"},"ai":true,"meta":"community org, ui5"},"artifact:spreadsheetimporter-sample-adaptation-banks":{"href":"/ui5/artifacts/spreadsheetimporter-sample-adaptation-banks","name":"spreadsheetimporter/sample-adaptation-banks","kind":"sample","line":"An adaptation project over SAP's delivered Manage Banks Fiori app that adds a spreadsheet upload through ui5-cc-spreadsheetimporter, without editing the app's own code.","short":"Adaptation project adding spreadsheet upload to Manage Banks","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"community org, ui5"},"artifact:spreadsheetimporter-sample-full-btp":{"href":"/cap/artifacts/spreadsheetimporter-sample-full-btp","name":"spreadsheetimporter/sample-full-btp","kind":"sample","line":"A CAP project with Risks and Mitigations, two Fiori elements apps and a Spreadsheet Upload button in the risks list report, packaged as an MTA for Cloud Foundry.","short":"CAP Risks and Mitigations project with a Spreadsheet Upload button","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"community org, cap"},"artifact:spreadsheetimporter-sample-odata-api-upload":{"href":"/ui5/artifacts/spreadsheetimporter-sample-odata-api-upload","name":"spreadsheetimporter/sample-odata-api-upload","kind":"sample","line":"A UI5 app that lists an on-premise system's OData services from the Gateway catalogue, takes one of their entity sets and opens the Spreadsheet Importer against it at runtime.","short":"UI5 app opening the Spreadsheet Importer on on-premise OData services","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-04"},"ai":true,"meta":"community org, ui5"},"artifact:spreadsheetimporter-sample-standalone":{"href":"/ui5/artifacts/spreadsheetimporter-sample-standalone","name":"spreadsheetimporter/sample-standalone","kind":"sample","line":"A small UI5 app that opens the Spreadsheet Importer dialog on its own, with no table for it to write into, so the app's own code takes the rows after the upload.","short":"UI5 app opening the Spreadsheet Importer on its own","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-09"},"ai":true,"meta":"community org, ui5"},"artifact:spreadsheetimporter-ui5-cc-spreadsheetimporter":{"href":"/ui5/artifacts/spreadsheetimporter-ui5-cc-spreadsheetimporter","name":"ui5-cc-spreadsheetimporter","kind":"package","line":"A UI5 component that adds a spreadsheet upload dialog to a Fiori elements or freestyle app and submits the rows it reads through the app's own OData model.","short":"UI5 component adding a spreadsheet upload dialog to Fiori apps","chip":{"label":"Maintenance","tier":"fair","evidence":"11 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:spreadsheetimporter-ui5-task-btp-manifest":{"href":"/ui5/artifacts/spreadsheetimporter-ui5-task-btp-manifest","name":"ui5-task-btp-manifest","kind":"build-tool","line":"A UI5 Tooling custom task that writes the surrounding app's sap.cloud service name into the bundled Spreadsheet Importer's manifest at build time, so the two match on SAP BTP.","short":"UI5 Tooling task writing the service name into the importer manifest","chip":{"label":"Maintenance","tier":"poor","evidence":"27 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:srbconsultingteam-srbinfoandsupportjs":{"href":"/ui5/artifacts/srbconsultingteam-srbinfoandsupportjs","name":"srbinfoandsupportjs","kind":"package","line":"A JavaScript library that shows a UI5 dialog with application details such as device, resolution, browser zoom, app version and last commit.","chip":{"label":"Maintenance","tier":"poor","evidence":"37 months since release"},"ai":true,"meta":"independent, ui5"},"actor:michaelhenningersrb":{"href":"/actors/michaelhenningersrb","name":"Michael Henninger","kind":"person","glyph":{"type":"avatar","name":"Michael Henninger","src":"/avatars/michaelhenningersrb.png"},"line":"maintains 2 entries, contributed to 2 entries"},"actor:srbconsultingteam":{"href":"/actors/srbconsultingteam","name":"SRB Consulting Team","kind":"org","glyph":{"type":"avatar","name":"SRB Consulting Team","ring":"independent","src":"/avatars/srbconsultingteam.png"},"line":"maintains 2 entries","meta":"independent"},"artifact:srbconsultingteam-srbjslogger":{"href":"/ui5/artifacts/srbconsultingteam-srbjslogger","name":"srbjslogger","kind":"package","line":"A browser JavaScript logger whose log, warn and error calls write prominent output to the console, loaded into a UI5 app through index.html or the manifest's resources.","chip":{"label":"Maintenance","tier":"poor","evidence":"38 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:srijan9864-zrfcread":{"href":"/abap/artifacts/srijan9864-zrfcread","name":"srijan9864/zrfcread","kind":"package","line":"An RFC-enabled ABAP function module that counts the entries of any table against dynamic where and join criteria.","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-07"},"ai":true,"meta":"independent, abap"},"actor:srijan9864":{"href":"/actors/srijan9864","name":"Srijan Sarmah","kind":"person","glyph":{"type":"avatar","name":"Srijan Sarmah","src":"/avatars/srijan9864.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:striezl-variscan":{"href":"/abap/artifacts/striezl-variscan","name":"striezl/VariScan","kind":"cli","line":"An ABAP program, Z_VARI_SCAN, that searches program variants for a value or pattern, doing for variants what RS_ABAP_SOURCE_SCAN does for source code, with each variant checked in a parallel task.","short":"Search over ABAP program variants for a value or pattern","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-08"},"ai":true,"meta":"independent, abap"},"actor:striezl":{"href":"/actors/striezl","name":"Bernhard Haberstetter","kind":"person","glyph":{"type":"avatar","name":"Bernhard Haberstetter","src":"/avatars/striezl.png"},"line":"maintains 1 entry, contributed to 2 entries"},"artifact:sumu-ning-aes":{"href":"/abap/artifacts/sumu-ning-aes","name":"Sumu-Ning/AES","kind":"package","line":"AES and Rijndael encryption and decryption utilities for ABAP, covering six cipher modes and three padding schemes, installed by copying the source or through abapGit.","short":"AES and Rijndael encryption utilities for ABAP","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-09"},"ai":true,"meta":"independent, abap"},"actor:sumu-ning":{"href":"/actors/sumu-ning","name":"Pingsan Song","kind":"person","glyph":{"type":"avatar","name":"Pingsan Song","src":"/avatars/sumu-ning.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:swixfort-sdw-abap-di":{"href":"/abap/artifacts/swixfort-sdw-abap-di","name":"swixfort/Sdw.Abap.Di","kind":"package","line":"A dependency-injection container for ABAP: register classes or interfaces, then resolve an object with its dependencies already constructed.","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"independent, abap"},"actor:swixfort":{"href":"/actors/swixfort","name":"Stefan Wixfort","kind":"person","glyph":{"type":"avatar","name":"Stefan Wixfort","src":"/avatars/swixfort.png"},"line":"maintains 1 entry, contributed to 2 entries"},"artifact:syarhei-cap-utils-barrier":{"href":"/cap/artifacts/syarhei-cap-utils-barrier","name":"@cap-utils/barrier","kind":"package","line":"A placeholder published under a CAP annotations name that ships no annotations: one exported barrier() that throws \"not yet implemented\", no .cds file and no repository.","short":"Placeholder package under a CAP annotations name, no annotations","chip":{"label":"Maintenance","tier":"poor","evidence":"17 months since release"},"ai":true,"meta":"independent, cap"},"artifact:syntaai-sap-security-mcp":{"href":"/abap/artifacts/syntaai-sap-security-mcp","name":"sap-security-mcp","kind":"mcp-server","line":"An entirely read-only security analysis surface: nineteen tools, five resources and eight prompts for audits, SOX and segregation-of-duties review, behind OAuth 2.0 with PKCE. The vendor hosts an endpoint, and the README documents running it yourself.","short":"Read-only security analysis MCP server for SAP audits and SoD review","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"independent, abap"},"actor:syntaai":{"href":"/actors/syntaai","name":"SYNTAAI","kind":"org","glyph":{"type":"avatar","name":"SYNTAAI","ring":"independent","src":"/avatars/syntaai.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:techedgegroup-sap-abap2gsheet":{"href":"/abap/artifacts/techedgegroup-sap-abap2gsheet","name":"abap2gsheet","kind":"package","line":"An ABAP framework that wraps the Google Sheets API behind ABAP calls for on-premise SAP S/4HANA, authenticating through SAP's standard OAuth 2.0 client.","short":"ABAP framework wrapping the Google Sheets API for SAP S/4HANA","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2020-01"},"ai":true,"meta":"independent, abap"},"actor:techedgegroup-sap":{"href":"/actors/techedgegroup-sap","name":"techedgegroup-sap","kind":"person","glyph":{"type":"avatar","name":"techedgegroup-sap","src":"/avatars/techedgegroup-sap.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:tf-franz-seidl-abapdocs-code-scanner":{"href":"/abap/artifacts/tf-franz-seidl-abapdocs-code-scanner","name":"abapdocs-code-scanner","kind":"package","line":"Reads the abapDoc comments of a class or interface's public methods and type definitions and returns their text at runtime.","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-03"},"ai":true,"meta":"independent, abap"},"actor:tf-franz-seidl":{"href":"/actors/tf-franz-seidl","name":"tf-Franz-Seidl","kind":"person","glyph":{"type":"avatar","name":"tf-Franz-Seidl","src":"/avatars/tf-franz-seidl.png"},"line":"maintains 1 entry"},"artifact:tiagobalmeida-openui5-camera":{"href":"/ui5/artifacts/tiagobalmeida-openui5-camera","name":"openui5-camera","kind":"package","line":"A UI5 control that renders a live camera preview from the device's camera and hands the app the picture as a base64-encoded PNG when the user taps it.","short":"UI5 control for live camera preview and PNG capture","chip":{"label":"Maintenance","tier":"poor","evidence":"105 months since release"},"ai":true,"meta":"independent, ui5"},"actor:tiagobalmeida":{"href":"/actors/tiagobalmeida","name":"Tiago Almeida","kind":"person","glyph":{"type":"avatar","name":"Tiago Almeida","src":"/avatars/tiagobalmeida.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:tklein1801-cap-js-attachments":{"href":"/cap/artifacts/tklein1801-cap-js-attachments","name":"@tklein1801/cap-js-attachments","kind":"cds-plugin","line":"A CAP Node.js attachments plugin with a draft-based upload table, Object Store integration and configurable malware scanning for the files that are uploaded.","short":"CAP Node.js attachments plugin with Object Store and malware scanning","chip":{"label":"Maintenance","tier":"poor","evidence":"18 months since release"},"ai":true,"meta":"independent, cap"},"actor:tklein1801":{"href":"/actors/tklein1801","name":"Thorben","kind":"person","glyph":{"type":"avatar","name":"Thorben","src":"/avatars/tklein1801.png"},"line":"maintains 1 entry, contributed to 2 entries"},"artifact:tmhew-abap-aws-sigv4":{"href":"/abap/artifacts/tmhew-abap-aws-sigv4","name":"abap-aws-sigv4","kind":"package","line":"Signs outbound HTTP calls to AWS APIs with AWS Signature Version 4, directly from ABAP.","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-12"},"ai":true,"meta":"independent, abap"},"actor:tmhew":{"href":"/actors/tmhew","name":"tmhew","kind":"person","glyph":{"type":"avatar","name":"tmhew","src":"/avatars/tmhew.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:tobiashofmann-adt-bundle-builder":{"href":"/abap/artifacts/tobiashofmann-adt-bundle-builder","name":"adt-bundle-builder","kind":"build-tool","line":"A Windows build that downloads Eclipse, installs ABAP Development Tools and four more ADT plugins with the Eclipse p2 director, and zips the result as a portable IDE.","short":"Windows build packaging Eclipse with ADT as a portable IDE","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:tobiashofmann":{"href":"/actors/tobiashofmann","name":"Tobias Hofmann","kind":"person","glyph":{"type":"avatar","name":"Tobias Hofmann","src":"/avatars/tobiashofmann.png"},"line":"maintains 4 entries, contributed to 12 entries"},"artifact:tobiashofmann-off-stack-abap":{"href":"/abap/artifacts/tobiashofmann-off-stack-abap","name":"off-stack-abap","kind":"sample","line":"A demonstration of off-stack ABAP development: one class with an add method, linted by abaplint, transpiled to JavaScript and run with its ABAP Unit tests on Node.js.","short":"Demonstration of off-stack ABAP development on Node.js","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:tobiashofmann-pam-mcp-server":{"href":"/artifacts/tobiashofmann-pam-mcp-server","name":"pam-mcp-server","kind":"mcp-server","line":"A local MCP server that answers an agent's questions about the support status of SAP product versions from the reader's own export of the SAP Product Availability Matrix.","short":"Local MCP server on support status from an SAP PAM export","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, umbrella"},"artifact:tobiashofmann-sap-support-radar":{"href":"/artifacts/tobiashofmann-sap-support-radar","name":"SAP Support Radar","kind":"web-tool","line":"A browser app that checks the support and maintenance status of the SAP product versions a person runs against their own export of the SAP Product Availability Matrix.","short":"Browser app checking SAP product support status from a PAM export","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, umbrella"},"artifact:toni-ramchandani-sapient-mcp":{"href":"/abap/artifacts/toni-ramchandani-sapient-mcp","name":"SAPient MCP","kind":"mcp-server","line":"An MCP server for SAP GUI automation built on RoboSAPiens, the Robot Framework library, rather than on the Scripting API directly, over stdio or SSE depending on the client.","short":"SAP GUI automation MCP server built on RoboSAPiens","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-02"},"ai":true,"meta":"independent, abap"},"actor:toni-ramchandani":{"href":"/actors/toni-ramchandani","name":"Toni Ramchandani","kind":"person","glyph":{"type":"avatar","name":"Toni Ramchandani","src":"/avatars/toni-ramchandani.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:tricktresor-alv-grid":{"href":"/abap/artifacts/tricktresor-alv-grid","name":"alv_grid","kind":"sample","line":"Demo programs for the classic CL_GUI_ALV_GRID control, with a README of five links to blog posts that does not say which program belongs to which post.","short":"Demo programs for the classic CL_GUI_ALV_GRID control","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2018-01"},"ai":true,"meta":"independent, abap"},"actor:tricktresor":{"href":"/actors/tricktresor","name":"Tricktresor","kind":"org","glyph":{"type":"avatar","name":"Tricktresor","ring":"independent","src":"/avatars/tricktresor.png"},"line":"maintains 4 entries","meta":"independent"},"artifact:tricktresor-cute":{"href":"/abap/artifacts/tricktresor-cute","name":"cute","kind":"app","line":"CUTE, the Custom Table Editor, sets out to replace SM30's generated maintenance views by editing a custom table's rows in an editable ALV grid over a dynamically created internal table.","short":"Custom Table Editor editing table rows in an editable ALV grid","chip":{"label":"Maintenance","tier":"poor","evidence":"115 months since release"},"ai":true,"meta":"independent, abap"},"artifact:tricktresor-gladius":{"href":"/abap/artifacts/tricktresor-gladius","name":"gladius","kind":"sample","line":"An ABAP project for learning and challenging with the ABAP Unit Test Framework, written up across four blog posts by its author, with a README that is only those links.","short":"ABAP project for learning the ABAP Unit Test Framework","chip":{"label":"Maintenance","tier":"poor","evidence":"37 months since release"},"ai":true,"meta":"independent, abap"},"artifact:tricktresor-guidrasil":{"href":"/abap/artifacts/tricktresor-guidrasil","name":"guidrasil","kind":"generator","line":"A visual designer for classic SAP GUI screens that wraps containers and controls in a generic shell and generates the ABAP program that displays the layout it places.","short":"Visual designer generating ABAP code for classic SAP GUI screens","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2019-01"},"ai":true,"meta":"independent, abap"},"artifact:ui5-community-babel-plugin-transform-modules-ui5":{"href":"/ui5/artifacts/ui5-community-babel-plugin-transform-modules-ui5","name":"babel-preset-transform-ui5","kind":"build-tool","line":"A Babel transformer that converts modern ECMAScript or TypeScript UI5 code (ES modules and classes) into the sap.ui.define and Control.extend syntax the UI5 loader expects.","short":"Babel transformer from modern ES or TypeScript to UI5 module syntax","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"community org, ui5"},"actor:ui5-community":{"href":"/actors/ui5-community","name":"UI5 Community","kind":"org","glyph":{"type":"avatar","name":"UI5 Community","ring":"community-org","src":"/avatars/ui5-community.png"},"line":"maintains 69 entries","meta":"community org"},"artifact:ui5-community-cds-plugin-ui5":{"href":"/cap/artifacts/ui5-community-cds-plugin-ui5","name":"cds-plugin-ui5","kind":"cds-plugin","line":"A CDS plugin that runs the UI5 CLI express middlewares inside the CDS server, so a UI5 CLI project is served from the same port as the services, mounted under a path from its ui5.yaml.","short":"UI5 CLI middlewares running inside the CDS server","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"community org, cap"},"actor:petermuessig":{"href":"/actors/petermuessig","name":"Peter Muessig","kind":"person","glyph":{"type":"avatar","name":"Peter Muessig","ring":"sap-official","src":"/avatars/petermuessig.png"},"line":"maintains 14 entries, gave 1 talk, contributed to 80 entries","meta":"sap official"},"artifact:ui5-community-create-easy-ui5":{"href":"/ui5/artifacts/ui5-community-create-easy-ui5","name":"create-easy-ui5","kind":"generator","line":"An npm-init and npx wrapper that runs the Easy-UI5 Yeoman generator without a global Yeoman install, handing control to generator-easy-ui5 and forwarding any arguments.","short":"npm-init wrapper for the Easy-UI5 Yeoman generator","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-create-wdi5":{"href":"/ui5/artifacts/ui5-community-create-wdi5","name":"create-wdi5","kind":"generator","line":"An npm initializer that adds wdi5 end-to-end testing to an existing UI5 application, installing WebdriverIO's peer dependencies, writing a wdio.conf file and setting an npm script.","short":"npm initializer adding wdi5 testing to an existing UI5 app","chip":{"label":"Maintenance","tier":"fair","evidence":"12 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-dev-approuter":{"href":"/cap/artifacts/ui5-community-dev-approuter","name":"dev-approuter","kind":"build-tool","line":"A development-time wrapper for the SAP Application Router that serves UI5 and CDS modules once they are added to the project as dependencies.","short":"Dev-time wrapper for the SAP Application Router","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"community org, cap"},"artifact:ui5-community-generator-easy-ui5":{"href":"/ui5/artifacts/ui5-community-generator-easy-ui5","name":"generator-easy-ui5","kind":"generator","line":"A Yeoman meta-generator that scaffolds UI5 projects, prompting for a target platform, and loads further sub-generators from the UI5 Community for TypeScript apps, launchpad plugins and libraries.","short":"Yeoman meta-generator for scaffolding UI5 projects","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-generator-ui5-add-extension":{"href":"/ui5/artifacts/ui5-community-generator-ui5-add-extension","name":"generator-ui5-add","kind":"generator","line":"A Yeoman generator that creates UI5 tooling-extension projects and manages the tooling extensions of an existing project, from the bestOfUI5 catalogue.","short":"Yeoman generator for UI5 tooling-extension projects","chip":{"label":"Maintenance","tier":"poor","evidence":"52 months since release"},"ai":true,"meta":"community org, ui5"},"actor:uxkjaer":{"href":"/actors/uxkjaer","name":"Jakob Marius Kjaer","kind":"person","glyph":{"type":"avatar","name":"Jakob Marius Kjaer","src":"/avatars/uxkjaer.png"},"line":"maintains 2 entries, wrote 1 post, contributed to 24 entries"},"artifact:ui5-community-generator-ui5-app":{"href":"/ui5/artifacts/ui5-community-generator-ui5-app","name":"generator-ui5-app","kind":"generator","line":"A Yeoman generator, built on the official UI5 tooling, that scaffolds a new UI5 application in one pass, run as a plug-in for Easy-UI5 or standalone, ready for npm start.","short":"Easy-UI5 generator scaffolding a new UI5 application","chip":{"label":"Maintenance","tier":"poor","evidence":"79 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-generator-ui5-control":{"href":"/ui5/artifacts/ui5-community-generator-ui5-control","name":"generator-ui5-control","kind":"generator","line":"A Yeoman generator that scaffolds a UI5 custom control structured for npm distribution, with a manual test app with live reload and a Jest test suite already wired in.","short":"Yeoman generator for UI5 custom controls distributed via npm","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-03"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-generator-ui5-flp-plugin":{"href":"/ui5/artifacts/ui5-community-generator-ui5-flp-plugin","name":"generator-ui5-flp-plugin","kind":"generator","line":"A generator, built on the official UI5 tooling, that scaffolds a Fiori Launchpad plugin component with sample shell extension code and an Opa5 test, as a plug-in for Easy-UI5.","short":"Easy-UI5 generator scaffolding a Fiori Launchpad plugin","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-09"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-generator-ui5-library-webc":{"href":"/ui5/artifacts/ui5-community-generator-ui5-library-webc","name":"generator-ui5-library-webc","kind":"generator","line":"A Yeoman generator that scaffolds a UI5 library wrapping UI5 Web Components on the official UI5 tooling, run through Easy-UI5 or standalone, and served afterwards with npm start.","short":"Yeoman generator for UI5 libraries wrapping UI5 Web Components","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-11"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-generator-ui5-library":{"href":"/ui5/artifacts/ui5-community-generator-ui5-library","name":"generator-ui5-library","kind":"generator","line":"A Yeoman generator, built on the official UI5 tooling, that scaffolds a new UI5 library as a plug-in for Easy-UI5.","short":"Easy-UI5 generator scaffolding a new UI5 library","chip":{"label":"Maintenance","tier":"poor","evidence":"67 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-generator-ui5-project":{"href":"/ui5/artifacts/ui5-community-generator-ui5-project","name":"generator-ui5-project","kind":"generator","line":"A Yeoman generator for a UI5 project holding several applications in npm workspaces, with eight subgenerators for recurring tasks and a choice of six deployment targets.","short":"Yeoman generator for UI5 projects holding several applications","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-generator-ui5-ts-app-fcl":{"href":"/ui5/artifacts/ui5-community-generator-ui5-ts-app-fcl","name":"generator-ui5-ts-app-fcl","kind":"generator","line":"A generator that scaffolds a UI5 TypeScript application built around the FlexibleColumnLayout and bound to an OData service, asking for the endpoint, entity set, key and fields to show.","short":"Generator for a TypeScript UI5 FlexibleColumnLayout app on OData","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-generator-ui5-ts-app":{"href":"/ui5/artifacts/ui5-community-generator-ui5-ts-app","name":"generator-ui5-ts-app","kind":"generator","line":"A Yeoman generator, built on the official UI5 CLI, that scaffolds a new UI5 application in TypeScript with its tsconfig and UI5 CLI configuration, as a plug-in for Easy-UI5.","short":"Easy-UI5 generator scaffolding a TypeScript UI5 application","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-generator-ui5-ts-flp-plugin":{"href":"/ui5/artifacts/ui5-community-generator-ui5-ts-flp-plugin","name":"generator-ui5-ts-flp-plugin","kind":"generator","line":"An Easy-UI5 generator that scaffolds a SAP Fiori launchpad plugin in TypeScript with the UI5 CLI: a header button, a user menu action or a background service with no UI.","short":"Easy-UI5 generator for a TypeScript Fiori launchpad plugin","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-generator-ui5-ts-library":{"href":"/ui5/artifacts/ui5-community-generator-ui5-ts-library","name":"generator-ui5-ts-library","kind":"generator","line":"A Yeoman generator, built on the official UI5 tooling, that scaffolds a new UI5 library in TypeScript as a plug-in for Easy-UI5.","short":"Easy-UI5 generator scaffolding a TypeScript UI5 library","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-generator-ui5-wdi5":{"href":"/ui5/artifacts/ui5-community-generator-ui5-wdi5","name":"generator-ui5-wdi5","kind":"generator","line":"A Yeoman generator that scaffolds wdi5 end-to-end test configuration and sample tests into a UI5 app, wrapping npm init wdi5 in prompts and run through Easy-UI5.","short":"Yeoman generator scaffolding wdi5 test configuration into a UI5 app","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2024-07"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-hacking-away-sampleapp":{"href":"/ui5/artifacts/ui5-community-hacking-away-sampleapp","name":"hacking-away-sampleapp","kind":"sample","line":"A UI5con 2022 demo app showing an end-to-end TypeScript setup for a UI5 application with a custom UI5 library, backed by a CAP service, in a pnpm monorepo with wdi5 tests.","short":"UI5con 2022 demo of an end-to-end TypeScript UI5 setup with CAP","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2022-10"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-jsx-runtime-helloworld":{"href":"/ui5/artifacts/ui5-community-jsx-runtime-helloworld","name":"@ui5-community/jsx-runtime-helloworld","kind":"sample","line":"A scaffolded UI5 TypeScript app in the jsx-runtime repository that consumes the runtime the way a project outside the repository would, with two views converted from XML.","short":"Scaffolded UI5 TypeScript app consuming the JSX runtime","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-jsx-runtime-showcase":{"href":"/ui5/artifacts/ui5-community-jsx-runtime-showcase","name":"@ui5-community/jsx-runtime-showcase","kind":"sample","line":"The showcase app of @ui5-community/jsx-runtime: it runs the library end-to-end and doubles as its documentation on GitHub Pages.","short":"Showcase and documentation app of @ui5-community/jsx-runtime","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-jsx-runtime":{"href":"/ui5/artifacts/ui5-community-jsx-runtime","name":"@ui5-community/jsx-runtime","kind":"package","line":"A plugin-based JSX runtime for UI5: views are written as .tsx files with per-control typing, and the JSX compiles to plain new Control(settings) calls.","short":"Plugin-based JSX runtime for UI5 views written as .tsx","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-karma-ui5-transpile":{"href":"/ui5/artifacts/ui5-community-karma-ui5-transpile","name":"karma-ui5-transpile","kind":"package","line":"A Karma preprocessor that transpiles a UI5 project's sources with the ui5-tooling-transpile configuration in its ui5.yaml.","short":"Karma preprocessor transpiling UI5 sources via ui5-tooling-transpile","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-showcase-approuter":{"href":"/cap/artifacts/ui5-community-showcase-approuter","name":"approuter","kind":"sample","line":"The showcase for dev-approuter in ui5-ecosystem-showcase: an SAP Application Router in front of two of the repository's apps, started either through the dev-time wrapper or through plain @sap/approuter.","short":"Showcase for dev-approuter in front of two UI5 apps","chip":{"label":"Maintenance","tier":"poor","evidence":"125 months since release"},"ai":true,"meta":"community org, cap"},"actor:nicoschoenteich":{"href":"/actors/nicoschoenteich","name":"Nico Schoenteich","kind":"person","glyph":{"type":"avatar","name":"Nico Schoenteich","src":"/avatars/nicoschoenteich.png"},"line":"maintains 3 entries, wrote 3 posts, contributed to 16 entries"},"artifact:ui5-community-showcase-cds-bookshop":{"href":"/cap/artifacts/ui5-community-showcase-cds-bookshop","name":"cds-bookshop","kind":"sample","line":"The CAP bookshop in ui5-ecosystem-showcase, set up to show UI5 development on a CAP server with cds-plugin-ui5.","short":"CAP bookshop showing UI5 development with cds-plugin-ui5","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, cap"},"artifact:ui5-community-showcase-ui5-app":{"href":"/ui5/artifacts/ui5-community-showcase-ui5-app","name":"ui5-app","kind":"sample","line":"The UI5 application in ui5-ecosystem-showcase that carries 18 of the repository's UI5 CLI extensions in one ui5.yaml and package.json, with Karma unit tests and WebdriverIO end-to-end tests.","short":"UI5 app carrying 18 UI5 CLI extensions in one configuration","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-showcase-ui5-bookshop-viewer":{"href":"/ui5/artifacts/ui5-community-showcase-ui5-bookshop-viewer","name":"ui5-bookshop-viewer","kind":"sample","line":"A standalone UI5 app in ui5-ecosystem-showcase that shows the cds-bookshop CAP server consumed inside the UI5 server through ui5-middleware-cap.","short":"UI5 app consuming the cds-bookshop server via ui5-middleware-cap","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-showcase-ui5-lib":{"href":"/ui5/artifacts/ui5-community-showcase-ui5-lib","name":"ui5-lib","kind":"sample","line":"A sample setup for developing a UI5 library in ui5-ecosystem-showcase, covering the whole cycle in one folder: a dev server, a build, linting, a QUnit testsuite and Karma unit tests.","short":"Sample setup for developing a UI5 library","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-showcase-ui5-module":{"href":"/ui5/artifacts/ui5-community-showcase-ui5-module","name":"ui5-module","kind":"sample","line":"A custom UI5 control packaged as an npm package, which other showcases in ui5-ecosystem-showcase consume through ui5-tooling-modules.","short":"Custom UI5 control packaged as an npm package","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-showcase-ui5-tsapp-webc":{"href":"/ui5/artifacts/ui5-community-showcase-ui5-tsapp-webc","name":"ui5-tsapp-webc","kind":"sample","line":"A TypeScript UI5 application in ui5-ecosystem-showcase that consumes @ui5/webcomponents and its Fiori and AI packages, with the UI5 CLI extensions that consumption needs.","short":"TypeScript UI5 app consuming @ui5/webcomponents","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-showcase-ui5-tsapp":{"href":"/ui5/artifacts/ui5-community-showcase-ui5-tsapp","name":"ui5-tsapp","kind":"sample","line":"A TypeScript UI5 application in ui5-ecosystem-showcase that consumes the repository's custom UI5 CLI extensions together in one app, importing ordinary npm packages such as Chart.js and Luxon.","short":"TypeScript UI5 app consuming custom UI5 CLI extensions together","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-showcase-ui5-tslib":{"href":"/ui5/artifacts/ui5-community-showcase-ui5-tslib","name":"ui5-tslib","kind":"sample","line":"A TypeScript UI5 library in ui5-ecosystem-showcase, with a dev server, a build, linting, type checking, JSDoc generation and headless Karma unit tests with coverage.","short":"TypeScript UI5 library with build, linting and Karma tests","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-showcase-ui5-tsmodule":{"href":"/ui5/artifacts/ui5-community-showcase-ui5-tsmodule","name":"ui5-tsmodule","kind":"sample","line":"A TypeScript UI5 module in ui5-ecosystem-showcase, exported in the shape that lets UI5 apps consume it through ui5-tooling-modules.","short":"TypeScript UI5 module consumed through ui5-tooling-modules","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-cc-chart":{"href":"/ui5/artifacts/ui5-community-ui5-cc-chart","name":"ui5-cc-chart","kind":"package","line":"A UI5 custom control that wraps Chart.js to render a line chart from label and value records, installed as a plain npm dependency with ui5-tooling-modules in ui5.yaml.","short":"UI5 custom control wrapping Chart.js for line charts","chip":{"label":"Maintenance","tier":"fair","evidence":"10 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-cc-md":{"href":"/ui5/artifacts/ui5-community-ui5-cc-md","name":"ui5-cc-md","kind":"package","line":"A UI5 custom control that renders Markdown, including GitHub-flavoured syntax, to HTML inside an XML view, taking its content from a string, a file path or a model binding.","short":"UI5 custom control rendering Markdown to HTML","chip":{"label":"Maintenance","tier":"poor","evidence":"39 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-fontawesome-lib":{"href":"/ui5/artifacts/ui5-community-ui5-fontawesome-lib","name":"ui5-fontawesome-lib","kind":"package","line":"A UI5 library that adds Font Awesome's regular, solid and brand icon sets to the sap-icon:// namespace, addressable from a standard Icon control, for UI5 1.120.33 or later.","short":"UI5 library adding Font Awesome icon sets to sap-icon://","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-icon-explorer":{"href":"/ui5/artifacts/ui5-community-ui5-icon-explorer","name":"ui5-icon-explorer","kind":"sample","line":"A live icon browser for SAPUI5 applications, built to look like SAP's own Icon Explorer, for searching, copying and filtering the icon set the ui5-fontawesome-lib library adds.","short":"Live icon browser for the ui5-fontawesome-lib icon set","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-journey-recorder":{"href":"/ui5/artifacts/ui5-community-ui5-journey-recorder","name":"ui5-journey-recorder","kind":"generator","line":"A Chrome extension that records clicks and inputs against a running UI5 app and generates OPA5 or wdi5 end-to-end test code from the recorded journey.","short":"Chrome extension generating OPA5 or wdi5 tests from recorded journeys","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2025-03"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-middleware-approuter":{"href":"/ui5/artifacts/ui5-community-ui5-middleware-approuter","name":"ui5-middleware-approuter","kind":"build-tool","line":"A UI5 CLI middleware that puts @sap/approuter in front of the UI5 dev server, proxying it to Cloud Foundry or XS Advanced destinations during development.","short":"UI5 CLI middleware proxying the dev server through @sap/approuter","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-middleware-cap":{"href":"/ui5/artifacts/ui5-community-ui5-middleware-cap","name":"ui5-middleware-cap","kind":"build-tool","line":"A UI5 CLI middleware that runs a CDS server inside the UI5 dev server, mounted at a path the UI5 project configures, so one command serves the app and its CAP services.","short":"UI5 CLI middleware running a CDS server inside the UI5 dev server","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-middleware-hmr":{"href":"/ui5/artifacts/ui5-community-ui5-middleware-hmr","name":"ui5-middleware-hmr","kind":"build-tool","line":"An experimental UI5 middleware for hot module replacement, swapping a changed module in during development instead of reloading the whole page.","short":"Experimental UI5 middleware for hot module replacement","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-middleware-iasync":{"href":"/ui5/artifacts/ui5-community-ui5-middleware-iasync","name":"ui5-middleware-iasync","kind":"build-tool","line":"A UI5 dev-server middleware built on browsersync.io that syncs user interactions across connected browsers over a websocket, replaying an action from one browser in the others for manual testing.","short":"UI5 middleware syncing interactions across browsers over websocket","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-middleware-index":{"href":"/ui5/artifacts/ui5-community-ui5-middleware-index","name":"ui5-middleware-index","kind":"build-tool","line":"A UI5 dev-server middleware that delivers a configured welcome page, index.html by default, for the root path instead of the ui5-server directory listing.","short":"UI5 middleware serving a chosen welcome page at the root path","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-middleware-livereload":{"href":"/ui5/artifacts/ui5-community-ui5-middleware-livereload","name":"ui5-middleware-livereload","kind":"build-tool","line":"A dev-server middleware that adds live reload to the UI5 dev server, reloading the page when the sources in the app's webapp folder change.","short":"Live reload middleware for the UI5 dev server","chip":{"label":"Maintenance","tier":"good","evidence":"3 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-middleware-onelogin":{"href":"/ui5/artifacts/ui5-community-ui5-middleware-onelogin","name":"ui5-middleware-onelogin","kind":"build-tool","line":"A UI5 dev-server middleware that logs into a system such as SAP Gateway with headless Playwright on the first request and reuses the session cookie for every later request.","short":"UI5 middleware logging in with Playwright and reusing the session","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-middleware-serveframework":{"href":"/ui5/artifacts/ui5-community-ui5-middleware-serveframework","name":"ui5-middleware-serveframework","kind":"build-tool","line":"A UI5 middleware that serves a UI5 framework built on the local machine to the dev server, in place of a framework version resolved another way.","short":"UI5 middleware serving a locally built UI5 framework","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-middleware-servestatic":{"href":"/ui5/artifacts/ui5-community-ui5-middleware-servestatic","name":"ui5-middleware-servestatic","kind":"build-tool","line":"A UI5 dev-server middleware that serves static resources from a filesystem path or an installed npm package path, built on serve-static, with either path settable through an environment variable.","short":"UI5 middleware serving static resources from a path or npm package","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-middleware-simpleproxy":{"href":"/ui5/artifacts/ui5-community-ui5-middleware-simpleproxy","name":"ui5-middleware-simpleproxy","kind":"build-tool","line":"A UI5 dev-server middleware that proxies requests from the local dev server to a backend system, so the app can reach the backend's services during development.","short":"Dev-server middleware proxying requests to a backend system","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-middleware-ui5":{"href":"/ui5/artifacts/ui5-community-ui5-middleware-ui5","name":"ui5-middleware-ui5","kind":"build-tool","line":"A UI5 middleware that lets one UI5 application be included as a dependency of another and served through that application's dev server.","short":"UI5 middleware including one UI5 application in another","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-middleware-webjars":{"href":"/ui5/artifacts/ui5-community-ui5-middleware-webjars","name":"ui5-middleware-webjars","kind":"build-tool","line":"A UI5 dev-server middleware that loads JAR files from a configured path and serves the static resources bundled inside them, following the WebJars convention of META-INF/resources/.","short":"UI5 middleware serving static resources from JAR files (WebJars)","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-middleware-websocket":{"href":"/ui5/artifacts/ui5-community-ui5-middleware-websocket","name":"ui5-middleware-websocket","kind":"build-tool","line":"UI5 middleware utilities that add WebSocket support to Express-based dev servers such as the UI5 server, which has no WebSocket channel of its own.","short":"WebSocket support for Express-based dev servers such as UI5's","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-task-cachebuster":{"href":"/ui5/artifacts/ui5-community-ui5-task-cachebuster","name":"ui5-task-cachebuster","kind":"build-tool","line":"A UI5 builder task that cachebusts a standalone UI5 application by moving its build output into a timestamped subfolder and pointing index.html's resource roots at it.","short":"UI5 builder task cachebusting standalone UI5 applications","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-task-copyright":{"href":"/ui5/artifacts/ui5-community-ui5-task-copyright","name":"ui5-task-copyright","kind":"build-tool","line":"A UI5 builder task that appends copyright headers to TypeScript, JavaScript and XML files on every build, so the header is not added to each source file by hand.","short":"UI5 builder task appending copyright headers to source files","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-task-flatten-library":{"href":"/ui5/artifacts/ui5-community-ui5-task-flatten-library","name":"ui5-task-flatten-library","kind":"build-tool","line":"A UI5 builder task that flattens a library's build output, removing the project namespace and resources folder for deployment to SAP NetWeaver, now also offered by the UI5 CLI itself.","short":"UI5 builder task flattening library output for SAP NetWeaver","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-task-i18ncheck":{"href":"/ui5/artifacts/ui5-community-ui5-task-i18ncheck","name":"ui5-task-i18ncheck","kind":"build-tool","line":"A UI5 builder task that cross-checks every XML view against the app's i18n properties files and logs a warning where a translation is missing; views created in JavaScript are not checked.","short":"UI5 builder task checking XML views for missing i18n texts","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-task-minify-xml":{"href":"/ui5/artifacts/ui5-community-ui5-task-minify-xml","name":"ui5-task-minify-xml","kind":"build-tool","line":"A UI5 builder task that minifies XML resources such as views and fragments, which a plain UI5 build otherwise ships unminified.","short":"UI5 builder task minifying XML views and fragments","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-task-pwa-enabler":{"href":"/ui5/artifacts/ui5-community-ui5-task-pwa-enabler","name":"ui5-task-pwa-enabler","kind":"build-tool","line":"A UI5 builder task that turns a UI5 application into a progressive web app by generating a web manifest and a service worker under one of five caching strategies.","short":"UI5 builder task turning a UI5 app into a progressive web app","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-task-transpile":{"href":"/ui5/artifacts/ui5-community-ui5-task-transpile","name":"ui5-task-transpile","kind":"build-tool","line":"A UI5 Tooling task that transpiles TypeScript, ES modules and other ES6+ sources during the build so the UI5 runtime can load them.","short":"UI5 Tooling task transpiling TypeScript and ES modules","chip":{"label":"Maintenance","tier":"poor","evidence":"47 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-task-zipper":{"href":"/ui5/artifacts/ui5-community-ui5-task-zipper","name":"ui5-task-zipper","kind":"build-tool","line":"A build task for the UI5 tooling that packages the UI5 build result, the webapp, as a zip archive at the end of the build.","short":"Build task packaging the UI5 build result as a zip archive","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-tooling-less":{"href":"/ui5/artifacts/ui5-community-ui5-tooling-less","name":"ui5-tooling-less","kind":"build-tool","line":"A UI5 CLI extension, a build task and a dev-server middleware, that compiles an app's Less files into CSS at build time and live while the UI5 server runs.","short":"UI5 CLI extension compiling Less files into CSS","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-tooling-modules":{"href":"/ui5/artifacts/ui5-community-ui5-tooling-modules","name":"ui5-tooling-modules","kind":"build-tool","line":"A set of UI5 tooling extensions that load and convert plain npm packages into UI5 AMD-like modules, so the UI5 module loader can consume them.","short":"UI5 tooling extensions loading npm packages as UI5 modules","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-tooling-stringreplace":{"href":"/ui5/artifacts/ui5-community-ui5-tooling-stringreplace","name":"ui5-tooling-stringreplace","kind":"build-tool","line":"A UI5 CLI extension for string replacement during the build, for placeholders or tokens in source files that have to be replaced at build time.","short":"UI5 CLI extension for string replacement during the build","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-tooling-transpile":{"href":"/ui5/artifacts/ui5-community-ui5-tooling-transpile","name":"ui5-tooling-transpile","kind":"build-tool","line":"A UI5 CLI extension that transpiles modern JavaScript or TypeScript during the UI5 build, with a transformJSX option that handles JSX and TSX in the same step.","short":"UI5 CLI extension transpiling code during the UI5 build","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-ts-modules-showcase":{"href":"/ui5/artifacts/ui5-community-ui5-ts-modules-showcase","name":"ui5-ts-modules-showcase","kind":"sample","line":"A showcase demonstrating how to consume OSS npm libraries such as lodash from a UI5 TypeScript application using ui5-tooling-modules.","short":"Showcase of consuming npm libraries from a TypeScript UI5 app","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2025-01"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-ui5-webcomponents-bundle":{"href":"/ui5/artifacts/ui5-community-ui5-webcomponents-bundle","name":"ui5-webcomponents-bundle","kind":"package","line":"A custom bundle of UI5 Web Components built from the old playground's bundle definitions, served from GitHub Pages and loaded with one script tag.","short":"Custom UI5 Web Components bundle loaded with one script tag","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-wdi5-cucumber":{"href":"/ui5/artifacts/ui5-community-wdi5-cucumber","name":"wdi5-cucumber","kind":"package","line":"A wdi5 plugin that extends wdi5's end-to-end testing with Cucumber-style BDD scenarios, run against UI5 Fiori Elements apps.","short":"wdi5 plugin for Cucumber-style BDD tests on Fiori Elements apps","chip":{"label":"Repository","tier":"poor","evidence":"archived on GitHub"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-wdi5-fe-selectors":{"href":"/ui5/artifacts/ui5-community-wdi5-fe-selectors","name":"wdi5-fe-selectors","kind":"package","line":"A set of wdi5-flavoured control selectors tuned for locating controls in Fiori Elements apps, extending the selectors wdi5 itself provides.","short":"wdi5 selectors for locating controls in Fiori Elements apps","chip":{"label":"Repository","tier":"poor","evidence":"archived on GitHub"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-wdi5-workshop":{"href":"/ui5/artifacts/ui5-community-wdi5-workshop","name":"wdi5-workshop","kind":"sample","line":"A pseudo-monorepo of two wdi5 workshops, from UI5con 2022 and Devtoberfest 2022, teaching end-to-end testing of UI5 apps from a beginner start to continuous integration.","short":"Two wdi5 workshops from UI5con 2022 and Devtoberfest 2022","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2022-10"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-community-wdi5":{"href":"/ui5/artifacts/ui5-community-wdi5","name":"wdio-ui5-service","kind":"package","line":"End-to-end testing for UI5 as a WebdriverIO service that drives a real browser through UI5's own test API, so a test addresses controls with OPA5-compatible selectors rather than DOM nodes.","short":"End-to-end testing for UI5 on WebdriverIO with UI5 control selectors","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"community org, ui5"},"artifact:ui5-linter":{"href":"/ui5/artifacts/ui5-linter","name":"@ui5/linter","kind":"cli","line":"SAP's static analysis tool for UI5 projects: it scans JavaScript, TypeScript, XML, JSON and other files for deprecated APIs, global variables and possible CSP violations, and fixes part of them with --fix.","short":"Static analysis tool for UI5 projects","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"sap official, ui5"},"actor:ui5":{"href":"/actors/ui5","name":"UI5","kind":"org","glyph":{"type":"avatar","name":"UI5","ring":"sap-official","src":"/avatars/ui5.png"},"line":"maintains 8 entries","meta":"sap official"},"artifact:ui5-logger":{"href":"/ui5/artifacts/ui5-logger","name":"@ui5/logger","kind":"package","line":"UI5 CLI's internal logger, described by its own readme as internal — it appears here because other UI5 tooling depends on it.","short":"Internal logger of the UI5 CLI","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"sap official, ui5"},"artifact:ui5-mcp-server":{"href":"/ui5/artifacts/ui5-mcp-server","name":"@ui5/mcp-server","kind":"mcp-server","line":"SAP's MCP server for UI5 development: ten tools that scaffold an app or a card, read the project in front of the agent, and run the linter and the manifest validator against it.","short":"MCP server for UI5 development with ten tools","chip":{"label":"Maintenance","tier":"good","evidence":"1 month since release"},"ai":true,"meta":"sap official, ui5"},"artifact:ui5-middleware-code-coverage":{"href":"/ui5/artifacts/ui5-middleware-code-coverage","name":"@ui5/middleware-code-coverage","kind":"build-tool","line":"UI5 CLI server middleware that instruments a project's JavaScript files with Istanbul as the dev server sends them, and generates the coverage report from the records the OpenUI5 QUnit tests send back.","short":"UI5 CLI middleware for Istanbul code coverage","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"sap official, ui5"},"artifact:ui5-plugins-coding-agents":{"href":"/ui5/artifacts/ui5-plugins-coding-agents","name":"UI5/plugins-coding-agents","kind":"skill","line":"UI5's own plugins for coding agents, three of them: everyday development, modernising a legacy project, and converting one to TypeScript, each installed into Claude Code or GitHub Copilot.","short":"UI5 plugins for coding agents","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, ui5"},"artifact:ui5-sample-app":{"href":"/ui5/artifacts/ui5-sample-app","name":"@ui5/sample-app","kind":"sample","line":"An OpenUI5 sample app set up with the UI5 CLI: ESLint, UI5 linter and UI5 Test Runner checks, a standard and a self-contained build, and a UI5 workspace for developing against local UI5 libraries.","short":"OpenUI5 sample app set up with the UI5 CLI","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, ui5"},"artifact:ui5-tooling-webc":{"href":"/ui5/artifacts/ui5-tooling-webc","name":"@ui5/tooling-webc","kind":"build-tool","line":"Deprecated UI5 Tooling extensions that generate UI5 library wrapper projects for UI5 Web Components and serve them during development; the README points to ui5-tooling-modules instead.","short":"Deprecated UI5 Tooling extensions for UI5 Web Components wrappers","chip":{"label":"Maintenance","tier":"poor","evidence":"33 months since release"},"ai":true,"meta":"sap official, ui5"},"artifact:ui5-webcomponents-agent-skills":{"href":"/ui5/artifacts/ui5-webcomponents-agent-skills","name":"UI5 Web Components agent skills","kind":"skill","line":"Two skills shipped inside the UI5 Web Components repository itself, under skills/: one for accessibility, covering ARIA and keyboard behaviour, and one for styling through shadow parts and custom properties.","short":"Two agent skills for accessibility and styling of web components","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"sap official, ui5"},"artifact:ui5-webcomponents-mcp-server":{"href":"/ui5/artifacts/ui5-webcomponents-mcp-server","name":"@ui5/webcomponents-mcp-server","kind":"mcp-server","line":"Four tools that answer an agent's questions about UI5 Web Components from the framework's own documentation — component API, integration guides, and the docs themselves.","short":"MCP server answering questions on UI5 Web Components","chip":{"label":"Maintenance","tier":"fair","evidence":"8 months since release"},"ai":true,"meta":"sap official, ui5"},"artifact:ui5-webcomponents":{"href":"/ui5/artifacts/ui5-webcomponents","name":"@ui5/webcomponents","kind":"package","line":"SAP's UI elements as standard custom elements, ui5-button among them, implementing SAP Fiori design and usable from plain HTML, React, Angular or Vue.","short":"SAP's UI elements as standard custom elements","chip":{"label":"Maintenance","tier":"good","evidence":"released this month"},"ai":true,"meta":"sap official, ui5"},"artifact:uweku-mocka":{"href":"/abap/artifacts/uweku-mocka","name":"mockA","kind":"package","line":"A free mocking framework for ABAP, published under the Apache License 2.0.","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2019-01"},"ai":true,"meta":"independent, abap"},"actor:uweku":{"href":"/actors/uweku","name":"Uwe Kunath","kind":"person","glyph":{"type":"avatar","name":"Uwe Kunath","src":"/avatars/uweku.png"},"line":"maintains 2 entries, contributed to 2 entries"},"artifact:uweku-vise-for-abap":{"href":"/abap/artifacts/uweku-vise-for-abap","name":"Vise_for_ABAP","kind":"package","line":"A characterisation-test helper: ZCL_VISE=>GRIP records a field's value once and fails a later run if it has changed.","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2021-11"},"ai":true,"meta":"independent, abap"},"artifact:uxkjaer-cap-user-info":{"href":"/cap/artifacts/uxkjaer-cap-user-info","name":"cap-user-info","kind":"cds-plugin","line":"Resolves the createdBy and modifiedBy of a managed entity to a stored user record of email, given name and family name, and renders the two fields as links with a quickview.","short":"User details and quickview links for createdBy and modifiedBy","chip":{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},"ai":true,"meta":"independent, cap"},"artifact:vadimklimov-cpi-mcp-server":{"href":"/btp/artifacts/vadimklimov-cpi-mcp-server","name":"cpi-mcp-server","kind":"mcp-server","line":"A Go server over Cloud Integration's design-time content — integration packages and integration flows, listed and searched by id, version, name, vendor or mode.","short":"Go MCP server over Cloud Integration packages and integration flows","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-06"},"ai":true,"meta":"independent, btp"},"actor:vadimklimov":{"href":"/actors/vadimklimov","name":"Vadim Klimov","kind":"person","glyph":{"type":"avatar","name":"Vadim Klimov","src":"/avatars/vadimklimov.png"},"line":"maintains 1 entry, gave 1 talk, contributed to 1 entry"},"artifact:vaibhavgoel-github-1986-abap-adt-cli":{"href":"/abap/artifacts/vaibhavgoel-github-1986-abap-adt-cli","name":"abap-adt-cli","kind":"cli","line":"Pulls an ABAP package to local files over the ADT REST API in parallel, and pushes edited objects back under a transport — bulk sync rather than one object at a time in SE80 or Eclipse.","short":"CLI that pulls and pushes ABAP packages as local files over ADT","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, abap"},"actor:vaibhavgoel-github-1986":{"href":"/actors/vaibhavgoel-github-1986","name":"vaibhavgoel-github-1986","kind":"person","glyph":{"type":"avatar","name":"vaibhavgoel-github-1986","src":"/avatars/vaibhavgoel-github-1986.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:valdirmendesdev-abap-json-encoder-decoder":{"href":"/abap/artifacts/valdirmendesdev-abap-json-encoder-decoder","name":"ABAP JSON Encoder/Decoder","kind":"package","line":"A JSON encoder and decoder for ABAP, modelled on Go's encoding/json package, installed through abapGit with no other required package and documentation still marked under construction.","short":"JSON encoder and decoder for ABAP, modelled on Go's encoding/json","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2022-09"},"ai":true,"meta":"independent, abap"},"actor:valdirmendesdev":{"href":"/actors/valdirmendesdev","name":"Valdir Mendes","kind":"person","glyph":{"type":"avatar","name":"Valdir Mendes","src":"/avatars/valdirmendesdev.png"},"line":"maintains 1 entry, contributed to 2 entries"},"artifact:vcd94xt10z-forsap-s4hana-private-simulator":{"href":"/cap/artifacts/vcd94xt10z-forsap-s4hana-private-simulator","name":"forsap-s4hana-private-simulator","kind":"sample","line":"A CAP project standing in for S/4HANA Private Edition OData APIs on localhost, serving API_BUSINESS_PARTNER's A_Supplier entity over OData V4 and, through an adapter, V2.","short":"CAP project simulating S/4HANA Private Edition OData APIs locally","chip":{"label":"Maintenance","tier":"good","evidence":"2 months since release"},"ai":true,"meta":"independent, cap"},"actor:vcd94xt10z":{"href":"/actors/vcd94xt10z","name":"Vinicius Cesar Dias","kind":"person","glyph":{"type":"avatar","name":"Vinicius Cesar Dias","src":"/avatars/vcd94xt10z.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:venkatesh-hulekal-dynamic-external-cds-join":{"href":"/cap/artifacts/venkatesh-hulekal-dynamic-external-cds-join","name":"dynamic-external-cds-join","kind":"cds-plugin","line":"A CAP plugin for SaaS extension scenarios that joins external entities with internal tables at query time; its declared repository is not publicly reachable.","short":"CAP plugin joining external entities with internal tables at query","chip":{"label":"Maintenance","tier":"poor","evidence":"20 months since release"},"ai":true,"meta":"independent, cap"},"artifact:victorizbitskiy-zconcurrency-api":{"href":"/abap/artifacts/victorizbitskiy-zconcurrency-api","name":"zconcurrency_api","kind":"package","line":"A Java-inspired ABAP library that runs tasks in parallel over SAP's SPTA framework without an RFC-enabled function module, capping concurrent tasks at 40% of the dialog work processes.","short":"Parallel task library for ABAP over the SPTA framework","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-01"},"ai":true,"meta":"independent, abap"},"actor:victorizbitskiy":{"href":"/actors/victorizbitskiy","name":"Victor Izbitskiy","kind":"person","glyph":{"type":"avatar","name":"Victor Izbitskiy","src":"/avatars/victorizbitskiy.png"},"line":"maintains 2 entries, contributed to 4 entries"},"artifact:victorizbitskiy-zspool-pdf":{"href":"/abap/artifacts/victorizbitskiy-zspool-pdf","name":"SAP Spool PDF","kind":"package","line":"An ABAP class that submits a report to the spool, typically in the background, and converts the resulting spool request into a PDF it can return as an xstring, save, show or email.","short":"Submits an ABAP report to the spool and converts the output to PDF","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-12"},"ai":true,"meta":"independent, abap"},"artifact:vlutsas-dst":{"href":"/abap/artifacts/vlutsas-dst","name":"DST","kind":"app","line":"Irreversibly anonymises PII and PHI data in non-production SAP systems, against a scrambling template the user creates.","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-09"},"ai":true,"meta":"independent, abap"},"actor:vlutsas":{"href":"/actors/vlutsas","name":"Vladimir Lutsas","kind":"person","glyph":{"type":"avatar","name":"Vladimir Lutsas","src":"/avatars/vlutsas.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:vneecious-sap-cap-sdm-plugin":{"href":"/cap/artifacts/vneecious-sap-cap-sdm-plugin","name":"sap-cap-sdm-plugin","kind":"cds-plugin","line":"A CAP Node.js plugin that maps annotated CDS entities to SAP Document Management and exposes CMIS and repository-administration clients, in an early release.","short":"CAP Node.js plugin mapping CDS entities to SAP Document Management","chip":{"label":"Maintenance","tier":"poor","evidence":"31 months since release"},"ai":true,"meta":"independent, cap"},"actor:vneecious":{"href":"/actors/vneecious","name":"Vinícius Barrionuevo","kind":"person","glyph":{"type":"avatar","name":"Vinícius Barrionuevo","ring":"sap-official","src":"/avatars/vneecious.png"},"line":"maintains 1 entry, wrote 1 post, contributed to 1 entry","meta":"sap official"},"artifact:vobu-cds-entra-id":{"href":"/cap/artifacts/vobu-cds-entra-id","name":"cds-entra-id","kind":"cds-plugin","line":"A CAP plugin that maps Microsoft Entra ID groups and app roles onto cds.User roles, so @requires and @restrict keep working for a CAP app hosted on Azure App Services.","short":"Maps Microsoft Entra ID groups and app roles onto cds.User roles","chip":{"label":"Maintenance","tier":"poor","evidence":"33 months since release"},"ai":true,"meta":"independent, cap"},"artifact:vrishtrix-zed-cds-extension":{"href":"/cap/artifacts/vrishtrix-zed-cds-extension","name":"zed-cds-extension","kind":"ide-extension","line":"CDS language support for the Zed editor, wiring the CDS language server into it.","short":"CDS language support for the Zed editor","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-10"},"ai":true,"meta":"independent, cap"},"actor:vrishtrix":{"href":"/actors/vrishtrix","name":"Vrishin Patel","kind":"person","glyph":{"type":"avatar","name":"Vrishin Patel","src":"/avatars/vrishtrix.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:watson-developer-cloud-abap-sdk-nwas":{"href":"/abap/artifacts/watson-developer-cloud-abap-sdk-nwas","name":"abap-sdk-nwas","kind":"package","line":"An ABAP client library for IBM Watson's Discovery, Language Translator, Natural Language Understanding, Speech to Text, Text to Speech and Assistant services, installed through abapGit.","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-12"},"ai":true,"meta":"independent, abap"},"actor:watson-developer-cloud":{"href":"/actors/watson-developer-cloud","name":"IBM Watson APIs","kind":"org","glyph":{"type":"avatar","name":"IBM Watson APIs","ring":"independent","src":"/avatars/watson-developer-cloud.png"},"line":"maintains 1 entry","meta":"independent"},"artifact:wegnerdan-abapmermaid":{"href":"/abap/artifacts/wegnerdan-abapmermaid","name":"abapMermaid","kind":"package","line":"An ABAP package that renders Mermaid diagrams inside an SAP GUI container through the Edge Chromium Control, from a diagram's own text syntax passed at runtime.","short":"Renders Mermaid diagrams inside an SAP GUI container","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-11"},"ai":true,"meta":"independent, abap"},"actor:wegnerdan":{"href":"/actors/wegnerdan","name":"Daniel Wegner","kind":"person","glyph":{"type":"avatar","name":"Daniel Wegner","src":"/avatars/wegnerdan.png"},"line":"maintains 3 entries, contributed to 10 entries"},"artifact:wegnerdan-zwdcsv":{"href":"/abap/artifacts/wegnerdan-zwdcsv","name":"ZwdCSV","kind":"package","line":"A CSV parser and generator for ABAP that follows RFC 4180, including line breaks embedded inside quoted fields, for strings and for files on the application server and the frontend.","short":"RFC 4180 CSV parser and generator for ABAP","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-07"},"ai":true,"meta":"independent, abap"},"artifact:wegnerdan-zwddynscreen":{"href":"/abap/artifacts/wegnerdan-zwddynscreen","name":"ZwdDynscreen","kind":"package","line":"An ABAP library that generates a selection screen or a popup for a handful of parameters from objects typed by DDIC elements, without a dynpro created in the program.","short":"Selection screens and popups generated from ABAP objects, no dynpro","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2019-06"},"ai":true,"meta":"independent, abap"},"artifact:weiserman-rap-skills":{"href":"/abap/artifacts/weiserman-rap-skills","name":"rap-skills","kind":"skill","line":"RAP skills delivered branch-per-target, so the playbook you check out only references patterns valid for your deployment — managed on BTP, unmanaged with BAPI wrappers, and S/4HANA Cloud editions planned.","short":"RAP skills delivered branch-per-target for each deployment","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2026-02"},"ai":true,"meta":"independent, abap"},"actor:weiserman":{"href":"/actors/weiserman","name":"Warren Eiserman","kind":"person","glyph":{"type":"avatar","name":"Warren Eiserman","src":"/avatars/weiserman.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:wolfe100-openui5-paginator":{"href":"/ui5/artifacts/wolfe100-openui5-paginator","name":"openui5-paginator","kind":"package","line":"A UI5 custom control that pages through large data in a table, for backends that serve pages over REST rather than OData.","chip":{"label":"Maintenance","tier":"poor","evidence":"51 months since release"},"ai":true,"meta":"independent, ui5"},"actor:wolfe100":{"href":"/actors/wolfe100","name":"Wolfgang Haag","kind":"person","glyph":{"type":"avatar","name":"Wolfgang Haag","src":"/avatars/wolfe100.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:workskong-mcp-abap-adt":{"href":"/abap/artifacts/workskong-mcp-abap-adt","name":"workskong/mcp-abap-adt","kind":"mcp-server","line":"A deliberately light MCP adapter over ABAP ADT for object search, source, DDIC metadata, a data preview and runtime diagnostics, read-only in practice and documented in Korean.","short":"Light MCP adapter for ABAP over ADT, documented in Korean","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"independent, abap"},"actor:workskong":{"href":"/actors/workskong","name":"GAEUL JUNG","kind":"person","glyph":{"type":"avatar","name":"GAEUL JUNG","src":"/avatars/workskong.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:wozjac-abap-sencha":{"href":"/abap/artifacts/wozjac-abap-sencha","name":"abap-sencha","kind":"package","line":"A BDD/TDD assertion library for ABAP Unit, styled after the JavaScript library Chai.js, that wraps cl_abap_unit_assert in chainable expect, should and assert styles.","short":"BDD/TDD assertion library for ABAP Unit, styled after Chai.js","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-06"},"ai":true,"meta":"independent, abap"},"actor:wozjac":{"href":"/actors/wozjac","name":"Jacek Wozniczak","kind":"person","glyph":{"type":"avatar","name":"Jacek Wozniczak","src":"/avatars/wozjac.png"},"line":"maintains 3 entries, contributed to 4 entries"},"artifact:wozjac-vscode-ui5-api-reference":{"href":"/ui5/artifacts/wozjac-vscode-ui5-api-reference","name":"vscode-ui5-api-reference","kind":"ide-extension","line":"VS Code extension that shows the SAPUI5 and OpenUI5 API reference in a side bar view, with inherited members, member filters and a favourites list, for one framework version at a time.","short":"VS Code side bar view of the SAPUI5 and OpenUI5 API reference","chip":{"label":"Maintenance","tier":"poor","evidence":"13 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:wozjac-vscode-ui5-odata-mock-generator":{"href":"/ui5/artifacts/wozjac-vscode-ui5-odata-mock-generator","name":"vscode-ui5-odata-mock-generator","kind":"ide-extension","line":"VS Code extension that generates JSON mock data files for an OData service from its metadata, with faker.js values, per-set sizes, value lists and values tied to other properties.","short":"VS Code extension generating OData mock data from service metadata","chip":{"label":"Maintenance","tier":"poor","evidence":"13 months since release"},"ai":true,"meta":"independent, ui5"},"artifact:xamafe-rfc-tools":{"href":"/abap/artifacts/xamafe-rfc-tools","name":"RFC_TOOLS","kind":"package","line":"A wrapper class for calling asynchronous RFC function modules in parallel from ABAP, one instance per parallel task.","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2020-08"},"ai":true,"meta":"independent, abap"},"actor:xamafe":{"href":"/actors/xamafe","name":"xamafe","kind":"person","glyph":{"type":"avatar","name":"xamafe","src":"/avatars/xamafe.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:xbergun-cap-mock-generator":{"href":"/cap/artifacts/xbergun-cap-mock-generator","name":"cap-mock-generator","kind":"generator","line":"Parses the .cds schema and fills db/data with relationally consistent CSV — through an LLM layer where one is configured, or a local engine where none is.","short":"Fills db/data with relationally consistent CSV from a .cds schema","chip":{"label":"Maintenance","tier":"fair","evidence":"5 months since release"},"ai":true,"meta":"independent, cap"},"actor:xbergun":{"href":"/actors/xbergun","name":"Berkay","kind":"person","glyph":{"type":"avatar","name":"Berkay","src":"/avatars/xbergun.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:xexer-abap-ccm":{"href":"/abap/artifacts/xexer-abap-ccm","name":"Clean Core Measurement","kind":"app","line":"An ABAP application for a central ATC system that imports Clean Core check results and reports them per system as Level A to D KPIs, technical debt scores and documented assignments.","short":"Reports Clean Core ATC results per system as Level A to D KPIs","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:xexer":{"href":"/actors/xexer","name":"Xexer","kind":"person","glyph":{"type":"avatar","name":"Xexer","src":"/avatars/xexer.png"},"line":"maintains 7 entries, contributed to 8 entries"},"artifact:xexer-abap-message-logger":{"href":"/abap/artifacts/xexer-abap-message-logger","name":"abap-message-logger","kind":"package","line":"A message logger for ABAP Cloud that collects T100 messages, BAPIRET2 structures, exceptions and plain text before saving them to the Application Log.","short":"Message logger for ABAP Cloud that saves to the Application Log","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-12"},"ai":true,"meta":"independent, abap"},"artifact:xexer-abap-select-converter":{"href":"/abap/artifacts/xexer-abap-select-converter","name":"ABAP Select Converter","kind":"web-tool","line":"Converts a classic Open SQL SELECT against dictionary tables to the equivalent statement against released Core Data Services entities and their fields.","short":"Converts classic Open SQL SELECTs to released CDS entities","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"independent, abap"},"artifact:xexer-abap-system-fields":{"href":"/abap/artifacts/xexer-abap-system-fields","name":"abap-system-fields","kind":"package","line":"An ABAP Cloud class that wraps SY system fields and calendar-date functions behind an injectable instance, so code that reads them stays stable under unit tests.","short":"Injectable wrapper for SY fields and date functions in ABAP Cloud","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"independent, abap"},"artifact:xexer-abap-test-container":{"href":"/abap/artifacts/xexer-abap-test-container","name":"abap-test-container","kind":"package","line":"A test data container for ABAP Cloud that loads unit test data in JSON, XML or raw formats from GitHub and maps it onto the target structure, filling the platform's missing native one.","short":"GitHub-hosted test data container for ABAP Cloud","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-10"},"ai":true,"meta":"independent, abap"},"artifact:xexer-abap-unit-runner":{"href":"/abap/artifacts/xexer-abap-unit-runner","name":"abap-unit-runner","kind":"app","line":"An application job that runs and schedules ABAP Unit tests in SAP's ABAP Environment through the SAP_COM_0735 API, where the on-premise test runner has no SAP GUI to run from.","short":"Application job that runs and schedules ABAP Unit tests in the cloud","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2025-03"},"ai":true,"meta":"independent, abap"},"artifact:xexer-cds-field-mapping":{"href":"/abap/artifacts/xexer-cds-field-mapping","name":"CDS Field Mapping","kind":"web-tool","line":"Looks up which Core Data Services entity and field a classic dictionary table and field map to, filterable by whether the target CDS view is released.","short":"Maps classic dictionary tables and fields to CDS entities and fields","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-05"},"ai":true,"meta":"independent, abap"},"artifact:xexer-cloudification-repository-viewer":{"href":"/abap/artifacts/xexer-cloudification-repository-viewer","name":"Cloudification Repository Viewer","kind":"web-tool","line":"A browser form over the Cloudification Repository, the list SAP publishes of which standard objects are released for ABAP Cloud and what replaces the ones that are not.","short":"Browser form over SAP's Cloudification Repository for ABAP Cloud","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"independent, abap"},"artifact:xexer-my-ide-actions":{"href":"/abap/artifacts/xexer-my-ide-actions","name":"my-ide-actions","kind":"ide-extension","line":"A collection of eight ABAP Development Tools IDE Actions covering class creation, conversion of classic Open SQL to ABAP SQL, code snippets and RAP tooling.","short":"Collection of ABAP Development Tools IDE Actions","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, abap"},"artifact:xexer-odata-batch-creator":{"href":"/abap/artifacts/xexer-odata-batch-creator","name":"OData Batch Creator","kind":"web-tool","line":"Builds the payload for an OData batch request from an uploaded $metadata XML file, generating sample data from the metadata rather than asking for it by hand.","short":"Builds OData batch request payloads from an uploaded $metadata file","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"independent, abap"},"artifact:xexer-xlf-translator":{"href":"/abap/artifacts/xexer-xlf-translator","name":"XLF Translator","kind":"web-tool","line":"Takes an uploaded XLIFF file and makes every entry that carries a translation element editable in the page, aimed mainly at the ABAP Cloud content the Maintain Translation app generates.","short":"Editor for the translations in an uploaded XLIFF file","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"independent, abap"},"artifact:xinitrc86-adash-services":{"href":"/abap/artifacts/xinitrc86-adash-services","name":"adash-services","kind":"package","line":"The backend service behind ADASH Cli, exposing ABAP Unit test runs and coverage as REST and OData services for CI/CD pipelines, with a report scheduled to run tests per package.","short":"Backend exposing ABAP Unit runs and coverage over REST and OData","chip":{"label":"Maintenance","tier":"poor","evidence":"76 months since release"},"ai":true,"meta":"independent, abap"},"actor:xinitrc86":{"href":"/actors/xinitrc86","name":"xinitrc86","kind":"person","glyph":{"type":"avatar","name":"xinitrc86","src":"/avatars/xinitrc86.png"},"line":"maintains 2 entries, contributed to 3 entries"},"artifact:xinitrc86-zthread":{"href":"/abap/artifacts/xinitrc86-zthread","name":"zthread","kind":"package","line":"A threading library for ABAP modelled on Java's Thread and Runnable interface: a runnable class is forked as a thread, joined singly or all at once, and returns a result or a callback.","short":"Threading library for ABAP modelled on Java's Thread and Runnable","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-09"},"ai":true,"meta":"independent, abap"},"artifact:yannick-thirion-klystron":{"href":"/abap/artifacts/yannick-thirion-klystron","name":"Klystron","kind":"mcp-server","line":"An MCP server written in ABAP that runs inside the application server behind an ICF service and exposes typed tools for ABAP development, quality, transports, customizing, roles, Basis operations and integration, with a client-side plugin of SAP skills.","short":"MCP server in ABAP inside the application server, with agent skills","chip":{"label":"Maintenance","tier":"unknown","evidence":"no release data"},"ai":true,"meta":"independent, abap"},"artifact:yassinbahri-pyrfc-mcp":{"href":"/abap/artifacts/yassinbahri-pyrfc-mcp","name":"pyrfc-mcp","kind":"mcp-server","line":"An MCP server for calling an SAP system's RFC-enabled function modules from an agent, built so that discovering a function does not authorise calling it: a read or a write is denied unless the function name matches an allowlist the server is configured with.","short":"MCP server calling RFC-enabled function modules behind an allowlist","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"actor:yassinbahri":{"href":"/actors/yassinbahri","name":"Yassin Bahri","kind":"person","glyph":{"type":"avatar","name":"Yassin Bahri","src":"/avatars/yassinbahri.png"},"line":"maintains 2 entries, contributed to 2 entries"},"artifact:yassinbahri-sap-knowledge-pipeline":{"href":"/btp/artifacts/yassinbahri-sap-knowledge-pipeline","name":"sap-knowledge-pipeline","kind":"package","line":"A Python library that reads selected records out of an SAP OData service or an SAP HANA SELECT and renders them as chunked documents, each carrying the entity set and business key it came from.","short":"Python library turning OData or HANA records into chunked documents","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, btp"},"artifact:ysichov-abap-ai-code-tools":{"href":"/abap/artifacts/ysichov-abap-ai-code-tools","name":"ABAP-AI-CODE-TOOLS","kind":"package","line":"An optional abapGit package that adds create, modify and delete tools to ABAP AI Code, for ABAP programs and classes, with each diff block approved before it is saved.","short":"abapGit package adding create, modify and delete tools to ABAP AI Code","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"independent, abap"},"actor:ysichov":{"href":"/actors/ysichov","name":"Yurii Sychov","kind":"person","glyph":{"type":"avatar","name":"Yurii Sychov","src":"/avatars/ysichov.png"},"line":"maintains 9 entries, contributed to 10 entries"},"artifact:ysichov-abap-ai-code":{"href":"/abap/artifacts/ysichov-abap-ai-code","name":"ABAP AI Code","kind":"app","line":"An agentic coding assistant written in ABAP that runs as a SAP GUI report and reads, explains and reviews repository objects inside the system, running an LLM's tool calls as ABAP.","short":"Agentic coding assistant in ABAP that runs as an SAP GUI report","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"independent, abap"},"artifact:ysichov-ace":{"href":"/abap/artifacts/ysichov-ace","name":"ACE","kind":"app","line":"A SAP GUI tool that parses ABAP source statically to show call flow, data dependencies, control structure and code metrics such as McCabe complexity, without running the code.","short":"SAP GUI tool for static analysis of ABAP call flow and code metrics","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:ysichov-ave":{"href":"/abap/artifacts/ysichov-ave","name":"AVE","kind":"app","line":"A SAP GUI version explorer and code reviewer that diffs every object in a transport request and records an approval or decline per changed block, by someone other than its author.","short":"SAP GUI version explorer and code reviewer for transport requests","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:ysichov-hr-dme":{"href":"/abap/artifacts/ysichov-hr-dme","name":"HR_DME","kind":"app","line":"A read-only SAP GUI report that lists every infotype, payroll cluster and assignment table holding data for one SAP HCM person or organisational object.","short":"Read-only SAP GUI report listing where HCM object data is stored","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"independent, abap"},"artifact:ysichov-sap-easy-ai":{"href":"/abap/artifacts/ysichov-sap-easy-ai","name":"SAP-easy-AI","kind":"sample","line":"An ABAP report that sends a prompt to a locally running LLM in LM Studio through a destination created in transaction SM59, shown with gpt-oss-20b and Gemma 3 12B.","short":"ABAP report sending a prompt to a local LLM via an SM59 destination","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-07"},"ai":true,"meta":"independent, abap"},"artifact:ysichov-simple-data-explorer":{"href":"/abap/artifacts/ysichov-simple-data-explorer","name":"Simple Data Explorer","kind":"app","line":"A multi-window SAP GUI explorer for tables, views and CDS SQL views, with filters that re-read as they change, foreign-key navigation, a join builder and pivot tables.","short":"Multi-window SAP GUI explorer for tables, views and CDS SQL views","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, abap"},"artifact:ysichov-smart-debugger":{"href":"/abap/artifacts/ysichov-smart-debugger","name":"Smart Debugger","kind":"app","line":"A debugger script for the SAP GUI New Debugger that records every step and variable change of an ABAP program, so execution can be stepped backwards with F5 and F8.","short":"SAP GUI debugger script recording steps so execution can run backwards","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-08"},"ai":true,"meta":"independent, abap"},"artifact:ysichov-vertex":{"href":"/abap/artifacts/ysichov-vertex","name":"VERTEX","kind":"ide-extension","line":"An extension for ABAP Development Tools for Eclipse and VS Code that shows Simple Data Explorer, AVE and ACE in the editor over the developer's ADT connection.","short":"ADT extension for Eclipse and VS Code showing three SAP GUI tools","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-10"},"ai":true,"meta":"independent, abap"},"artifact:zedwin-ztct":{"href":"/abap/artifacts/zedwin-ztct","name":"ZTCT","kind":"app","line":"A transport checking tool that analyses ABAP transports at object level before they move to production, determining a safe order and flagging risks.","chip":{"label":"Repository","tier":"poor","evidence":"pushed 2023-04"},"ai":true,"meta":"independent, abap"},"actor:zedwin":{"href":"/actors/zedwin","name":"Edwin Vleeshouwers","kind":"person","glyph":{"type":"avatar","name":"Edwin Vleeshouwers","src":"/avatars/zedwin.png"},"line":"maintains 1 entry, contributed to 1 entry"},"artifact:zenrosadira-abap-tbox-csvman":{"href":"/abap/artifacts/zenrosadira-abap-tbox-csvman","name":"ABAP CSV Manager","kind":"package","line":"A configurable CSV reader and writer for ABAP, with per-field format, validation and column-mapping options, reading into a flat or a dynamically typed internal table.","short":"Configurable CSV reader and writer for ABAP","chip":{"label":"Repository","tier":"fair","evidence":"pushed 2025-06"},"ai":true,"meta":"independent, abap"},"actor:zenrosadira":{"href":"/actors/zenrosadira","name":"Marco Marrone","kind":"person","glyph":{"type":"avatar","name":"Marco Marrone","src":"/avatars/zenrosadira.png"},"line":"maintains 2 entries, contributed to 2 entries"},"artifact:zenrosadira-abap-tbox-stats":{"href":"/abap/artifacts/zenrosadira-abap-tbox-stats","name":"ABAP Statistical Tools","kind":"package","line":"A single ABAP class that computes descriptive statistics over an internal table, with group-by, correlation, histograms and generators for the common probability distributions.","short":"ABAP class for descriptive statistics over an internal table","chip":{"label":"Repository","tier":"good","evidence":"pushed 2026-09"},"ai":true,"meta":"independent, abap"},"external:abap-platform":{"href":"/externals/abap-platform","name":"ABAP platform","kind":"outside the atlas","line":"SAP's application server and development platform for ABAP. For the things here it is the system a developer's editor or an agent's tool reaches over ADT, and a program calls over RFC; where it runs is the deployment's, as for SAP BW/4HANA.","ai":true},"external:ajv":{"href":"/externals/ajv","name":"Ajv","kind":"outside the atlas","line":"A JSON Schema validator for JavaScript. Where something here validates against JSON Schema rather than against the CDS model, Ajv is what compiles the schema and runs it.","ai":true},"external:anthropic-claude-api":{"href":"/externals/anthropic-claude-api","name":"Claude API","kind":"outside the atlas","line":"Anthropic's hosted API for the Claude models, reached at https://api.anthropic.com/v1/messages with a key or through a destination. For the things here it is the model endpoint an ABAP system posts to, under the organisation's own agreement with Anthropic.","ai":true},"external:aws":{"href":"/externals/aws","name":"Amazon Web Services","kind":"outside the atlas","line":"Amazon's cloud platform, with accounts, regions, a command-line interface and CloudFormation templates that provision resources. For the things here it is the account an SAP tool is deployed into, next to the SAP systems it reads from.","ai":true},"external:axios":{"href":"/externals/axios","name":"axios","kind":"outside the atlas","line":"A promise-based HTTP client for the browser and Node.js, and the client a CAP module here hands an outbound request to once the destination has been resolved.","ai":true},"external:babel-plugin-transform-react-jsx":{"href":"/externals/babel-plugin-transform-react-jsx","name":"@babel/plugin-transform-react-jsx","kind":"outside the atlas","line":"Babel's JSX transform. It compiles the JSX in a UI5 project's .tsx files into the _jsx and _jsxs calls that @ui5-community/jsx-runtime turns into UI5 control constructors, and is installed as an optional peer at version 7.","ai":true},"external:c3js":{"href":"/externals/c3js","name":"C3.js","kind":"outside the atlas","line":"A D3-based JavaScript charting library. For the things here it is the charting engine a UI5 control library wraps, so a chart is declared in an XML view instead of configured in JavaScript.","ai":true},"external:cogniac-edgeflow-proxy":{"href":"/externals/cogniac-edgeflow-proxy","name":"EdgeFlow Proxy API","kind":"outside the atlas","line":"A FastAPI service that runs on a Raspberry Pi with a libcamera-supported camera, captures frames and forwards them to a Cogniac EdgeFlow inference device, and exposes one HTTPS endpoint on the local network that a POD plugin in the browser calls.","ai":true},"external:cogniac-edgeflow":{"href":"/externals/cogniac-edgeflow","name":"Cogniac EdgeFlow","kind":"outside the atlas","line":"Cogniac's on-premise GPU appliance, running the company's inference engine at the edge on the same local network as the proxy that forwards camera frames to it, and producing the detections a POD plugin displays.","ai":true},"external:databricks":{"href":"/externals/databricks","name":"Databricks","kind":"outside the atlas","line":"A unified data and AI platform. sap-bdc-mcp-server creates the Delta shares it registers with SAP Business Data Cloud in a Databricks workspace.","ai":true},"external:dayjs":{"href":"/externals/dayjs","name":"Day.js","kind":"outside the atlas","line":"A 2 kB JavaScript date library with the same API as Moment.js. For the things here it is what a UI5 control wraps so a view can parse, format and shift a date.","ai":true},"external:deepagents":{"href":"/externals/deepagents","name":"Deep Agents","kind":"outside the atlas","line":"An agent harness published by LangChain as the npm package deepagents, with planning, filesystem and sub-agent tools included. For the things here, the harness whose filesystem backend protocol an implementation plugs into so the agent's files live in an SAP repository rather than on disk.","ai":true},"external:docker":{"href":"/externals/docker","name":"Docker","kind":"outside the atlas","line":"A container engine that packages software with the tools it needs and runs it isolated from the host. Things here that ship as an image need it installed, so the reader installs the engine rather than each of the command line tools inside the container.","ai":true},"external:drawio":{"href":"/externals/drawio","name":"draw.io","kind":"outside the atlas","line":"A diagram editor, on the web and as a desktop app. The BTP diagram skills here write .drawio files, and a person opens and edits them in it.","ai":true},"external:duckdb":{"href":"/externals/duckdb","name":"DuckDB","kind":"outside the atlas","line":"An in-process analytical SQL database. For the things here it is the engine an extension is loaded into, and where SAP data lands once it has been read: queried and joined there alongside files and other tables.","ai":true},"external:eclipse":{"href":"/externals/eclipse","name":"Eclipse IDE","kind":"outside the atlas","line":"The Java-based IDE and plugin platform, downloaded as an archive per operating system and extended through p2 update sites. For the things here, the installation SAP's ABAP Development Tools and their companion plugins are added to.","ai":true},"external:fastembed":{"href":"/externals/fastembed","name":"FastEmbed","kind":"outside the atlas","line":"A Python library for embedding generation, built on the ONNX Runtime rather than PyTorch and needing no GPU. For the things here it is what turns a chunk into a vector on the machine doing the work rather than through a hosted embedding service.","ai":true},"external:ffmpeg":{"href":"/externals/ffmpeg","name":"FFmpeg","kind":"outside the atlas","line":"A command-line converter for audio and video. Where it is installed on the machine, web-abap2UI5's media pipeline uses it to write the .mp4 and .gif of a recorded app beside the .webm and .png it always produces.","ai":true},"external:github-copilot":{"href":"/externals/github-copilot","name":"GitHub Copilot","kind":"outside the atlas","line":"An AI coding assistant built into GitHub, with agents that can use external tools and MCP servers.","ai":true},"external:github":{"href":"/externals/github","name":"GitHub","kind":"outside the atlas","line":"A hosted git service: repositories, pull requests with reviews, and branch rulesets that decide what may reach a branch. Things here that push objects out of an SAP system, or keep a review record outside it, call its API and open their pull requests on it.","ai":true},"external:google-gemini":{"href":"/externals/google-gemini","name":"Google Gemini","kind":"outside the atlas","line":"Google's generative AI models, called over the Gemini API with a key Google bills to whoever holds it. For the things here it is the model a workspace sends its wording and naming proposals to once its own engine has read the code.","ai":true},"external:goose":{"href":"/externals/goose","name":"goose","kind":"outside the atlas","line":"An extensible AI agent that runs tasks and connects to external tools, used as the local agent process behind a workspace.","ai":true},"external:jdk":{"href":"/externals/jdk","name":"Java Development Kit (JDK)","kind":"outside the atlas","line":"The Java runtime and tools a Java program is run with. For the things here, the full JDK an on-premises agent such as the Cloud Connector needs on its host.","ai":true},"external:kafka":{"href":"/externals/kafka","name":"Apache Kafka","kind":"outside the atlas","line":"A distributed event-streaming platform. For the things here it is the broker that carries messages between the parts of one application.","ai":true},"external:langchain-mcp-adapters":{"href":"/externals/langchain-mcp-adapters","name":"@langchain/mcp-adapters","kind":"outside the atlas","line":"LangChain's MCP integration for JavaScript, whose MultiServerMCPClient holds several MCP servers at once; for the things here it is how an agent in a CAP service gets its tools from deployed MCP servers instead of hand-written ones.","ai":true},"external:langgraph":{"href":"/externals/langgraph","name":"LangGraph","kind":"outside the atlas","line":"An agent runtime that describes a loop as a graph of nodes and edges and carries the state between turns. For the things here it is the harness an agent's planning and tool calls run in, and the state that a CDS checkpointer persists.","ai":true},"external:microsoft-excel":{"href":"/externals/microsoft-excel","name":"Microsoft Excel","kind":"outside the atlas","line":"Microsoft's spreadsheet application, on Windows, the Mac and the web. For the things here it is the host of an Office add-in: it installs the add-in from a manifest, shows its page in a task pane and exposes the open workbook to that page through Office.js.","ai":true},"external:mongodb":{"href":"/externals/mongodb","name":"MongoDB","kind":"outside the atlas","line":"A document database. Reached from CAP through an adapter over Mongoose rather than through the SQL database services.","ai":true},"external:nats":{"href":"/externals/nats","name":"NATS","kind":"outside the atlas","line":"A messaging system. An option for teams that already run it and want events carried over it rather than over Event Mesh or Redis.","ai":true},"external:nodejs":{"href":"/externals/nodejs","name":"Node.js","kind":"outside the atlas","line":"A cross-platform JavaScript runtime that servers, command line tools and scripts written in JavaScript are run with. For the things here, the prerequisite a repository names when its build is a set of npm scripts.","ai":true},"external:openrouter":{"href":"/externals/openrouter","name":"OpenRouter","kind":"outside the atlas","line":"A service that provides access to AI models through one API endpoint, used by applications and agents for model requests.","ai":true},"external:playwright":{"href":"/externals/playwright","name":"Playwright","kind":"outside the atlas","line":"A library that drives Chromium, Firefox and WebKit from code, written for end-to-end browser testing. For the things here it is the browser a tool starts itself, to get through an SAP login or to load a page headless and photograph it.","ai":true},"external:postgresql":{"href":"/externals/postgresql","name":"PostgreSQL","kind":"outside the atlas","line":"A relational database. For CAP it is the production database when the answer is not HANA, reached through an adapter that translates CDS queries into its SQL.","ai":true},"external:postmark":{"href":"/externals/postmark","name":"Postmark","kind":"outside the atlas","line":"A hosted transactional email provider, reached over an HTTP API with a server token. For the things here it is where an application hands over an approval-request email, and the sender keeps the retry rules because the API carries no idempotency key.","ai":true},"external:pyrfc":{"href":"/externals/pyrfc","name":"PyRFC","kind":"outside the atlas","line":"SAP's Python bindings over the SAP NetWeaver RFC SDK. For the things here it is what a Python program calls ABAP function modules through, and it carries the SDK's own prerequisite with it.","ai":true},"external:qdrant":{"href":"/externals/qdrant","name":"Qdrant","kind":"outside the atlas","line":"A vector similarity search engine and vector database. For the things here it is where embedded chunks are stored and searched, running locally beside the process that wrote them or as a server of its own.","ai":true},"external:redis":{"href":"/externals/redis","name":"Redis","kind":"outside the atlas","line":"An in-memory data store. For the things here it is the shared cache, the queue or the pub/sub channel that lets several application instances behave as one.","ai":true},"external:sap-bw4hana":{"href":"/externals/sap-bw4hana","name":"SAP BW/4HANA","kind":"outside the atlas","line":"SAP's data warehouse product for on-premise and private-cloud landscapes, optimised for the HANA database and installed rather than subscribed — the 2023 release is current, with its own master and upgrade guides. Outside the atlas because there is no adoption decision to model: you have a BW system or you do not, and what is entered here is the tooling that reaches one.","ai":true},"external:sap-cloud-alm":{"href":"/externals/sap-cloud-alm","name":"SAP Cloud ALM","kind":"outside the atlas","line":"SAP's application lifecycle management product, run by SAP as a service: implementation projects with their tasks, requirements, features, documents and test management, and the operations side of a landscape. For the things here it is the system a server reads over the published Cloud ALM APIs, on behalf of an agent.","ai":true},"external:sap-companion":{"href":"/externals/sap-companion","name":"SAP Companion","kind":"outside the atlas","line":"SAP Enable Now's web-based help system: a panel over the running application carrying help topics, guided tours, What's New and learning content. Its sap.dfa.help runtime is licensed and not published on the public UI5 CDN, so anything serving a Companion workarea is pointed at a copy the project supplies.","ai":true},"external:sap-digital-manufacturing":{"href":"/externals/sap-digital-manufacturing","name":"SAP Digital Manufacturing","kind":"outside the atlas","line":"SAP's manufacturing execution system for running production on the shop floor, run by SAP as software as a service. The product behind the SAP Digital Manufacturing door: what is entered there is what people build for it, such as plugins for its Production Operator Dashboard, and the product itself is not an option.","ai":true},"external:sap-erp":{"href":"/externals/sap-erp","name":"SAP ERP (ECC)","kind":"outside the atlas","line":"SAP's earlier ERP suite, ECC 6.0, run on-premise on the ABAP platform and succeeded by SAP S/4HANA. For the things here it is the system a tool reads from or writes to.","ai":true},"external:sap-focused-run":{"href":"/externals/sap-focused-run","name":"SAP Focused Run","kind":"outside the atlas","line":"SAP's monitoring and operations product for large SAP landscapes, installed by a service provider or a customer rather than subscribed. For the things here it is the system a tool reads alerts and monitoring data from.","ai":true},"external:sap-leanix":{"href":"/externals/sap-leanix","name":"SAP LeanIX","kind":"outside the atlas","line":"SAP's enterprise architecture management product, run by SAP as a service: the inventory of an organisation's applications, interfaces and technologies, and the fact sheets that describe them. For the things here it is the system a tool reads or updates over its APIs.","ai":true},"external:sap-nw-rfc-sdk":{"href":"/externals/sap-nw-rfc-sdk","name":"SAP NetWeaver RFC SDK","kind":"outside the atlas","line":"SAP's native library for calling ABAP functionality and for being called from ABAP. Downloaded from SAP under its own terms rather than from a package registry, so anything built on it carries that prerequisite per platform.","ai":true},"external:sap-product-availability-matrix":{"href":"/externals/sap-product-availability-matrix","name":"SAP Product Availability Matrix","kind":"outside the atlas","line":"SAP's list of its software releases on the SAP Support Portal, with release types, maintenance durations, planned availability, upgrade paths and supported platforms. For the things here it is the export a person downloads and converts themselves, the data they read.","ai":true},"external:sap-s4hana-cloud-public-edition":{"href":"/externals/sap-s4hana-cloud-public-edition","name":"SAP S/4HANA Cloud Public Edition","kind":"outside the atlas","line":"SAP's cloud ERP, run by SAP as software as a service. For the things here it is the business system a side-by-side application on BTP reads from and writes to over its published OData APIs.","ai":true},"external:sap-s4hana":{"href":"/externals/sap-s4hana","name":"SAP S/4HANA","kind":"outside the atlas","line":"SAP's ERP suite, run on-premise or as a private cloud edition, with its business data and processes reached over OData, RFC and the ABAP platform. For the things here it is the system a tool reads from or writes to. The public cloud edition is its own entry.","ai":true},"external:sap-successfactors":{"href":"/externals/sap-successfactors","name":"SAP SuccessFactors","kind":"outside the atlas","line":"SAP's cloud HR suite, run by SAP as software as a service and reached from outside through its OData APIs. The product behind the SAP SuccessFactors door: what is entered there is the tooling that reaches into it, and the product itself is not an option. Its Extensibility service is a BTP service and sits on the BTP door, where SAP's catalogue lists it.","ai":true},"external:sqlite":{"href":"/externals/sqlite","name":"SQLite","kind":"outside the atlas","line":"An embedded SQL database engine used as a selectable local cache store by CAP caching plugins.","ai":true},"external:terraform":{"href":"/externals/terraform","name":"Terraform","kind":"outside the atlas","line":"An infrastructure as code tool that defines cloud and on-premise resources in configuration files and creates or changes them through provider plugins. SAP publishes a plugin for BTP, so Terraform is the CLI a reader installs to run a BTP account's configuration.","ai":true},"external:thingsboard":{"href":"/externals/thingsboard","name":"ThingsBoard","kind":"outside the atlas","line":"An IoT platform for device connectivity, data collection and dashboards, installed on a single node from the compose file its own Docker guide publishes. For the things here it is the platform an edge stack runs and that SAP-side components are added around.","ai":true},"external:tricentis-test-automation-for-sap":{"href":"/externals/tricentis-test-automation-for-sap","name":"Tricentis Test Automation for SAP","kind":"outside the atlas","line":"Tricentis' test automation product as SAP resells it: test case authoring for automated tests, test data services and support for the UIs and APIs of SAP products, entitled as a term licence to SAP customers under SAP Enterprise Support. For the things here it is the environment that imports and runs published test modules.","ai":true},"external:vite":{"href":"/externals/vite","name":"Vite","kind":"outside the atlas","line":"A build tool and development server for web frontends. For the things here it is what bundles and serves a CAP project's frontend when a plugin brings the two under cds watch.","ai":true},"content:050-clean-core-measurement-preview":{"href":"/content/050-clean-core-measurement-preview","name":"050: Clean Core Measurement (Preview)","kind":"blog","short":"Clean Core Measurement tool for tracking ABAP Cloud readiness","line":"Walks through Clean Core Measurement (CCM), an open-source tool for tracking ABAP Cloud readiness across a system landscape: a dashboard showing Cloud Ready and Upgrade Stable status and a Technical Debt Score per system, runs recorded under administration, and a process area where custom APIs not released by SAP can be documented and excluded from the score. Reporting breaks the score down to individual objects, the unreleased APIs behind them, and which team or product cluster carries the most outstanding work.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Björn S., published 2026-08-03"},"content:051-abap-cleaner-in-vs-code-installation-and-guide":{"href":"/content/051-abap-cleaner-in-vs-code-installation-and-guide","name":"051: ABAP Cleaner in VS Code - Installation and Guide","kind":"blog","short":"Installing ABAP Cleaner in ADT for VS Code as default formatter","line":"Walks through installing ABAP Cleaner inside ABAP Development Tools for VS Code and setting it as the default formatter in place of ADT's Pretty Printer, then using its interactive rule view to compare unformatted and cleaned code and configure which rules run, at class, component or method scope. A worked example applies Clean ABAP rules to one method: removing a redundant me-> self-reference and an unneeded EXPORTING keyword, and restructuring a CHECK statement that the styleguide disallows once other statements precede it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Björn S., published 2026-08-17"},"content:052-10-minutes-from-start-to-launchpad":{"href":"/content/052-10-minutes-from-start-to-launchpad","name":"052: 10 Minutes from Start to Launchpad","kind":"blog","short":"RAP app from a root CDS view entity to Fiori launchpad annotations","line":"Walks a RAP application from a root CDS view entity through a consumption projection and its associations to a metadata extension: a facet per field group, a hidden field via UI.hidden, and a selection field on the ABAP package, all in a Customer-layer DDLX source read by the generated Fiori elements app. It then covers the parts ABAP CDS modelling and annotation stop short of — service definition and binding, generating the UI in Business Application Studio, and wiring the deployed app into the Fiori Launchpad through an IAM App and business catalog.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Björn S., published 2026-09-07"},"content:a-25x-faster-mta-yaml-build-for-cap-nodejs":{"href":"/content/a-25x-faster-mta-yaml-build-for-cap-nodejs","name":"A 25x faster mta.yaml build for SAP CAP Node.js projects","kind":"blog","short":"Speeding up the mta.yaml build for CAP Node.js projects","line":"One change to the build descriptor, arrived at after discarding the obvious alternatives — the author reports trying shell scripts, npm caching and offline installs, swapping npm for pnpm, and cds build --no-clean, all of which helped and none of which was this. The value is as much in the record of what was ruled out as in the trick itself.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-03-17"},"content:a-cap-plugin-for-flexible-number-range-management":{"href":"/content/a-cap-plugin-for-flexible-number-range-management","name":"A CAP Plugin for Flexible Number Range Management: cds-numberrange-plugin","kind":"blog","short":"Author's CAP plugin for number range management, and why plugins","line":"The author's own plugin, and the reason given for writing it is about plugins rather than about number ranges: a year of using them convinced them that this was the way to extend CAP without leaving marks on the application. Sequential document numbers are the thing it does; keeping the host project clean is the thing it argues for.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"abdulbasit, published 2025-06-17"},"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-1":{"href":"/content/a-chatgpt-like-chat-app-with-cap-and-sapui5-part-1","name":"A ChatGPT-like chat app built with modern SAP technologies (CAP, SAPUI5) – Part 1/3","kind":"blog","short":"Concepts and target design of a GPT chat app on CAP and SAPUI5","line":"The concepts before the code: what the GPT model and its API actually offer, and what the finished chat application looks like — personalities included. Written in the weeks when the ground was moving under it, and the post carries its own change log to prove it: GPT-3.5 added on 1 March, GPT-4 on 15 March, and an admission that a series planned as two posts became three.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-02-22"},"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-2":{"href":"/content/a-chatgpt-like-chat-app-with-cap-and-sapui5-part-2","name":"A ChatGPT-like chat app built with modern SAP technologies (CAP, SAPUI5) – Part 2/3","kind":"blog","short":"CAP TypeScript backend of a GPT chat app with streamed completions","line":"The backend: CAP with TypeScript, the entities holding chats and personalities, and the service that talks to the API. This is where the streamed completion and the repositories behind the handler come from, which is the part of the sample still worth lifting even though the model access has since been superseded by AI Core.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-02-24"},"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-3":{"href":"/content/a-chatgpt-like-chat-app-with-cap-and-sapui5-part-3","name":"A ChatGPT-like chat app built with modern SAP technologies (CAP, SAPUI5) – Part 3/3","kind":"blog","short":"SAPUI5 frontend of a GPT chat app, written in TypeScript","line":"The SAPUI5 frontend of the sample, and mostly an argument for writing UI5 in TypeScript: ES imports in place of sap.ui.define, a class with real private members in place of the underscore convention, and the service types generated from the CDS model copied into the UI package, so one IChats interface types the OData object the controller reads. The second half is structure — a formatter class and a singleton LayoutManager called from the XML view through core:require, a confirmation helper taking a callback, a dialog class resolving a promise, a generic createEntity<T> on a service class — all of it to keep every controller under 100 lines. What it says about arranging a UI5 app holds whatever model sits behind the chat; the tooling around it is of its date, and the post calls UI5's TypeScript support experimental.","chip":{"label":"Compatibility","tier":"poor","evidence":"1 finding"},"ai":true,"meta":"published 2023-02-27"},"content:a-clearer-view-of-your-sap-integrations-under-the-new-api-policy":{"href":"/content/a-clearer-view-of-your-sap-integrations-under-the-new-api-policy","name":"A Clearer View of Your SAP Integrations Under the New API Policy","kind":"blog","short":"Skill assessing SAP interfaces against SAP API Policy v.4.2026a","line":"The SAP API Policy Evidence Skill assesses one SAP interface or usage pattern at a time against SAP API Policy v.4.2026a, reading evidence from five MCP servers, among them servers for the Business Accelerator Hub and SAP Notes, mcp-sap-docs and a read-only ARC-1, and returns one of four labels with a confidence level, an evidence table, residual risk and questions for SAP. It gives no compliant or not compliant answer on purpose, because SAP's FAQ (Q49) declines to publish a binding decision matrix, and it sends legal, commercial and roadmap questions to SAP and lowers its confidence when a source is not connected. Four sample runs show the method, among them ODP-RFC extraction labelled likely not aligned under SAP Note 3255746 and the same API_SALES_ORDER_SRV assessed differently for an autonomous agent behind a custom gateway and for a Boomi middleware flow; the SAP Notes and Business Accelerator Hub servers read SAP sites through a browser login, which the post says to use at your own risk.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-06-02"},"content:a-cross-application-fiori-app-to-print-adobe-forms":{"href":"/content/a-cross-application-fiori-app-to-print-adobe-forms","name":"A cross application Fiori APP to print Adobe Forms","kind":"blog","line":"Walks through building a custom Fiori app that turns an existing Adobe print form (purchase orders, billing documents) into a downloadable PDF: a function module calls the standard form-data-provider interface to render the form, a SEGW OData service streams the result through a media entity's GET_STREAM, and a parameterised CDS view feeds a Fiori elements list with a download link per document. Two custom Z-tables supply the name-value pairs the form template needs, which the author flags as a stopgap for values that could be derived at runtime instead.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"padchalingam, published 2025-07-22"},"content:a-fiori-launchpad-sandbox-for-all-your-cap-based-projects-overview":{"href":"/content/a-fiori-launchpad-sandbox-for-all-your-cap-based-projects-overview","name":"A Fiori Launchpad Sandbox for all your CAP-based projects - Overview","kind":"blog","short":"Origins of cds-launchpad-plugin, a launchpad sandbox for CAP","line":"Where cds-launchpad-plugin came from, told as a learning exercise: the author wanted a real problem to teach himself TypeScript on, and picked the thing he kept redoing in every CAP project — a launchpad to see all the UI applications in one place. The origin post for an entry whose 2023 update is also indexed here.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2022-03-14"},"content:a-fiori-launchpad-sandbox-sample-project-setup":{"href":"/content/a-fiori-launchpad-sandbox-sample-project-setup","name":"A Fiori Launchpad Sandbox for all your CAP-based projects – Sample project setup","kind":"blog","short":"Wiring the cds-launchpad-plugin into a CAP sample project","line":"The hands-on half published the same day as the overview: the launchpad module wired into the CAP sample repository, step by step from a global cds-dk install. Same-day pairs like this are worth keeping together — the overview argues, this one is the thing you follow.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2022-03-14"},"content:a-guide-to-cds-metadata-extensions-fiori-app-generation-and-sap-ui5-controller-e":{"href":"/content/a-guide-to-cds-metadata-extensions-fiori-app-generation-and-sap-ui5-controller-e","name":"A Guide to CDS Metadata Extensions, Fiori App Generation and SAP UI5 Controller Extensions","kind":"blog","short":"RAP Fiori elements app with metadata and controller extensions","line":"Walks through a RAP-based Fiori elements app end to end: layering UI annotations onto a CDS view through a separate ABAP metadata extension object, gated by @Metadata.allowExtensions on the base view and ordered across extensions by a required @Metadata.layer value. Generates the app in SAP Business Application Studio from the published OData V4 service's merged $metadata document, then adds an SAP UI5 controller extension — registered in manifest.json against a Fiori elements lifecycle hook — only for behaviour the annotations cannot express.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ankitapaul229, published 2026-07-27"},"content:a-handy-custom-report-to-scan-sap-cds-views-for-usage-of-search-strings":{"href":"/content/a-handy-custom-report-to-scan-sap-cds-views-for-usage-of-search-strings","name":"A Handy Custom Report to Scan SAP CDS Views for Usage of Search Strings","kind":"blog","short":"Custom SE38 report scanning Z CDS views for search strings","line":"A custom SE38 report, ZSCAN_CDS_VIEWS, reads each Z-prefixed CDS view's DDL source through the function module /ABEX/SEFW_MOD_CVA_HANA and scans it for a list of search strings, listing the view and matching code line in an ALV grid. The author built it because ABAP Development Tools for Eclipse's ABAP Source Search, the code search SAP ships, is unwieldy for scanning many custom views at once or searching several strings together.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"shasankgupta024, published 2026-01-08"},"content:a-major-hana-cli-version-built-with-the-help-of-ai":{"href":"/content/a-major-hana-cli-version-built-with-the-help-of-ai","name":"Major New Version of the hana-cli: How It Was Built with the Help of AI (and a Lot of Human Review)","kind":"blog","short":"Building a major hana-cli version with AI and human review","line":"More features in two months than the previous two years — and the sentence after that is the reason to keep it: quality still needed the human review, and the post is about the rough edges rather than the headline. A maintainer reporting on their own process.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"thomas_jung, published 2026-03-11"},"content:a-method-to-create-an-adobe-form-attachment-for-a-work-item-using-the-class-conc":{"href":"/content/a-method-to-create-an-adobe-form-attachment-for-a-work-item-using-the-class-conc","name":"A method to create an Adobe form attachment for a work item using the class concept.","kind":"blog","short":"ABAP workflow class attaching an Adobe form PDF to a work item","line":"Walks through an ABAP workflow class, ZCL_WF_PDF, whose methods call an Adobe form through a Form-Builder-generated function module, convert the returned PDF between hexadecimal string and binary with SCMS_XSTRING_TO_BINARY and SCMS_BINARY_TO_XSTRING, and attach it to a work item via SAP_WAPI_ATTACHMENT_ADD and SAP_WAPI_WRITE_CONTAINER, with the class, background-task and SWDD workflow steps shown in full. It explains document output's ABAP route, rendering a PDF through the Form Builder and getting it back into the program, and a route into attachments's ABAP side distinct from Generic Object Services: a file attached to an SAP Business Workflow work item instead.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Mithun_Sharma1, published 2026-08-21"},"content:a-modern-workflow-for-sap-cloud-integration-with-cap-and-azure-devops":{"href":"/content/a-modern-workflow-for-sap-cloud-integration-with-cap-and-azure-devops","name":"A modern workflow for SAP Cloud Integration with CAP and Azure DevOps","kind":"blog","short":"CAP service and Azure DevOps around SAP Cloud Integration development","line":"CAP used to build tooling rather than an application: the development workflow for Cloud Integration is limited to what the Integration Suite offers, so the author puts a CAP service and Azure DevOps around it. An unusual use of the framework, and the reason to read it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"marcel_schork62, published 2023-06-27"},"content:a-natural-choice-sap-aif-can-now-expose-events-to-advanced-event-mesh-to-power-y":{"href":"/content/a-natural-choice-sap-aif-can-now-expose-events-to-advanced-event-mesh-to-power-y","name":"A Natural Choice: SAP AIF can now expose events to Advanced Event Mesh to power your EDA","kind":"blog","short":"AIFAEM, SAP AIF component publishing events to Advanced Event Mesh","line":"Announces AIFAEM, a new software component of SAP Application Interface Framework that lets SAP ECC and older SAP S/4HANA backends create custom events from BOR objects and IDocs, in CloudEvents format, and publish them to SAP Integration Suite, advanced event mesh — closing the gap for backends that predate S/4HANA's own RAP-based standard events. It ships as the ABAP add-on AIFAEM731 (SAP NetWeaver 7.31, i.e. ECC) or AIFAEM800 (NetWeaver 7.55 and later), and its usage is included in an advanced event mesh subscription.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"KStrothmann, published 2024-07-29"},"content:a-practical-real-time-cti-widget-for-sap-sales-cloud-v2":{"href":"/content/a-practical-real-time-cti-widget-for-sap-sales-cloud-v2","name":"A Practical Real-Time CTI Widget for SAP Sales Cloud V2","kind":"blog","short":"CTI widget for SAP Sales Cloud V2 with CAP, WebSocket and UI5","line":"A small CAP backend, a WebSocket channel and a UI5 widget in an iframe — enough to get telephony events into Sales Cloud without any custom backend inside the CRM. The smallness is the design.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"gizemsoylutr, published 2025-11-28"},"content:a-simple-example-of-a-sap-rap-application-based-on-legacy-api-without-uuid-keys":{"href":"/content/a-simple-example-of-a-sap-rap-application-based-on-legacy-api-without-uuid-keys","name":"A simple example of a SAP RAP Application based on Legacy API without UUID keys","kind":"blog","short":"Managed RAP business object over a legacy API with late numbering","line":"Walks through building a managed RAP business object over the Flight Reference Scenario's Travel and Booking entities with unmanaged save and late numbering, so CRUD operations route through the legacy /DMO/FLIGHT_TRAVEL_CREATE, _UPDATE and _DELETE function modules instead of generated persistence, a worked case of ABAP's transactional model. Covers the ADJUST_NUMBERS and SAVE_MODIFIED saver methods that map preliminary draft keys to the legacy-assigned travel and booking IDs, and a GetDefaultsForBookings action that proposes the next booking ID during draft handling.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"cseijas, published 2025-09-01"},"content:abap-and-agentic-ai-the-hidden-problem-in-real-projects":{"href":"/content/abap-and-agentic-ai-the-hidden-problem-in-real-projects","name":"ABAP and Agentic AI: The Hidden Problem in Real Projects","kind":"blog","short":"Three questions that split AI use across ABAP, UI5 and CAP projects","line":"AI in SAP development splits on three questions, how the model gets context, where writing happens and who controls the setup: UI5 and CAP work in local files where git, reviews, tests and pipelines already gate a change, while on-stack ABAP writes land directly in a shared development system. Six patterns follow, framed after a paper by Lars Hvam, from AI in the IDE to off-stack development with abapGit, and the post settles on a hybrid where the agent reads the system over ADT or MCP and writes through a gated git flow. Read access alone is put at maybe 80 percent of the work, and what agent access to your code still lacks is named as tool governance: read-only defaults, package restrictions, blocking free SQL, per-user identity and auditing.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-04-22"},"content:abap-cloud-logger":{"href":"/content/abap-cloud-logger","name":"ABAP Cloud Logger","kind":"blog","short":"MIT-licensed logger wrapping ABAP Cloud's cl_bali_* classes","line":"Wraps ABAP Cloud's cl_bali_* Application Log classes in ZCL_CLOUD_LOGGER, an open-source, MIT-licensed logger installed via abapGit. One fluent entry point takes free text, sy-msg-style messages, exceptions, BAPIRET2 tables or arbitrary data serialised to JSON, and multiton instances keyed on object/subobject/external number let unrelated code share a logger without passing instances around. It adds sticky per-iteration context, built-in timing, and a readable trail of the cx_bali_runtime errors the class swallows internally.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Greltel, published 2026-04-30"},"content:abap-code-to-wait-for-the-end-of-inbound-bgrfc-type-q-units":{"href":"/content/abap-code-to-wait-for-the-end-of-inbound-bgrfc-type-q-units","name":"ABAP code to wait for the end of \"inbound bgRFC type Q\" units","kind":"blog","short":"ABAP helper class that waits for inbound bgRFC type Q units to finish","line":"Walks through inbound bgRFC type Q — ABAP's queue-based flavor of async processing built on background remote function calls — and gives a helper ABAP class that polls cl_qrfc_client_inbound for each unit's and queue's state until every unit submitted across a set of parallel qRFC queues has finished. The method assumes no single unit spans more than one inbound queue, and the author flags the classes it relies on, cl_qrfc_client_inbound=>get_unit_state and get_queue_state, as unverified for this use.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Sandra_Rossi, published 2025-10-07"},"content:abap-create-dump":{"href":"/content/abap-create-dump","name":"ABAP - Create dump","kind":"blog","short":"Terminating an ABAP program on purpose with RAISE SHORTDUMP","line":"Shows how to terminate an ABAP program on purpose with RAISE SHORTDUMP — from a freshly created exception instance, or one already caught in a TRY/CATCH where continuing no longer makes sense — so a hard-to-diagnose failure leaves a dump behind instead of running on silently. The second half reads that dump back in ABAP Development Tools for Eclipse: the Feed Reader notification, the compressed view against the classic ST22-style view, and sections such as Active Calls and Source Code Extract, the same ADT troubleshooting path debugging places alongside the ABAP Debugger for ABAP Cloud.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Björn S., published 2026-09-11"},"content:abap-development-automation-with-arc-1-and-github-workflows":{"href":"/content/abap-development-automation-with-arc-1-and-github-workflows","name":"ABAP Development Automation with ARC-1 and GitHub Workflows","kind":"blog","short":"GitHub Actions running abaplint, ABAP Unit and ATC through ARC-1","line":"A sample repository puts an ABAP package into GitHub with abapGit and connects GitHub Actions to ARC-1 on BTP through an API key with no write tools, so abaplint on the diff, ABAP Unit and ATC through SAPDiagnose, label-triggered Copilot and Claude reviews, and ST22 dump triage all run as checks on a pull request. The review case is PR #14, where a SAPRead of the activated method let Claude state that a direct SELECT from MARA was new in the PR and not yet active in SAP, which a diff-only review cannot know. The test gate reads activated objects, so a team that pushes before activation needs a sandbox or a pull-and-activate step, and pulling a merged change back into SAP is named as the next step, not built.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-05-12"},"content:abap-development-tools-for-visual-studio-code-is-now-available-on-the-vs-code-ma":{"href":"/content/abap-development-tools-for-visual-studio-code-is-now-available-on-the-vs-code-ma","name":"ABAP development tools for Visual Studio Code is now available on the VS Code marketplace!","kind":"blog","short":"Marketplace release of ABAP development tools for VS Code","line":"Announces the marketplace release of ABAP development tools for Visual Studio Code, an extension that works against any ABAP system already reachable from ADT for Eclipse and is focused on RAP UI service development, so the Fiori/SAPUI5 frontend and the ABAP backend can be built in the same tool. It ships a built-in ADT MCP Server, disabled by default and switched on from the extension settings, and points readers to a documentation template for capturing ABAP-specific rules in a project's AGENTS.md file for chat agents such as Microsoft Copilot.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"thomasalexander_ritter, published 2026-06-01"},"content:abap-development-tools-for-visual-studio-code-patch-1-0-1-released":{"href":"/content/abap-development-tools-for-visual-studio-code-patch-1-0-1-released","name":"ABAP development tools for Visual Studio Code: Patch 1.0.1 released","kind":"blog","short":"Patch 1.0.1 of ABAP development tools for VS Code","line":"A patch to SAP's ABAP development tools for Visual Studio Code, released after two weeks of user feedback: RFC destinations with password logon return, undoing what the first release had dropped, and the extension now ships the AGENTS.md template its documentation already carried, so a project gets agent guidance built in rather than copied by hand. The author still recommends duplicating the template and adding project-specific instructions, since the time spent on that onboarding is what the agent's results depend on.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"thomasalexander_ritter, published 2026-06-12"},"content:abap-development-tools-for-visual-studio-code-version-1-1-released":{"href":"/content/abap-development-tools-for-visual-studio-code-version-1-1-released","name":"ABAP development tools for Visual Studio Code: Version 1.1 released","kind":"blog","short":"Version 1.1 of ABAP development tools for VS Code, two new MCP tools","line":"Version 1.1 of ABAP development tools for Visual Studio Code adds two tools to the extension's local ADT MCP Server: a unified, git-like diff for a transport request, and a runner for ABAP Test Cockpit checks, both meant for an agent to call rather than a person to click through. Both are new instances of what agent access to your code already covers for ABAP — reading and acting on a real system through ADT — reaching now into a transport's changes and a check run rather than only source and objects.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"thomasalexander_ritter, published 2026-07-21"},"content:abap-development-under-the-clean-core-paradigm-from-bapis-to-bo-and-cds":{"href":"/content/abap-development-under-the-clean-core-paradigm-from-bapis-to-bo-and-cds","name":"ABAP development under the Clean Core paradigm: From BAPIs to BO and CDS","kind":"blog","short":"Moving from BAPIs to BOs and CDS under Level Based Clean Core","line":"SAP's Level Based Clean Core classification (2025) grades ABAP APIs A through D by cloud readiness, and this piece uses the S/4HANA Cloudification Repository's own count — of 3,847 BAPI function modules for SAP Cloud ERP Private, only 23 are Level A — to show how much Classic API (Level B) code needs to move to RAP business objects instead. A worked Bank Master example matches each BAPI to its EML statement or ABAP CDS SELECT equivalent, and states when that move is actually required: mandatory once on SAP Public Cloud, optional but advisable on Private Cloud/On-Premise as BAPIs stop gaining new fields.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-05-21"},"content:abap-in-practice-creating-a-setup-app":{"href":"/content/abap-in-practice-creating-a-setup-app","name":"ABAP in Practice - Creating a Setup App","kind":"blog","short":"Unmanaged custom entity behind a static Fiori Elements setup app","line":"Walks through an unmanaged custom entity behind a static Fiori Elements setup app: a factory maps step IDs to implementation classes behind one interface, and the transactional model sets every CRUD operation internal while adding CheckStep and ExecuteStep actions instead of generated persistence. It buffers the executed step for the save sequence and moves an API that issues a COMMIT to a background process via bgPF, since a COMMIT inside the action is forbidden in strict mode.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Björn S., published 2026-08-28"},"content:abap-mcp-let-ai-do-real-development-in-your-sap-system":{"href":"/content/abap-mcp-let-ai-do-real-development-in-your-sap-system","name":"ABAP + MCP: Let AI Do Real Development in Your SAP System","kind":"blog","short":"abap-adt-mcp, an MCP server giving AI agents ABAP development over ADT","line":"abap-adt-mcp is an open-source MCP server that gives an AI agent full ABAP development capability over ADT: it searches, reads, edits, activates and unit-tests objects, and runs ATC checks, on a connected S/4HANA Cloud or on-premise system, acting as the signed-in developer. It runs on abap-adt-api, the same REST client Eclipse's own ADT tooling uses, and sits beside SAP's own ADT MCP Server, shipped with ADT for VS Code and Eclipse under a different server key, and marianfoo's abap-docs, a read-only server over the ABAP Keyword Documentation and Clean ABAP. Each destination carries a policy — read-only, allowed packages, denied tables and tools — the server checks before every call, and an optional audit file logs each tool call with its outcome and policy gate.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Willian_Saez, published 2026-09-03"},"content:abap-s-parallel-processing-frameworks-practical-guide-to-performance-tuning-of-m":{"href":"/content/abap-s-parallel-processing-frameworks-practical-guide-to-performance-tuning-of-m","name":"ABAP's Parallel Processing Frameworks: Practical Guide to Performance Tuning of Mass Data Processing","kind":"blog","short":"Survey of aRFC, bgRFC and six ABAP parallel processing frameworks","line":"Surveys ABAP's two parallel processing technologies, asynchronous RFC (aRFC) and the queued, exactly-once background RFC (bgRFC), and the six frameworks built on top of them, SPTA, SHDB, CL_ABAP_PARALLEL, the Background Processing Framework, the Parallel Processing Framework and the Mass Data Framework, each by its own entry point: a function module, a factory class or a Customizing transaction. A Qualitative Weight and Summ matrix then compares the frameworks across criteria such as package creation, load balancing and documentation quality, stated as the author's own subjective scoring for one project rather than a ranking.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"marc_steinert, published 2025-09-29"},"content:ac-agentic-ai-and-ai-agents":{"href":"/content/ac-agentic-ai-and-ai-agents","name":"Agentic AI & AI Agents","kind":"reference-architecture","short":"SAP target picture for AI agents with Joule and A2A","line":"SAP's target picture for AI agents: Joule as the engagement layer — Joule Work, Joule Assistants, Joule Agents — with custom agents from customers, partners and SAP teams connecting through A2A for agent-to-agent collaboration and MCP for tool connectivity, on the SAP Business AI Platform. It says up front that parts are not generally available yet, in particular bidirectional communication with third-party agents through the Agent Gateway, so it reads as direction with the building blocks named rather than a design to copy today.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-08-27"},"content:ac-agentic-engineering-for-sap-btp-extensions":{"href":"/content/ac-agentic-engineering-for-sap-btp-extensions","name":"Agentic Engineering for SAP BTP Extensions","kind":"reference-architecture","short":"Agent harness generating BTP extension code with MCP servers","line":"An agent harness coordinates code generation across isolated Git worktrees, using a skills registry, SAP CAP MCP Server, Fiori MCP Server and UI5 Web Components MCP Server for development context. The diagram shows LiteLLM as a model proxy in front of SAP AI Core, while automated checks and review gate the generated changes. The worked scenario is CAP-based extensions on BTP, with specifications written before generation and reusable skills governed across teams.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:ac-ai-native-north-star-architecture":{"href":"/content/ac-ai-native-north-star-architecture","name":"AI-native North Star architecture — Platform Layer","kind":"reference-architecture","short":"Platform layer of the North Star architecture for AI agents","line":"The platform layer of SAP's North Star architecture, the chapter that says where agents run and what a developer builds them with. It names an AI Golden Path built on the SAP Cloud Application Programming Model, the ABAP Cloud development model with RAP and the SAP Fiori design system, and a managed agent runtime on SAP BTP that is designed to provide software development kits for building agents in any framework, an agent sandbox, container-hosted execution, a skills registry and continuous evaluations, which is the ground agent tooling covers. Agents are extended without changing their code through four patterns, the first of them tool extensibility through the Model Context Protocol, the concern MCP servers is named for; the process-layer chapter adds that a pro-code path with a standardised agent SDK and a prompt-driven path through the Joule Studio solution produce the same code artifact on the same runtime. It describes a design SAP intends rather than products that exist, and the SDK and the registry it names have no entry here yet.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-05-13"},"content:ac-api-managed-integration":{"href":"/content/ac-api-managed-integration","name":"API Managed Integration","kind":"reference-architecture","short":"API Management in SAP Integration Suite as proxies in front of apps","line":"SAP's reference architecture for API-managed integration, which puts the API Management capability of SAP Integration Suite in front of business applications as API proxies that intercept each call to apply security policies, transformations and governance and to collect usage metrics. SAP defines it as a pattern that complements the other integration patterns, and draws three routes behind the proxy: a managed API forwarded to its provider for simple transformations and protocol adaptations, the Graph capability exposing data from several sources as one connected API, and Cloud Integration for mediation beyond API Management's scope, with the edge integration cell runtime for managing APIs in a customer-managed Kubernetes environment. SAP states that it delivers no predefined scenarios for this pattern, so the proxies and policies are the customer's or partner's to build.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-08-01"},"content:ac-application-to-application-integration":{"href":"/content/ac-application-to-application-integration","name":"Application to Application Integration","kind":"reference-architecture","short":"Near real-time messages between business applications","line":"SAP's reference architecture for application-to-application integration, where messages carrying transactional data such as sales orders pass between business applications in near real time and each one triggers the next process step. When the sender's and receiver's APIs do not match, Cloud Integration in SAP Integration Suite sits between them to determine receivers, filter, map structures and convert protocols, which is the ground of integration flows; SAP Connectivity service, Cloud Connector and SAP Destination service reach on-premise receivers, and the edge integration cell runtime keeps processing inside a customer-managed landscape where compliance requires it. Direct exchange without middleware is allowed when the two APIs already align, asynchronous communication is the default the page states, and it is drawn at the level of the pattern, following SAP's Integration Solution Advisory Methodology, without designing any one flow.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-08-01"},"content:ac-business-to-business-integration":{"href":"/content/ac-business-to-business-integration","name":"Business to Business Integration","kind":"reference-architecture","short":"Exchanging business documents with trading partners over EDIFACT, IDoc","line":"SAP's reference architecture for business-to-business integration, the exchange of business documents with customers, suppliers and other trading partners over agreed standards such as EDIFACT, ANSI X.12 and IDoc and protocols such as AS2. Its design-time steps are Cloud Integration in SAP Integration Suite, the predefined content of SAP Business Accelerator Hub, and Integration Advisor, which defines message implementation and mapping guidelines and generates runtime artifacts from them; Trading Partner Management then turns partner profiles into agreements pushed to the Partner Directory, and generic integration flows on Cloud Integration read those agreements at runtime to exchange messages with each partner. The alternatives it names are API-based exchange where an industry has standardised its APIs, and SAP Business Network with the managed gateway for spend management in place of connecting partners one by one.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-08-01"},"content:ac-connect-business-processes-with-sap-master-data-integration":{"href":"/content/ac-connect-business-processes-with-sap-master-data-integration","name":"Connect Business Processes with SAP Master Data Integration","kind":"reference-architecture","short":"Keeping master data consistent with SAP Master Data Integration","line":"SAP's reference architecture for keeping master data such as materials, business partners and cost centres consistent across applications with SAP Master Data Integration, a central hub that stores every change in an event log and distributes it to the solutions that consume it. Cloud Integration in SAP Integration Suite carries what the hub does not reach, SAP solutions it does not yet support and third-party or on-premise systems, through an SAP Master Data Integration adapter, which is where the design meets integration flows; newer SAP S/4HANA releases connect to the hub without it. Consolidation, data quality and central governance are outside the architecture and left to SAP Master Data Governance, and SAP Master Data Integration itself has no entry in the atlas yet.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-08-01"},"content:ac-designing-event-driven-applications":{"href":"/content/ac-designing-event-driven-applications","name":"Designing Event-Driven Applications","kind":"reference-architecture","short":"Event-driven applications with SAP Cloud Application Event Hub on BTP","line":"SAP's guidance for building applications on event-driven architecture with BTP services. It sets out a two-part strategy: SAP Cloud Application Event Hub for events between SAP cloud applications and BTP, and the SAP Integration Suite family for dedicated event brokers in hybrid landscapes. Its sub-pages then cover EDA patterns, design considerations and AWS and Azure IoT integration. The framing is integration between systems; the in-process outbox and queueing inside one CAP service are not its subject.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-10-10"},"content:ac-devops-with-sap-btp":{"href":"/content/ac-devops-with-sap-btp","name":"DevOps with SAP BTP","kind":"reference-architecture","short":"Delivery pipelines for BTP Cloud Foundry apps with SAP CI/CD service","line":"How SAP frames a delivery pipeline for applications on BTP Cloud Foundry: continuous integration through the SAP Continuous Integration and Delivery service and its pipeline templates for CAP and Fiori, transport and change management across environments, and a section on reasonable alternatives for teams with existing CI infrastructure. Culture first, tools second, and explicit that the setup differs on other BTP environments.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-06-06"},"content:ac-edge-integration-cell-on-hyperscalers":{"href":"/content/ac-edge-integration-cell-on-hyperscalers","name":"Edge Integration Cell on Hyperscalers","kind":"reference-architecture","short":"Edge Integration Cell running integration flows in a customer cluster","line":"SAP's architecture for Edge Integration Cell, the runtime of SAP Integration Suite that executes integration flows in a Kubernetes cluster the customer runs, while design, monitoring and governance stay on SAP BTP and the runtime reaches BTP over outbound-only channels. The main page gives the reasons SAP names for it: data residency, security policies that forbid inbound access, and latency to a distant BTP region. Three sub-pages draw the same setup on AWS, Azure and Google Cloud, each with a private network across three availability zones, a managed Kubernetes cluster, managed PostgreSQL and Redis, sizing left to an SAP Note, and each says it outlines a small production deployment to be treated as a starting point.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-04-18"},"content:ac-establish-a-central-entry-point-with-sap-build-work-zone":{"href":"/content/ac-establish-a-central-entry-point-with-sap-build-work-zone","name":"Establish a central entry point with SAP Build Work Zone","kind":"reference-architecture","short":"SAP Build Work Zone business site as one entry point to applications","line":"SAP's reference architecture for a business site in SAP Build Work Zone, standard edition or SAP Build Work Zone, advanced edition as one entry point to business applications, processes, information and communication, on the web or in the Joule Work mobile app. Three of its eight flow steps are how content gets in, the ground launchpad and site content covers: custom apps through the channel to the subaccount's SAP HTML5 Application Repository service for SAP BTP, other content through content providers that expose it over APIs from cloud or on-premise systems and content packages uploaded as files, and SAP Cloud Transport Management or manual export and import to move it between environments. Users and role assignments come from Cloud Identity Services, and the components inside the subscription, among them Notifications, SAP Mobile Services and UI Theme Designer, cannot be decoupled from the product, so a custom mobile app needs its own SAP Mobile Services subscription.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-05-22"},"content:ac-establish-a-central-inbox-with-sap-task-center":{"href":"/content/ac-establish-a-central-inbox-with-sap-task-center","name":"Establish a central inbox with SAP Task Center","kind":"reference-architecture","short":"SAP Task Center as one inbox for tasks of several SAP applications","line":"SAP's reference architecture for SAP Task Center as one inbox for the tasks of several SAP applications, opened in the Task Center web app or as To-Dos in SAP Start and SAP Mobile Start, which is the inbox half of task and approval UIs. It rests on Cloud Identity Services: every task provider must work with Identity Authentication, its users must carry the Global User ID and so must the recipients of each task, and sign-on between the provider and Identity Authentication is what lets a user navigate from Task Center into the provider. Task Center reaches providers through destinations in a customer subaccount, with Cloud Connector for on-premise SAP S/4HANA.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-02-11"},"content:ac-explore-your-hyperscaler-data-with-sap-business-data-cloud":{"href":"/content/ac-explore-your-hyperscaler-data-with-sap-business-data-cloud","name":"Explore your Hyperscaler data with SAP Business Data Cloud","kind":"reference-architecture","short":"Joining hyperscaler data with SAP data in SAP Business Data Cloud","line":"SAP's map of the ways data held on hyperscaler and partner platforms is joined with SAP data in SAP Business Data Cloud, with a sub-page each for AWS, Azure, Google Cloud, Databricks and Snowflake. It sets four modes side by side: BDC Connect shares data products in both directions over the Delta Sharing protocol from the object store layer, while in the SAP Datasphere layer federation reads remote tables in place, Replication Flows copy SAP data out to stores such as Amazon S3 or Google BigQuery, and Data Flows import files and transform them into Datasphere tables, the last three being the ground loading a warehouse covers. The Snowflake and BigQuery connectors are dated to 2026 releases, and a closing page lists what slows federation, from source and tenant in different regions to queries that do not filter and aggregate at the source.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-05-08"},"content:ac-federated-machine-learning-with-sap-datasphere":{"href":"/content/ac-federated-machine-learning-with-sap-datasphere","name":"Federated Machine Learning with SAP Datasphere","kind":"reference-architecture","short":"Training models on external ML platforms against SAP Datasphere data","line":"SAP's design for training predictive models on an external machine learning platform against SAP Datasphere data that is not replicated to that platform. The open-source FedML Python library runs in the platform's notebook, connects to Datasphere over Python/SQLDBC and reads the analytic models in which Datasphere unifies SAP and non-SAP sources; a trained model can then be deployed to SAP AI Core, or in several sub-pages to SAP BTP, Kyma runtime, which is the predictive models path where training happens outside SAP. Sub-pages cover Amazon SageMaker, Azure Machine Learning, Google Vertex AI, Databricks, NVIDIA RAPIDS on GPUs and IBM watsonx.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-01-23"},"content:ac-generative-ai-on-sap-btp":{"href":"/content/ac-generative-ai-on-sap-btp","name":"Generative AI on SAP BTP","kind":"reference-architecture","short":"Generative AI app on BTP with CAP, HANA Cloud vectors and AI Core","line":"The reference shape for a generative AI application on BTP: a CAP backend, SAP HANA Cloud holding data and embeddings for similarity search through its vector engine, and the Generative AI Hub in SAP AI Core as the single access point to foundation models. It shows retrieval-augmented generation on that stack and names the CAP plugins and SDKs that connect the pieces, for both Cloud Foundry and Kyma.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-09-02"},"content:ac-hana-ai-toolkit-local-mcp-server":{"href":"/content/ac-hana-ai-toolkit-local-mcp-server","name":"HANA AI Toolkit — Local MCP Server","kind":"reference-architecture","short":"MCP server exposing hana-ml as governed tools against HANA Cloud","line":"An MCP server that turns the hana-ml Python library into governed tools an agent can call against a HANA Cloud instance, shipped in the hana-ai toolkit and exposed over stdio, SSE and streamable HTTP. Its one firm rule is attributable execution: an audit module writes the MCP-side identity — agent, model, session, tool, redacted arguments — into the HANA connection before any SQL runs, and fails the call if that write fails. A worked example of governance on an MCP tool surface, from SAP's data side rather than CAP's.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-06-15"},"content:ac-integrate-and-extend-with-sap-build-process-automation":{"href":"/content/ac-integrate-and-extend-with-sap-build-process-automation","name":"Integrate and Extend with SAP Build Process Automation","kind":"reference-architecture","short":"SAP Build Process Automation integrating SAP and non-SAP solutions","line":"SAP's reference architecture for SAP Build Process Automation integrating and extending SAP and non-SAP solutions in cloud and hybrid landscapes, the ground process automation covers. Processes start from events, APIs, schedules or forms, the forms built in SAP Build Process Automation, as UI5 applications or in SAP Build Apps; they reach other systems through the SAP Connectivity service with actions over APIs from sources that include CAP and RAP OData destinations and SAP Business Accelerator Hub specifications, and users reach them through SAP Build Work Zone and SAP Mobile Start, with SAP Task Center as the place tasks are managed. Decisions, Process Visibility, Processes and Automations come inside the one subscription and cannot be decoupled from it; CAP appears only as a source of API actions, and the examples are business scenarios such as mass job requisitions in SAP SuccessFactors.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-05-14"},"content:ac-integrating-and-extending-joule":{"href":"/content/ac-integrating-and-extending-joule","name":"Integrating and Extending Joule","kind":"reference-architecture","short":"SAP Joule across SAP cloud applications with skill catalogs","line":"SAP's reference architecture for SAP Joule across SAP cloud applications: a request is checked against a Scenario Catalog of the applications' skills and a Knowledge Catalog answered by retrieval-augmented generation, combined with the user's roles and history, sent to an LLM available through the generative AI hub, and, where a Joule function is needed, turned into a call to the backend. Its identity page is the authentication path: each user sits in the Identity Directory of Cloud Identity Services with a Global User ID, Identity Provisioning synchronises role assignments into SAP Build Work Zone, whose navigation service decides which functions a user may call, and the Destination service exchanges the user's token to call a function in the user's name. Its extension page covers Joule Studio in SAP Build, where Joule skills automate rule-based tasks over APIs and AI agents plan and reason with models and document grounding from SAP AI Core, the ground agent tooling covers; a later Joule Studio page describes a managed Joule Studio Runtime on the SAP Business AI Platform, which has no entry here.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-03-16"},"content:ac-medallion-reference-architecture-for-big-data-processing-in-sap-hana-cloud":{"href":"/content/ac-medallion-reference-architecture-for-big-data-processing-in-sap-hana-cloud","name":"Medallion Reference Architecture for Big Data Processing in SAP HANA Cloud","kind":"reference-architecture","short":"Medallion layout for big data in SAP HANA Cloud and data lake files","line":"SAP's medallion layout for SAP HANA Cloud: structured, semi-structured and unstructured data lands raw in HANA Cloud, data lake files as the bronze layer, is cleansed into a common structure in silver, held in data lake files or the HANA database, and is curated and read-optimised in gold, from where it can also be exposed as a Delta Share. The staged path from raw to consumable is the ground loading a warehouse covers, with Spark jobs and SAP Datasphere data flows named as ways to move data between layers and SAP Analytics Cloud among the consumers of gold. It leaves the ingestion method open, to be chosen by source, freshness and performance, and names no pipeline or schedule beyond that.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-04-03"},"content:ac-multi-region-ha-dr-resiliency-patterns":{"href":"/content/ac-multi-region-ha-dr-resiliency-patterns","name":"Architecting Multi-Region HA/DR resiliency patterns","kind":"reference-architecture","short":"Multi-region HA/DR patterns for BTP applications","line":"Patterns for running BTP applications across regions when the default multi-availability-zone resilience is not enough: DNS-based load balancing across regional endpoints with Azure Traffic Manager, Route 53 or Cloud DNS, replication of data and configuration between regions, and the fundamentals of single-region versus multi-region resiliency in its sub-pages. BTP services are multi-AZ by default; a multi-region setup is something the customer architects, and this is SAP's description of how.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-02-19"},"content:ac-multitenant-saas-application-using-cap":{"href":"/content/ac-multitenant-saas-application-using-cap","name":"Multitenant SaaS Application using CAP","kind":"reference-architecture","short":"Multitenant SaaS application on BTP built with CAP","line":"SAP's reference architecture for a multitenant SaaS application on BTP built with CAP: one deployment serving many tenants with logically separated data, the subscription and onboarding flow, and the BTP services the design leans on. Written for partners and line-of-business teams building on BTP, and it is SAP's own side of the shape multitenancy takes on BTP.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-01-31"},"content:ac-sap-document-ai":{"href":"/content/ac-sap-document-ai","name":"SAP Document AI","kind":"reference-architecture","short":"SAP Document AI composed on BTP for document extraction","line":"SAP's reference architecture for SAP Document AI, first as SAP composes the service on BTP for document extraction: OCR, pretrained models, customer-defined schemas and LLM calls through SAP AI Core and its Prompt Registry in one pipeline, with tenant-isolated persistence in SAP HANA Cloud, PostgreSQL and an object store. Its scenario pages then lay out a solution in three layers: intake through Outlook and SharePoint inbound channels, the workspace UI, the Joule Work mobile app or the upload API; classification and extraction with a confidence score per field, automatic confirmation above a threshold and review of the rest in the workspace; and posting through outbound channels, directly to a REST API, through an SAP Integration Suite flow, or through a CAP service that maps the fields and calls SAP S/4HANA over OData. Enrichment beyond the service's own master data lookup is left to a CAP application or an Integration Suite flow triggered from an outbound channel, and direct API posting leaves error handling, retries and monitoring to the application.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-06-03"},"content:ac-sap-hana-cloud-as-an-esri-geodatabase":{"href":"/content/ac-sap-hana-cloud-as-an-esri-geodatabase","name":"SAP HANA Cloud as an Esri Geodatabase","kind":"reference-architecture","short":"Esri ArcGIS geodatabase inside SAP HANA Cloud","line":"SAP's design for running an Esri ArcGIS Enterprise geodatabase inside SAP HANA Cloud, so that geometries and SAP business data sit in one database and are joined in a HANA calculation view, which is the spatial part of graph, spatial and document data. It traces three personas: an analyst in ArcGIS Pro building query layers over that view, a developer whose CAP application models spatial types such as ST_Point in CDS, and an analyst using a Fiori app on top of such an application. The deployment advice stops at placement: ArcGIS Server and HANA Cloud go in the same region and availability zone, because Esri's certified architectures allow under 5 milliseconds of network latency between them.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-03-25"},"content:ac-sap-iam-integration-with-sap-cloud-identity-services":{"href":"/content/ac-sap-iam-integration-with-sap-cloud-identity-services","name":"SAP IAM integration with SAP Cloud Identity Services","kind":"reference-architecture","short":"Identity and access management with SAP Cloud Identity Services","line":"Identity and access management for SAP SaaS in a landscape where SAP is one vendor among several: SAP Cloud Identity Services as the designated interface, single sign-on over SAML 2 and OIDC, identity lifecycle through SCIM 2 replication of users and groups, and authorization designed per domain — an S/4HANA role and a BTP role collection are different objects that both have to reach the user. Drawn from customer projects, and the source of what authentication here says about Cloud Identity Services.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-05-13"},"content:ac-secure-service-consumption-across-hyperscalers":{"href":"/content/ac-secure-service-consumption-across-hyperscalers","name":"Secure Service Consumption Across Hyperscalers","kind":"reference-architecture","short":"BTP workloads calling AWS or Google Cloud with short-lived credentials","line":"SAP's design for a workload on SAP BTP that calls Amazon Web Services or Google Cloud services with short-lived credentials instead of stored keys, which is the outbound side of authentication: the BTP application proving who it is to another cloud. On AWS it draws two paths, an ID token from Identity Authentication in Cloud Identity Services exchanged through AWS STS for an IAM role, or an X.509 certificate kept in SAP Destination service and presented to IAM Roles Anywhere; on Google Cloud only the token path, through Workload Identity Federation and an impersonated service account. It is drawn for those two hyperscalers only, and Microsoft Azure has no page in it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-05-14"},"content:ac-third-party-mcp-server-access-to-sap-solutions-on-btp":{"href":"/content/ac-third-party-mcp-server-access-to-sap-solutions-on-btp","name":"Third-Party MCP Server Access to SAP Solutions on BTP","kind":"reference-architecture","short":"External and custom MCP servers on BTP and their operators' duties","line":"Describes external MCP servers and custom servers on BTP, assigning their operators responsibility for authentication, scoped identity, API limits, logging and lifecycle. The permitted use remains conditional on the SAP API Policy, while SAP Integration Suite and Joule Studio are described as SAP-provided paths. Hosting a server on BTP does not automatically supply its governance controls.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Dhawal Joshi, Harut Ter-Minasyan, Mirko Günther"},"content:ac-transforming-enterprise-data-strategy-with-sap-business-data-cloud":{"href":"/content/ac-transforming-enterprise-data-strategy-with-sap-business-data-cloud","name":"Transforming Enterprise Data Strategy with SAP Business Data Cloud","kind":"reference-architecture","short":"Layered picture of SAP Business Data Cloud from lake to agents","line":"SAP's layered picture of SAP Business Data Cloud, from lake storage and compute up to a knowledge core and agents, with eight sub-pages that each work one part through. The data products page is the cataloguing and lineage part: datasets described by Open Resource Discovery metadata, listed in the BDC catalog and shared over Delta Sharing to SAP Databricks and SAP HANA Cloud, with SAP Datasphere as a consumer on the intelligent content page; other pages install intelligent content, bring SAP BW data in through the Data Product Generator, provision groups by SCIM from Cloud Identity Services into SAP Databricks, which is identity provisioning, and train predictive models in SAP Databricks that SAP AI Core then serves for batch and real-time scoring. The main page states direction more than mechanism, and the BW page marks SQL Share for derived and OData for analytical data products as to be available.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-05-12"},"content:ac-transitioning-architectures-from-sap-netweaver":{"href":"/content/ac-transitioning-architectures-from-sap-netweaver","name":"Transitioning Architectures from SAP NetWeaver","kind":"reference-architecture","short":"Replacing NetWeaver-based products as their maintenance ends in 2027","line":"A community contribution from Glencore, an SAP customer, on what replaces NetWeaver-based products as their standard maintenance ends in 2027: the scenarios where NetWeaver-era solutions fall short — integration with cloud-based landscapes, extensibility — and the successor options per use case, pointing at SAP's product availability matrix and note 1648480 for the official successors. Customer-authored, so the framing is a migration decision rather than a product description.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-08-02"},"content:accelerating-your-analytics-with-delta-table-replication-into-sap-hana-cloud":{"href":"/content/accelerating-your-analytics-with-delta-table-replication-into-sap-hana-cloud","name":"Accelerating Your Analytics with Delta Table Replication into SAP HANA Cloud","kind":"blog","short":"Replicating Delta Lake tables into native SAP HANA Cloud tables","line":"Starting with QRC 04/2025, SAP HANA Cloud can replicate a Delta Lake table from an external Delta Sharing source directly into a native HANA table, rather than only querying it live through a virtual table. The post walks through creating a remote subscription, running a chunk-based initial load, and setting up change data capture on a schedule or on demand, each with the SQL statements and monitoring views involved, plus the simpler virtual-table-toggling and HANA Cloud Central UI alternatives.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SeungjoonLee, published 2025-12-22"},"content:adaptation-project-sap-fiori":{"href":"/content/adaptation-project-sap-fiori","name":"Adaptation Project: SAP標準Fioriアプリのフィルタ項目を必須入力へするための方法","kind":"blog","short":"Making a filter field mandatory in a standard Fiori app, in Japanese","line":"Walks through making a filter field mandatory on a standard SAP Fiori elements app (Manage Purchase Orders) without modifying it: an Adaptation Project created in SAP Business Application Studio adds a local OData annotation file that applies the Org.OData.Capabilities.V1 FilterRestrictions term — RequiresFilter and RequiredProperties on the Plant field — and registers it in manifest.appdescr_variant.json against the mainService data source. It also shows how to look up the target OData service, entity container and entity set through the SAP Fiori Apps Reference Library and the service's own metadata.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"hironobu_nakayama, published 2025-10-19"},"content:adapting-sap-joule-for-purchase-order-creation-from-an-existing-purchase-requisi":{"href":"/content/adapting-sap-joule-for-purchase-order-creation-from-an-existing-purchase-requisi","name":"Adapting SAP Joule for Purchase Order Creation from an Existing Purchase Requisition","kind":"blog","short":"Custom Joule agent creating purchase orders from requisitions","line":"A custom Joule Agent and Joule Skill, built in Joule Studio, classic edition to extend SAP Joule past its built-in Purchase Order display and change features: a buyer's single sentence naming a Purchase Requisition number becomes a created Purchase Order, with the skill wrapping the Purchase Requisition and Purchase Order OData V4 APIs as Action Packages reached through two destinations. The author anchors the agent's success condition to a PurchaseOrderNumber in the skill's output rather than an HTTP status code, and reports that the Purchase Requisition item structure does not map one-to-one onto the Purchase Order creation payload.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"jonathanvi59, published 2026-08-19"},"content:add-useful-extensions-to-dev-spaces-in-bas":{"href":"/content/add-useful-extensions-to-dev-spaces-in-bas","name":"Add useful Extensions to Dev spaces in SAP Business Application Studio","kind":"blog","short":"Adding extensions to a BAS dev space for CAP data initialisation","line":"Starts from the point capire makes — that CAP is editor-agnostic and BAS is the preconfigured option — and then does the thing that undoes preconfiguration: adds two extensions to a dev space for initialising data in a CAP application, with the uninstall procedure as well as the install. The uninstall half is what makes it worth keeping.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"showkath_naseem, published 2022-11-13"},"content:adding-a-custom-action-button-with-an-icon-to-a-fiori-elements-list-report":{"href":"/content/adding-a-custom-action-button-with-an-icon-to-a-fiori-elements-list-report","name":"Fiori Elements のList Reportアプリにカスタムアクションボタンを追加し、カスタムコントローラーを用いてアイコン化する","kind":"blog","short":"Custom action button with an icon in a List Report, in Japanese","line":"In Japanese. A custom action button added to a generated List Report and then given an SAPUI5 icon through a custom controller — the point where an annotation-driven app needs a piece of code, and what that costs.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"takayuki_tanaka, published 2024-08-02"},"content:adding-a-shell-plugin-to-a-fiori-cap-application":{"href":"/content/adding-a-shell-plugin-to-a-fiori-cap-application","name":"Adding Shell Plugin to SAP Fiori CAP Application and Deploying to Cloud Portal Service","kind":"blog","short":"Launchpad shell plugin built with CAP for the Cloud Portal service","line":"A launchpad shell plugin built as a CAP application and deployed to the Cloud Portal service — extending the shell around your app rather than the app itself.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Abhinandan2, published 2025-11-24"},"content:adding-a-swagger-ui-to-your-cap-nodejs-service":{"href":"/content/adding-a-swagger-ui-to-your-cap-nodejs-service","name":"Adding a Swagger UI to Your SAP Cloud Application Programming Model / Node.js Service","kind":"blog","short":"Swagger UI on a CAP Node.js service for non-SAP frontend developers","line":"The problem stated from the other side of the wire: a CAP and HANA backend consumed by frontend developers with no SAP background, who said in the first meeting that they could not work from what the service offered. A browsable API page is the answer, and this is the post the Swagger UI plugin indexed here exists to serve.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2020-01-23"},"content:adding-custom-metrics-to-a-cap-application-using-cap-js-telementry-plugin-and-sa":{"href":"/content/adding-custom-metrics-to-a-cap-application-using-cap-js-telementry-plugin-and-sa","name":"Adding Custom Metrics to a CAP application using cap-js/telementry plugin and SAP Cloud Logging","kind":"blog","short":"Custom OpenTelemetry metric in CAP with @cap-js/telemetry","line":"Walks through adding a custom OpenTelemetry counter metric to a CAP application on top of @cap-js/telemetry's built-in database-pool metrics, incrementing and decrementing it from a service handler on CREATE and UPDATE of high-urgency incidents. Shows the resulting metric in SAP Cloud Logging's Discover and Visualize screens, building a custom visualisation from the exported metrics data.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"gopalanand, published 2024-06-27"},"content:adding-immutable-blockchain-proofs-to-sap-with-cap":{"href":"/content/adding-immutable-blockchain-proofs-to-sap-with-cap","name":"Adding Immutable Blockchain Proofs to SAP With CAP - Cardano and OData V4","kind":"blog","short":"ODATANO, Cardano blockchain proofs reachable from CAP over OData V4","line":"The write-up behind ODATANO, by its author: how a public blockchain gets reachable from CAP as an ordinary OData V4 service rather than through a bespoke client. The premise it starts from is worth the read on its own — SAP systems are trusted but mutable, which is what an immutable anchor is for — and Cardano is chosen for peer-reviewed research and formal methods rather than for popularity. Written as an experiment with feedback invited, not as a recommendation.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"maxalexweber, published 2026-05-15"},"content:agentic-ai-on-btp-a-multi-agent-app-with-pydantic-ai":{"href":"/content/agentic-ai-on-btp-a-multi-agent-app-with-pydantic-ai","name":"Agentic AI on BTP: a Multi‑Agent App with Pydantic AI","kind":"blog","short":"Multi-agent BTP app in Python and Pydantic AI over MCP servers","line":"Splits a single CAP/TypeScript agent that had grown to juggle five BTP MCP servers behind one bloated tool list into btp-multiagent-app, a Python and Pydantic AI rewrite where the Cloud Foundry and BTP Core MCP servers each get a dedicated specialist agent, with an audit log specialist scaffolded but left disabled, behind an orchestrator whose only tools are delegation calls to those specialists, which is the agent-tooling pattern the piece works through. Each specialist authenticates to its MCP server over Streamable HTTP with OAuth 2.1, and a shared module centralises the SAP AI Core GenAI Hub model setup behind two credential layouts, one for local runs and one for the Cloud Foundry service binding, the LLM integration side of the rewrite. Tool lists per agent drop from well over a hundred to a dozen or two, and routing failures become separable from tool-misuse failures by reading the trace.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-05-03"},"content:agentic-ai-on-btp-a-single-agent-with-langgraph":{"href":"/content/agentic-ai-on-btp-a-single-agent-with-langgraph","name":"Agentic AI on BTP: a Single Agent with LangGraph","kind":"blog","short":"LangGraph agent in CAP TypeScript calling five MCP servers","line":"A CAP TypeScript agent puts a LangGraph StateGraph in front of AzureOpenAiChatClient from @sap-ai-sdk/langchain, reaching SAP AI Core's Generative AI Hub, and lets its tool-calling loop draw on five deployed MCP servers — OData MCP Proxy, CI MCP Server, AI Core MCP Server, BTP MCP Server and BTP CF MCP Server — through @langchain/mcp-adapters' MultiServerMCPClient. Because agent, servers and APIs share one XSUAA tenant, the chat service forwards the signed-in user's own JWT instead of a service account, so each downstream server enforces that user's own authorizations. Past roughly a hundred combined tools the single prompt slows down and stops separating concerns, which is why the author's next post splits it into one specialist agent per MCP server behind an orchestrator.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-05-03"},"content:ai-powered-user-experience-with-sap-cap-ai":{"href":"/content/ai-powered-user-experience-with-sap-cap-ai","name":"Enhancing Enterprise Applications: AI-powered User Experience with SAP CAP AI Plugin","kind":"blog","short":"AI-assisted form filling in enterprise apps with a CAP AI plugin","line":"Starts from the blank form nobody wants to fill in, and asks what an enterprise application should do about it. The AI is in service of that rather than the subject of it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-04-29"},"content:an-innovative-language-exchange-app-with-build-apps-cap-kyma-and-openai":{"href":"/content/an-innovative-language-exchange-app-with-build-apps-cap-kyma-and-openai","name":"An Innovative Language Exchange App developed with SAP Build Apps, CAP, Kyma, and OpenAI","kind":"blog","short":"Language exchange app with Build Apps, CAP on Kyma and OpenAI","line":"A dormant internal app at SAP Japan revived with AI, built to solve a problem the team actually had — colleagues who could not talk to each other. Build Apps on the front, CAP on Kyma behind it, OpenAI in the middle.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"javieryw, published 2024-01-31"},"content:an-introduction-to-cds-graphical-modeler-for-bas":{"href":"/content/an-introduction-to-cds-graphical-modeler-for-bas","name":"An introduction to CDS Graphical Modeler for SAP Business Application Studio","kind":"blog","short":"Announcement of the CDS Graphical Modeler for BAS","line":"The announcement of the graphical modeller, from the team that built it — what it draws, how to get a dev space that has it, and what it is for. The starting point for the two posts that follow it, and the record of when this became part of the editor rather than an idea.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Xiao-fei_Song, published 2021-04-23"},"content:api-composition-seamless-enterprise-data-access-for-developers-and-ai-agents":{"href":"/content/api-composition-seamless-enterprise-data-access-for-developers-and-ai-agents","name":"API Composition: Seamless Enterprise Data Access for Developers and AI Agents","kind":"blog","short":"API Composition curating business data graphs across API providers","line":"API Composition (formerly Graph, a capability of API Management) curates business data graphs from existing SAP and non-SAP API providers, so a query can navigate and expand relationships across systems through one composed API rather than hand-written integration code. Palak walks through combining SAP S/4HANA warehouse-stock data with Everstream Analytics risk data into one API, then exposing that composed API as an MCP server so an AI agent calls it with the same semantic context — the scenario behind API Management's MCP servers coverage.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-07-27"},"content:arc-1-1-0-one-deployment-multiple-sap-systems":{"href":"/content/arc-1-1-0-one-deployment-multiple-sap-systems","name":"ARC-1 1.0: One Deployment, Multiple SAP Systems","kind":"blog","short":"Release of ARC-1 1.0 with experimental multi-system mode","line":"The release post for ARC-1 1.0, whose largest addition is an experimental multi-system mode: one BTP Cloud Foundry deployment attaches the SAP systems or clients an administrator selects through destinations, each with its own MCP address and an optional combined one, beside 22 included skills, an extension framework for company-specific tools, the BTP login code split out as @arc-mcp/xsuaa-auth, and a move to the ARC MCP organisation. It names the contributions behind the release: Wouter Lemaire for the first Cloud Foundry deployment and the first multi-backend implementation, Sami Bouguerra for NetWeaver 7.50 fixtures and activations that looked successful but were not, Clément Ringot for BTP login and Cloud Connector fixes, and Geert-Jan Klaps for S/4HANA Public Cloud support. It places SAP's own ADT MCP Server as the choice for a developer inside VS Code or Eclipse and ARC-1 as a shared service on BTP, and it stops short of a licence answer: the ADT web endpoints are not listed as published APIs in the SAP Business Accelerator Hub, so readers are told to ask SAP whether their agreement allows third-party tools to use them before a broader or production rollout.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-08-03"},"content:arc-1-on-sap-btp-secure-abap-agentic-development-beyond-the-laptop":{"href":"/content/arc-1-on-sap-btp-secure-abap-agentic-development-beyond-the-laptop","name":"ARC-1 on SAP BTP: Secure ABAP Agentic Development Beyond the Laptop","kind":"blog","short":"ARC-1 deployed on BTP Cloud Foundry with XSUAA and Cloud Connector","line":"The BTP deployment of ARC-1: one Cloud Foundry app per SAP system, reached by MCP clients through XSUAA and reaching the backend through the SAP Destination service, the SAP Connectivity service and Cloud Connector, with a BasicAuth destination for startup probing and a Principal Propagation destination for per-user requests, and SAP_PP_STRICT=true so a propagation problem fails instead of falling back to the shared user. Tool governance is the three gates it spells out, the server ceiling set by environment variables, the user's permission from XSUAA role collections, OIDC scopes or API-key profiles, and the SAP backend authorisation, all of which must allow an action, and the staged rollout from read-only to writes in $TMP, then selected packages, then transport writes. It recommends the MTA deployment over Docker on Cloud Foundry or a buildpack push, treats BTP ABAP Environment as a separate service-key scenario with no Cloud Connector, and is not a full setup guide: the commands are left to the ARC-1 deployment docs.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-04-29"},"content:arc-1-with-copilot-studio-sap-system-context-beyond-developers":{"href":"/content/arc-1-with-copilot-studio-sap-system-context-beyond-developers","name":"ARC-1 with Copilot Studio: SAP System Context Beyond Developers","kind":"blog","short":"BTP-deployed ARC-1 used as an MCP server in Copilot Studio","line":"Takes the BTP-deployed ARC-1 endpoint into Microsoft Copilot Studio, added as an existing MCP server with OAuth 2.0 against XSUAA and published to Teams or Microsoft 365 Copilot, so SAP system context reaches project roles that do not work in an IDE. The test agent combines SharePoint specifications, Jira tickets and mcp-sap-docs with ARC-1 in six scenarios: a patch for a Jira bug proposed before it is applied, the impact of widening a domain from CURR 13,2 to CURR 23,2, a two-layer CDS view built from a specification, an ATC and abaplint quality report, a short dump diagnosis, and a clean core check that proposes released successors for direct selects on USR02 and BUT000. The access path and security model are those of the BTP part unchanged; the advice is to start this audience read-only, although the showcase itself enabled the read and write tools.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-05-04"},"content:arc-1-with-joule-studio-bringing-real-abap-system-context-into-joule":{"href":"/content/arc-1-with-joule-studio-bringing-real-abap-system-context-into-joule","name":"ARC-1 with Joule Studio: Bringing Real ABAP System Context into Joule","kind":"blog","short":"BTP-deployed ARC-1 in a Joule Studio agent","line":"Brings the same BTP-deployed ARC-1 endpoint into Joule through a Joule Studio, classic edition agent configured with Anthropic Claude Sonnet 4 and two MCP servers, ARC-1 and mcp-sap-docs, for work that starts in SAP where the previous part started in Microsoft 365. Two read-only showcases carry the ABAP Cloud readiness edge: a clean core check of one class that reports it is not released, uses USR02 and BUT000 directly and has no ATC findings, and a modernisation backlog for package ZSD_LEGACY which, as that package did not exist, grouped 28 ZSD* objects into risk buckets instead. The route through SAP Integration Suite API Management or a future MCP gateway is presented as a target architecture and not yet a productive setup, because Joule Studio's documentation requires streamable HTTP destinations and does not support MCP servers that need interactive OAuth user authorisation.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-05-06"},"content:architecting-multiple-s4hana-backends-with-principal-propagation-part-1":{"href":"/content/architecting-multiple-s4hana-backends-with-principal-propagation-part-1","name":"Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]","kind":"blog","short":"Series opener on principal propagation to several S/4HANA systems","line":"The opening of a three-part series on reaching more than one S/4HANA system from one CAP application with the user's identity carried through. This part sets up the business problem; the propagation itself is in the parts that follow.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"mohit_bansal3, published 2022-11-25"},"content:architecting-multiple-s4hana-backends-with-principal-propagation-part-2":{"href":"/content/architecting-multiple-s4hana-backends-with-principal-propagation-part-2","name":"Part2: Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]","kind":"blog","short":"Destinations and trust for principal propagation to several backends","line":"The middle part: the destinations and the trust that make principal propagation work against several backends rather than one, which is where the configuration stops being a copy of the tutorial.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"mohit_bansal3, published 2022-11-25"},"content:architecting-multiple-s4hana-backends-with-principal-propagation-part-3":{"href":"/content/architecting-multiple-s4hana-backends-with-principal-propagation-part-3","name":"Part 3: Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]","kind":"blog","short":"CAP service consuming propagated destinations to several backends","line":"The final part, and the one with the most CAP in it — the service consuming the propagated destinations, and what the handler sees. Read the three together; the series is one piece.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"mohit_bansal3, published 2022-11-25"},"content:architecting-saas-resilience-against-s4hana-variance":{"href":"/content/architecting-saas-resilience-against-s4hana-variance","name":"Part 2: Architecting SaaS Resilience Against S/4HANA Variance","kind":"blog","short":"SaaS resilience against S/4HANA release and extension variance","line":"The unspoken problem it names is a good one: a multitenant SaaS application faces not one S/4HANA but every customer's, each at a different release with different extensions. What resilience means when the backend varies per tenant.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"michal_majer, published 2025-10-20"},"content:attachment-upload-and-download-with-uploadsetwithtable":{"href":"/content/attachment-upload-and-download-with-uploadsetwithtable","name":"Building an Attachment Upload and Download Solution Using UploadSetwithTable Control","kind":"blog","short":"Two-step attachment upload with UploadSetwithTable against CAP","line":"The successor control to UploadSet posts the file in one request by default, and against CAP that is wrong: the record has to be created first and the content put to it afterwards. The author states the two-step shape plainly and notes it may not apply to an ABAP backend, which is the kind of boundary that usually goes unsaid. Written during a proof of concept for a reusable attachment component, and it carries the problem they hit with the control.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-03-13"},"content:authorization-management-service-in-sap-cloud-identity-service":{"href":"/content/authorization-management-service-in-sap-cloud-identity-service","name":"Authorization Management Service in SAP Cloud Identity Service","kind":"blog","short":"Authorization Management Service policies replacing XSUAA scopes","line":"States the direction of travel plainly — BTP moving authorization management from XSUAA to AMS inside SAP Cloud Identity Service — and then explains what a policy is, which is the unit that replaces a scope. Split between authorization for Cloud Identity itself and for custom business applications, and it is the concept post the CAP Java write-up refers back to.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"kevin_li, published 2024-10-17"},"content:authorization-management-with-opensearch-s-document-level-security-sap-cloud-log":{"href":"/content/authorization-management-with-opensearch-s-document-level-security-sap-cloud-log","name":"Authorization management with OpenSearch's Document Level Security - SAP Cloud Logging","kind":"blog","short":"Document level security in SAP Cloud Logging with OpenSearch and IAS","line":"Where the predecessor SAP Application Logging service reused CF space permissions for read-only access, SAP Cloud Logging integrates with SAP Cloud Identity Services (IAS) and controls per-document visibility through OpenSearch's Document Level Security: an IAS group becomes a backend role, mapped to an OpenSearch role that carries a DLS query filter, so a search request only ever returns documents whose indexed field (space_name, organization_id, or another keyword field) matches what that role's filter allows. It walks through fixed per-space roles, a shared multi-space role using a terms query, and a single dynamic role that substitutes ${user.roles} into the filter so the match is against the caller's own groups, then lists operational pitfalls — wildcard index patterns breaking Dashboards, DLS roles that also hold write access creating log entries nobody can read back, and match queries against a .keyword field being non-deterministic where term queries are exact.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Hariharan-Gandhi, published 2025-11-24"},"content:automate-btp-custom-domain-certificates-using-lets-encrypt":{"href":"/content/automate-btp-custom-domain-certificates-using-lets-encrypt","name":"Automate BTP Custom Domain certificates using Let's Encrypt","kind":"blog","short":"CAP app automating BTP custom domain certificates with Let's Encrypt","line":"Certificate lifecycle management as an application: a CAP backend, a Fiori elements UI, the Custom Domain service, Cloud Foundry routes and the Job Scheduler, so requests, renewals and cleanup stop being manual. Part two of the author's BTP Toolbox.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Ben, published 2026-03-19"},"content:automate-recurring-data-updates-in-sap-hana-cloud":{"href":"/content/automate-recurring-data-updates-in-sap-hana-cloud","name":"Automate Recurring Data Updates in SAP HANA Cloud","kind":"blog","short":"Scheduling a SQLScript job in SAP HANA Cloud with CREATE SCHEDULER JOB","line":"A walkthrough for marking inventory rows stale after 30 days using SAP HANA Cloud's own scheduler: a SQLScript procedure, a CREATE SCHEDULER JOB statement with its 7-field cron pattern, the M_SCHEDULER_JOBS monitoring view, and the matching DROP statements to remove both. It then names where that approach stops and lists the alternatives for scheduling outside the database: SAP Integration Suite's Timer Event, the SAP Job Scheduling service, SAP Automation Pilot for infrastructure commands, and a custom approach for triggering scheduled REST calls from an application.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Joni, published 2026-06-11"},"content:automate-your-job-postings-using-generative-ai-and-sbpa":{"href":"/content/automate-your-job-postings-using-generative-ai-and-sbpa","name":"Automate your Job Postings Using Generative AI (ChatGPT) & SAP Build Process Automation Apps","kind":"blog","short":"ChatGPT-drafted job postings approved in SAP Build Process Automation","line":"A process that drafts its own text: ChatGPT writing job postings, SAP Build Process Automation carrying them through approval, and CAP in between. Presented as a generic pattern the author expects to be adapted rather than copied.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"shivamshukla12, published 2023-08-10"},"content:automating-iflow-documentation-with-sap-integration-suite-and-gemini-ai":{"href":"/content/automating-iflow-documentation-with-sap-integration-suite-and-gemini-ai","name":"Automating iFlow Documentation with SAP Integration Suite and Gemini AI","kind":"blog","short":"iFlow generating documentation for other iFlows with Gemini AI","line":"An integration flow built from Cloud Integration's own steps — timer start, parallel multicast, process calls, join and gather, and a data store write — retrieves another iFlow's design-time metadata and resources (Groovy scripts, XSLT mappings, EDMX schemas) through the IntegrationDesigntimeArtifacts OData API on SAP Integration Suite. The walkthrough gives each flow step's configuration, the OData endpoints and sample request/response payloads, and an exception subprocess for error logging, before assembling the retrieved XML and posting it to Google's Gemini API to generate a technical specification document stored back in a datastore.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Andrew-Fawzy, published 2025-07-18"},"content:automating-user-offboarding-in-sap-btp-across-multiple-subaccounts-with-powershe":{"href":"/content/automating-user-offboarding-in-sap-btp-across-multiple-subaccounts-with-powershe","name":"Automating User Offboarding in SAP BTP Across Multiple Subaccounts with PowerShell & BTP CLI","kind":"blog","short":"PowerShell and BTP CLI script offboarding users across subaccounts","line":"A PowerShell script that pairs with the SAP BTP command line interface to delete a list of user e-mails from every trusted identity provider, sap.default included, across every subaccount the caller can reach, writing a timestamped log of each attempt. It automates the offboarding half of identity provisioning — getting a user out of every system that holds them once they leave — by chaining btp list accounts/subaccount, btp list security/trust and btp delete security/user rather than going through a provisioning job or the SCIM API.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"shasankgupta024, published 2026-01-01"},"content:autonomous-diagnostics-on-kyma-unplugged-goose-litellm-kro-sap-ai-core-in-produc":{"href":"/content/autonomous-diagnostics-on-kyma-unplugged-goose-litellm-kro-sap-ai-core-in-produc","name":"Autonomous Diagnostics on Kyma Unplugged: Goose + LiteLLM + KRO + SAP AI Core in Production","kind":"blog","short":"Goose agent diagnostics on Kyma Unplugged via LiteLLM and SAP AI Core","line":"An in-cluster autonomous diagnostic pipeline on Kyma Unplugged (open-source Kyma, noted to also run on SAP BTP, Kyma runtime): a Goose agent with kubectl access calls SAP AI Core through a LiteLLM proxy, and most of the post is about the quirks of that route — drop_params silently swallowing unrecognised parameters and beta headers, streaming that has to be off when tools are attached, and prompt caching that sits on the Orchestration V2 API rather than the foundation-model path the LiteLLM provider hits. A second Node.js proxy reaches that API, and the author reports caching unconfirmed at production scale, which leaves the roughly $0.004 per static run a target rather than a measured figure. Spend metrics reach SAP Cloud Logging over OTLP through Kyma's Telemetry MetricPipeline while the health analysis itself lands in Kubernetes custom resources read in Busola, and the stack is declared as KRO Resource Group Definitions applied with one Terraform command.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"quovadis, published 2026-07-09"},"content:avoid-design-time-cap-server-restarts-with-local-data-files":{"href":"/content/avoid-design-time-cap-server-restarts-with-local-data-files","name":"Avoid design time CAP server restarts when maintaining local data files","kind":"blog","short":"Avoiding cds watch restarts while editing CSV seed files","line":"cds watch restarting on every file change is the feature; this is the case where it is not. Editing a CSV seed file mid-edit restarts the server against half-finished data, and the post is about suppressing that without giving up the watch loop. A small friction most people work around silently rather than fix.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-04-26"},"content:avoiding-data-loss-when-loading-initial-data-with-csv-files":{"href":"/content/avoiding-data-loss-when-loading-initial-data-with-csv-files","name":"Avoiding Data Loss When Loading Initial Data with CSV Files in CAP","kind":"blog","short":"Data loss risk of loading initial CSV data into HANA in CAP","line":"cds add tiny-sample gives you a CSV in db/data and it loads on deploy, which looks like a way to seed a productive application. The catch, stated plainly: change the CSV or the schema and HANA is reinitialised from the file, taking whatever users had entered with it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"MioYasutake, published 2025-09-15"},"content:aws-mail-configuration-for-sap-abap-systems":{"href":"/content/aws-mail-configuration-for-sap-abap-systems","name":"AWS Mail configuration for SAP ABAP Systems","kind":"blog","short":"Routing SAP ABAP system mail through Amazon SES","line":"Walks through routing an SAP ABAP system's outbound mail through Amazon SES instead of an on-premises mail server or a dedicated EC2 SMTP instance: verifying a sender address and generating SMTP credentials in SES, creating the SMTP node in transaction SCOT, importing the SES endpoint's certificate into the SSL client via STRUST, and testing delivery through SO01 and SOST. It covers the SMTP relay underneath ABAP's mail delivery, the layer Notifications marks as where the core stops and where a channel like this is written on top.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"brijesh_tripath, published 2025-03-04"},"content:banking-sentinel-a-multi-agent-credit-risk-copilot":{"href":"/content/banking-sentinel-a-multi-agent-credit-risk-copilot","name":"Banking Sentinel: A Multi-Agent Credit-Risk Copilot on SAP BTP, Built on a Mixed AI Stack","kind":"blog","short":"Multi-agent credit-risk copilot on BTP and CAP","line":"The risk it is chasing is a graph problem stated in banking terms: a borrower who looks safe alone and is the linchpin of a group ten times the size. Multi-agent, mixed AI stack, on BTP and CAP.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Shahid, published 2026-06-24"},"content:basic-code-s-of-abap":{"href":"/content/basic-code-s-of-abap","name":"Basic code's of ABAP","kind":"blog","short":"Nine ABAP reports around ALV, Excel upload and table maintenance","line":"Nine standalone ABAP reports built around REUSE_ALV_GRID_DISPLAY and CL_SALV_TABLE, covering display, screen validation, spool creation, Excel upload and table maintenance without SM30. One report raises and catches a custom exception class with RAISE EXCEPTION and TRY/CATCH, the class-based mechanism error handling names for ABAP; another submits a job to spool, converts it to PDF with CONVERT_ABAPSPOOLJOB_2_PDF and exports a CL_SALV_TABLE result to Excel before mailing both, producing document output from spool rather than Form Builder.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"RakeshZore, published 2025-09-30"},"content:batch-file-pickup-and-dynamic-zip-creation-in-sap-integration-suite":{"href":"/content/batch-file-pickup-and-dynamic-zip-creation-in-sap-integration-suite","name":"Batch File Pickup and Dynamic ZIP Creation in SAP Integration Suite","kind":"blog","short":"SFTP batch file pickup and ZIP creation in Cloud Integration","line":"Walks through configuring a Cloud Integration flow that polls an SFTP server for batches of ten files, using a Content Modifier to preserve each file's name and body before appending them into one temporary file. A Router and Poll Enrich step detect when the batch is complete, a General Splitter breaks the combined payload back into individual messages, and a Gather step reassembles them into a dynamically named ZIP archive that keeps the original filenames, before the archive is sent on to a target SFTP server.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"sahilminhas, published 2026-05-07"},"content:before-you-upgrade-s4hana-static-ui5-checks-with-mcp":{"href":"/content/before-you-upgrade-s4hana-static-ui5-checks-with-mcp","name":"Before You Upgrade S/4HANA: Static UI5 Checks with MCP","kind":"blog","short":"Static UI5 version upgrade checks with two MCP servers","line":"A UI5 version upgrade checked against one app by pairing two MCP servers: the ui5_version_diff tool added to mcp-sap-docs, which reads a bundle from ui5-lib-diff downloaded once at setup and filters it by version range, change type, library or query text, and @ui5/mcp-server, whose get_project_info, get_version_info, run_ui5_linter and run_manifest_validation say what the app uses and what fails. Run with a ui5-versions-upgrade.md skill on the legacy app from From SEGW and Legacy UI5 to RAP with ARC-1, from SAPUI5 1.84.59 to 1.147.2, the diff range held 985 deprecations and 961 What's New entries, and the linting and manifest validation narrowed that to findings in this app, among them jQuery.sap.require, synchronous bootstrap, the sap_belize theme, sap.m.MessagePage and an old manifest _version. The checks read the source in a local checkout and never the deployed app, so the report is a first pass: a changelog entry is not proof that a workaround can be deleted, and the app still has to be run and tested.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-05-20"},"content:beginners-guide-to-advanced-event-mesh":{"href":"/content/beginners-guide-to-advanced-event-mesh","name":"Beginners Guide to Advanced Event Mesh","kind":"blog","short":"Advanced Event Mesh scenarios run through Cloud Integration iFlows","line":"A scenario-by-scenario walkthrough of Advanced Event Mesh, run through Cloud Integration iFlows: publishing and consuming queue messages, dead message queue setup with retry counts and acknowledgment modes, direct messages, durable topic endpoints and selectors, time-to-live, REST Delivery Points, replay by replication group message ID, parallel consumers with partition keys, and the request-reply pattern. Each scenario is built and verified step by step against a Solace trial account standing in for AEM.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"PriyankaChak, published 2025-07-24"},"content:behavior-illegal-statement-dump-technical-workarounds":{"href":"/content/behavior-illegal-statement-dump-technical-workarounds","name":"BEHAVIOR_ILLEGAL_STATEMENT dump | Technical workarounds","kind":"blog","short":"Causes and workarounds for the BEHAVIOR_ILLEGAL_STATEMENT dump in RAP","line":"The BEHAVIOR_ILLEGAL_STATEMENT dump fires in SAP RAP when an explicit COMMIT WORK or ROLLBACK WORK, or a direct database write, collides with RAP's own transactional model: a Logical Unit of Work split into an interaction phase, where changes sit in a transactional buffer, and a save sequence that validates and persists them. The post then names four ways to move the offending statement into a separate task instead — the Background Processing Framework, parallel processing, Application Jobs, or, on-premise only, a wrapper RFC function module called with DESTINATION 'NONE' — pointing to further reading for each rather than working through any of them here.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"PranayGaroo, published 2025-08-11"},"content:beyond-basic-ai-error-handling-in-sap-cpi-a-rules-first-architecture-with-hana-c":{"href":"/content/beyond-basic-ai-error-handling-in-sap-cpi-a-rules-first-architecture-with-hana-c","name":"Beyond Basic AI Error Handling in SAP CPI - A Rules-First Architecture with HANA Cloud Learning","kind":"blog","short":"Rules-first error diagnosis in Cloud Integration with HANA Cloud","line":"Builds a rules-first error-diagnosis pipeline on Cloud Integration in SAP Integration Suite: a Groovy classifier resolves known failures — auth, timeout, malformed payload — deterministically, and only genuinely novel errors reach an LLM through the AI Adapter, after a sanitizer script replaces every payload leaf value with a typed placeholder before it leaves the tenant. SAP HANA Cloud, reached over JDBC, holds a fingerprinted dedup cache and an accumulating table of past diagnoses. It also documents the AI Adapter configuration — Advanced mode, a Bearer-prefixed Secure Parameter, and a connection/processing URL split — needed to reach a non-SAP OpenAI-compatible endpoint, found by the author to be undocumented.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Krishna_Karthik, published 2026-06-11"},"content:beyond-read-text-decoding-sapscript-long-texts-stxl-with-sqlscript-in-cds-amdp":{"href":"/content/beyond-read-text-decoding-sapscript-long-texts-stxl-with-sqlscript-in-cds-amdp","name":"Beyond READ_TEXT: Decoding SAPscript Long Texts (STXL) with SQLScript in CDS/AMDP","kind":"blog","short":"Decoding SAPscript long texts from STXL with SQLScript","line":"STXL stores a SAPscript long text as a compressed ABAP cluster container — LZ77 plus canonical Huffman — so the only official reads are READ_TEXT, one call per text, and its mass variant READ_TEXT_TABLE, both of which ship every decompressed line to the application server and stay invisible to ABAP CDS. The author reverse-engineered that on-disk format and ported the decoder into SQLScript, wrapped in an AMDP procedure and exposed through CDS table functions, turning long texts into a joinable, filterable column read directly in the database. On ABAP 7.56 a table function needs the driver-and-filter pattern shown because a parameter cannot bind to a calling column; on ABAP 7.58/S/4HANA 2023 the same result becomes a parameter-less CDS scalar function with true filter push-down.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"aamelin1, published 2026-08-20"},"content:beyond-rest-exploring-graphql-api-integration-in-sap-btp-integration-suite":{"href":"/content/beyond-rest-exploring-graphql-api-integration-in-sap-btp-integration-suite","name":"Beyond REST: Exploring GraphQL API Integration in SAP BTP Integration Suite","kind":"blog","short":"GraphQL integration flow on the HTTP adapter in Cloud Integration","line":"Because Cloud Integration in SAP Integration Suite ships no native GraphQL adapter, the author builds a GraphQL integration flow on the standard HTTP adapter: a Groovy script assembles the query or mutation payload and sets the JSON content type, and a JSON-to-XML converter turns the response into something message mapping can consume. The walkthrough uses the public Countries API to stand in for a real order-synchronisation flow between an e-commerce platform and SAP S/4HANA.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Avinash_Vaidya, published 2025-11-11"},"content:bo-interface-apis-an-alternative-to-bapis-and-traditional-fms":{"href":"/content/bo-interface-apis-an-alternative-to-bapis-and-traditional-fms","name":"BO Interface APIs : An alternative to BAPIs and traditional FMs","kind":"blog","short":"Updating purchase order items through a BO interface with EML","line":"Walks through updating an S/4HANA Purchase Order's line items through a released BO interface instead of a BAPI, using EML against the underlying CDS entity and a COMMIT ENTITIES statement because the call sits outside a behavior class. Argues the BO interface route avoids a RAP behavior class's restriction against calling COMMIT WORK directly, and covers finding a released interface's CRUD operations on api.sap.com and extending the same approach to a custom field or a custom RAP-based Fiori app's own BO.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Sudhan_Nagarajan, published 2025-07-02"},"content:boosting-performance-in-cap-with-cds-caching":{"href":"/content/boosting-performance-in-cap-with-cds-caching","name":"Boosting performance in SAP Cloud Application Programming Model (CAP) applications with cds-caching","kind":"blog","short":"Introduction to cds-caching, its design and use cases","line":"The plugin's introduction post: what cds-caching is for, how it is put together and the cases it was written against. The edge holds because the plugin's README still points here as the piece to read first, so this is where a reader arriving at the plugin is sent. It predates version 1.0 and the API has moved since: the read-through calls it shows as cache.run() and cache.send() are the ones the README now lists as deprecated in favour of cache.rt.*, which returns the cache key and hit/miss metadata alongside the result, and 1.0 made user, tenant and locale awareness opt-in under keyManagement rather than folding them into request-based keys by default. Metrics and monitoring, the OData API and full TypeScript definitions arrived with 1.0 and are described in CAP just got faster: What's new in cds-caching 1.0 instead. The reasoning about when a CAP service wants a cache still reads true; the call sites need translating.","chip":{"label":"Compatibility","tier":"fair","evidence":"cds 9, maintenance until 2027-06, cds-caching 0.x"},"ai":true,"meta":"published 2025-06-25"},"content:btp-ai-bp-access-to-generative-ai-models":{"href":"/content/btp-ai-bp-access-to-generative-ai-models","name":"Access to Generative AI Models","kind":"doc","short":"Calling deployed generative AI models on SAP BTP","line":"Sets out the plain way to call a deployed generative AI model on SAP BTP: a request that carries the prompt, the model and the parameters that control generation, with the same code able to switch between models. It lists data masking, prompt templating and filtering as features that come with the access rather than as code the caller writes, which is the shape LLM integration takes on the BTP door; the page's implementation sections sit behind its steps and were not read.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:btp-ai-bp-agentic-ai-security-governance":{"href":"/content/btp-ai-bp-agentic-ai-security-governance","name":"Agentic AI Security & Governance","kind":"doc","short":"Seven threat categories of agentic AI and their governance","line":"Names seven threat categories agentic AI introduces beyond ordinary application security: prompt injection, excessive agency, supply-chain and model-integrity compromise, memory poisoning, improper output handling, resource abuse and agent-to-agent communication poisoning. Its answer is a defence-in-depth structure of security controls, input validation, privilege management, supply-chain checks, memory segmentation, output validation, execution quotas, secure communication, paired with governance and oversight: audit logging, explainability, human-in-the-loop review, fairness assessment and continuous monitoring. States the reason plainly: an agent decides, chains actions across turns, keeps memory between them and can act on real systems, a different risk profile from a single request-response call. That is the authorisation and audit-trail question tool governance is named for.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:btp-ai-bp-content-filtering":{"href":"/content/btp-ai-bp-content-filtering","name":"Content Filtering","kind":"doc","short":"Screening LLM input and output for unsafe content","line":"Content filtering screens a large language model's input and output for low-quality, irrelevant or unsafe content: the four categories it names being hateful, violent, sexual and vulgar content, checking a request once on the way in and once on the way back. The page states smaller models can do this filtering efficiently, reading perplexity scores to flag anomalies, with the aim that SAP AI Core produces content meeting a stated safety standard, which is the ground content filtering covers on the BTP door.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:btp-ai-bp-custom-joule-skills":{"href":"/content/btp-ai-bp-custom-joule-skills","name":"Custom Joule Skills","kind":"doc","short":"Custom Joule skills built in Joule Studio in SAP Build","line":"A custom Joule skill is a workflow written to extend what Joule does out of the box for one specific business need, built and deployed through Joule Studio in SAP Build; the page states this is the supported way to extend Joule's built-in capabilities. Through Joule Studio a skill reaches SAP and external APIs via the destinations already configured in the BTP subaccount and Build environment, with the workflow itself versioned, monitored and deployable from the same tool.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:btp-ai-bp-data-masking":{"href":"/content/btp-ai-bp-data-masking","name":"Data Masking","kind":"doc","short":"Masking identifiable text in prompts before it reaches an LLM","line":"Data masking replaces identifiable or confidential text in a prompt with placeholders such as <Person_0> or <Organization_1> before it reaches a large language model, using pattern matching and machine learning to find what to replace. The page states SAP AI Core supports it as a feature and sets out five steps for applying it, defining the masking scope, choosing a technique, preserving the prompt's intent, checking compliance and risk, then testing and monitoring the result. That is the shape data masking takes on the BTP door.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:btp-ai-bp-document-grounding":{"href":"/content/btp-ai-bp-document-grounding","name":"Document Grounding","kind":"doc","short":"Managed retrieval-augmented generation under the Generative AI Hub","line":"Document Grounding is a managed retrieval-augmented-generation service under the Generative AI Hub on BTP, which SAP's page on SAP AI Core places inside that service: it ingests documents from Amazon S3, SharePoint, SAP Document Management Service, SAP Work Zone or an SFTP server, and handles chunking, embedding and retrieval itself, refreshing content automatically when a source document changes. The page states this managed path is recommended for most enterprise scenarios because it covers the whole lifecycle end to end, and offers a separate Document Grounding Vector API for data that is already chunked and embedded, for cases that need finer control over chunking and metadata.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:btp-ai-bp-joule-agent-builder":{"href":"/content/btp-ai-bp-joule-agent-builder","name":"Content-based Agents with SAP Joule Studio Agent Builder","kind":"doc","short":"Building custom Joule agents with the Joule Studio Agent Builder","line":"Joule Studio, classic edition, the capability in SAP Build the page calls Joule Studio, is where an organisation creates and manages its own Joule skills and Joule agents; its Agent Builder is for a custom agent that handles a multi-step task by combining instructions, model-backed planning and reasoning, and a configured set of tools, Joule skills, document resources, MCP servers, or other agents run as subagents. The page states an agent executes inside the calling user's own security context through SAP Cloud Identity Services, and can be tried against a test conversation before deployment. That is the tool-and-turn-taking ground agent tooling covers, here built through Joule Studio rather than in application code.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:btp-ai-bp-mcp":{"href":"/content/btp-ai-bp-mcp","name":"Model Context Protocol (MCP)","kind":"doc","short":"Model Context Protocol on SAP BTP and the M-times-N problem","line":"Frames the Model Context Protocol as the answer to an M-times-N integration problem: one shared protocol turns M agents and N tools into M plus N connections, and one server can be called by any compliant agent. On SAP BTP its implementation section lists an SAP MCP Hub as a no-code way to expose enterprise tools, SAP Integration Suite's MCP Gateway as what it calls the governed path for exposing SAP and non-SAP APIs as MCP-compliant tools, custom SDK-based servers, SAP's MCP servers for development, and an MCP adapter for CDS as a CAP plugin marked coming soon. That is the ground MCP servers covers; for security it points at a separate page.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:btp-ai-bp-pro-code-ai-agents":{"href":"/content/btp-ai-bp-pro-code-ai-agents","name":"Pro-Code AI Agents","kind":"doc","short":"Pro-code AI agents on SAP BTP","line":"Pro-code agents are the most flexible way the page frames building an agentic workflow on SAP BTP: full autonomy, custom API integrations and algorithms chosen by the developer, set against declarative alternatives such as content-based agents and Joule Scenarios. It names LangGraph as the framework it recommends for production, enterprise-grade agentic workflows, alongside the ReAct pattern as the plan-act-observe loop such an agent runs. That is the ground agent tooling covers, building an agent's own tool-calling loop rather than exposing an application to somebody else's agent.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:btp-ai-bp-prompt-templating":{"href":"/content/btp-ai-bp-prompt-templating","name":"Prompt Templating","kind":"doc","short":"Reusable prompt templates with placeholders filled at runtime","line":"Prompt templating replaces a static prompt with a structured, reusable template whose placeholders are filled in at runtime, which the page says helps LLM responses stay consistent and lets the same instructions be adapted across tasks. On SAP AI Core this is implemented through the Prompt Registry, and the page states that storing prompts as plain strings in code is possible but not recommended. That is prompt management as a stored and managed object rather than a string embedded in the caller.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:btp-ai-bp-vector-rag-vs-graph-rag":{"href":"/content/btp-ai-bp-vector-rag-vs-graph-rag","name":"Vector RAG vs Graph RAG","kind":"doc","short":"Choosing between Vector RAG and Graph RAG","line":"A section introduction rather than the comparison itself: it states that the choice between Vector RAG and Graph RAG depends on the domain and the task, and that Vector RAG is the one to use when the subject area has a clear description and the model must be held to specific data structures and attribute values. The four sub-pages it introduces, two on vector-based and two on graph-based RAG, carry the comparison. It sits on the same retrieval question retrieval-augmented generation answers, without naming CDS, CAP or a store.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:btp-audit-log-mcp-server-security-monitoring-with-ai-assistants":{"href":"/content/btp-audit-log-mcp-server-security-monitoring-with-ai-assistants","name":"BTP Audit Log MCP Server: Security Monitoring with AI Assistants","kind":"blog","short":"MCP server over the BTP Audit Log Retrieval API via odata-mcp-proxy","line":"Wouter Lemaire builds an MCP server over SAP BTP's Audit Log Retrieval API using odata-mcp-proxy, with a single entity set and zero custom code, so an AI assistant can answer natural-language questions like \"Were there any configuration changes yesterday?\" by calling AuditLogRecords_list against a BTP destination authenticated with the Audit Log service's service key. It covers the destination setup, the entity-set configuration that maps the PascalCase entity name to a lowercase auditlogrecords path, and handling the API's 500-record pagination limit.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-03-13"},"content:btp-authorization-object":{"href":"/content/btp-authorization-object","name":"BTP - Authorization Object","kind":"blog","short":"Classic ABAP authorization object in the ABAP environment","line":"Walks through building a classic ABAP authorization object for the ABAP environment — an authorization field, the object itself created in ABAP Development Tools rather than the classic SU21 transaction, and its activities (01 create, 02 change, 03 display, and others) — then wires it into a CDS role's access control with the pfcg_auth aspect on the WHERE condition, which is authorization's ABAP form: CDS access control limiting what a view entity returns to the conditions in a CDS role. The check inherits down to a consumption view and even the Data Preview, and the piece notes the WITH PRIVILEGED ACCESS addition developers use in the SQL console to bypass it while testing.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Björn S., published 2026-08-07"},"content:btp-cap-custom-plugin-to-separate-generic-change-log-capture-logic":{"href":"/content/btp-cap-custom-plugin-to-separate-generic-change-log-capture-logic","name":"BTP CAP : Custom plugin to separate generic change log capture logic","kind":"blog","short":"CAP plugin centralising change-log capture for @audit entities","line":"Walks through building a custom [CAP](ecosystem:cap) plugin that centralises change-log capture: on cds.once('served') it collects entities annotated @audit, then hooks srv.before('UPDATE') to read the existing record, diff it field by field against the incoming payload, and record old/new values with the user and timestamp. It also documents a cds build failure packaging the plugin's own directory into gen/srv for MTA deployment, fixed by adding it as a copyfiles build-parameter step in mta.yaml.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"sreehari_vpillai, published 2023-05-10"},"content:btp-cloud-foundry-mcp-server-managing-cf-environments-with-ai":{"href":"/content/btp-cloud-foundry-mcp-server-managing-cf-environments-with-ai","name":"BTP Cloud Foundry MCP Server: Managing CF Environments with AI","kind":"blog","short":"MCP server for the Cloud Foundry V3 API built on odata-mcp-proxy","line":"Walks through a server built on odata-mcp-proxy that exposes the Cloud Foundry V3 API's 28 entity sets — apps, orgs, spaces, services, networking, quotas — as MCP tools from a JSON config with no application code. It shows the config shape that bridges the API's snake_case paths to PascalCase tool names via a urlPath field, and the OAuth2 client-credentials destination setup an assistant needs to reach a CF landscape.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-03-13"},"content:btp-launchpad-sapui5-cpi-iflow":{"href":"/content/btp-launchpad-sapui5-cpi-iflow","name":"从BTP Launchpad里的sapui5应用里调用部署的CPI IFLOW","kind":"blog","short":"Calling a CPI iflow from a SAPUI5 app in BTP Launchpad, in Chinese","line":"A short follow-up to the author's earlier post on calling a deployed CPI iflow from a standalone-router SAPUI5 app, adjusted for the case where the app runs inside the BTP Launchpad: the fetch call is built from the launchpad component's own base URI, and the app's xs-app.json approuter route maps a /cpi/* path to a destination that fronts the CPI iflow runtime, with XSUAA authentication on the route. It also walks the MTA build and cf deploy commands used to push the app, scaffolded with generator-easy-ui5, to BTP.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Jacky_Liu1, published 2023-06-13"},"content:btp-restriction-type":{"href":"/content/btp-restriction-type","name":"BTP - Restriction Type","kind":"blog","short":"Restriction Type and Restriction Field for a RAP authorization object","line":"Walks through creating a Restriction Type and Restriction Field for an ABAP RAP authorization object, so the values an IAM app would otherwise fix as static entries can instead be maintained per Business Role in the Fiori Launchpad. Read and Write access on the restriction still follow the activities defined on the authorization object itself (03 for read, 01/02/06 for write), and the piece shows the effect end to end: a Fiori app narrowed to only the business partners assigned on the role. This is the ABAP door's authorization mechanism made dynamic — an access decision moved from the IAM app's fixed values onto the role, without touching the underlying CDS access control.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Björn S., published 2026-08-11"},"content:btp-sapcap-quirky-nuggets-n01-n02":{"href":"/content/btp-sapcap-quirky-nuggets-n01-n02","name":"#BTP #SAPCAP: Quirky Nuggets (N01-N02)","kind":"blog","line":"Walks through two CAP gotchas: the on/before/after phases of custom event handlers, shown with an after handler whose edits only reach the result when the handler returns an object or array, never a primitive; and the @assert.unique annotation, which builds a database uniqueness constraint from the model. For Input validation, the catch is that once the constrained property is nested, @assert.unique must name it by its model dot path (assignment.type) rather than the flattened column data modelling compiles it to (assignment_type).","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-06-05"},"content:btp-sapcap-quirky-nuggets-n03-n04":{"href":"/content/btp-sapcap-quirky-nuggets-n03-n04","name":"#BTP #SAPCAP: Quirky Nuggets (N03-N04)","kind":"blog","short":"OData operators on CAP and undeploying database artifacts","line":"Two unrelated findings in one post, which is the format of the series: the OData operators tried against a CAP service — with a schema of deliberately awkward types to try them on — and undeploying database artifacts, which is the half people hit in anger. Numbered N03 and N04 of a run that continues either side.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Ajit_K_Panda, published 2023-06-05"},"content:btp-sapcap-quirky-nuggets-n05-n06":{"href":"/content/btp-sapcap-quirky-nuggets-n05-n06","name":"#BTP #SAPCAP: Quirky Nuggets (N05-N06)","kind":"blog","line":"On SAP BTP, Cloud Foundry Runtime, a one-shot PostgreSQL db-deployer app can be restarted by the platform's default port-type health check inside its 60-second timeout, re-running the deploy and duplicating data in the PostgreSQL database; setting health-check-type to process or http, via cf commands or the app's mta.yaml parameters, avoids it. In CAP, a remote service's entities are imported and consumed through cds.connect.to and queried via a projection, but its functions and actions cannot be projected: they must be redefined in the consuming service's own interface, with the handler forwarding the call to the remote proxy.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-07-27"},"content:build-a-btp-cap-app-with-fiori-integration-part-2":{"href":"/content/build-a-btp-cap-app-with-fiori-integration-part-2","name":"Build BTP CAP App with Fiori Integration – Part 2: Implementing End to End App","kind":"blog","short":"End-to-end implementation of a CAP app with Fiori","line":"The implementation half of the series whose first part set up the account and the database: the application itself, end to end.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SuryaRamesh, published 2026-04-09"},"content:build-an-overview-page-with-hana-cloud-and-cap-service-annotations":{"href":"/content/build-an-overview-page-with-hana-cloud-and-cap-service-annotations","name":"Build SAP Overview Page using SAP HANA Cloud & SAP CAP service annotations in Visual Studio Code","kind":"blog","short":"Fiori Overview Page from CAP service annotations in VS Code","line":"An Overview Page — the card-based Fiori elements floorplan, less written about than the list report — driven entirely from annotations on a CAP service, in VS Code rather than Business Application Studio.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Sai_Nithesh_G, published 2021-08-05"},"content:build-and-deploy-a-cap-nodejs-api-with-fiori-elements-and-a-managed-approuter":{"href":"/content/build-and-deploy-a-cap-nodejs-api-with-fiori-elements-and-a-managed-approuter","name":"Build and deploy a CAP Project Node.js API with a SAP Fiori Elements UI and a managed approuter configuration","kind":"blog","short":"CAP Node.js API with Fiori Elements and a managed approuter","line":"Generation and deployment in one piece, with the managed approuter rather than a standalone one — so the routing is configuration instead of a module, and the post covers what that changes at deploy time.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"jlong, published 2022-02-10"},"content:build-configure-and-deploy-cap-projects-to-the-cloud":{"href":"/content/build-configure-and-deploy-cap-projects-to-the-cloud","name":"Build, Configure, and Deploy SAP CAP Projects to the Cloud","kind":"blog","short":"CAP app with Fiori UI from creation to cloud deployment","line":"A full CAP application with a Fiori UI taken from creation to the cloud in one post. Long, and it covers the configuration between the two that shorter guides skip.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Dhanushwar, published 2025-05-20"},"content:build-solutions-for-sap-cloud-erp-with-confidence":{"href":"/content/build-solutions-for-sap-cloud-erp-with-confidence","name":"Build Solutions for SAP Cloud ERP with confidence","kind":"blog","short":"Partner Reference Application family for multi-tenant SaaS","line":"The Partner Reference Application family described as what it is meant to be: a golden path for a partner becoming a multi-tenant SaaS provider, covering building, running and integrating rather than only building.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"pankajkumar_agrawal, published 2026-04-24"},"content:build-your-ai-agent-prototype-for-free-using-sap-cap-langchain-and-ollama-cloud":{"href":"/content/build-your-ai-agent-prototype-for-free-using-sap-cap-langchain-and-ollama-cloud","name":"Build Your AI Agent prototype for free using SAP CAP, LangChain and Ollama cloud","kind":"blog","line":"A CAP Node.js service action calls an Ollama-hosted model through LangChain's ChatOllama, with the API key read from a .env file instead of any destination or credential binding — the hand-rolled-key route SAP's own SDK call exists to avoid. The same handler then builds a LangChain agent with createAgent and one mock tool, so a question about restaurants triggers a tool call and any other question does not, independent of the @cap-js/agents plugin's A2A-served harness.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"rajeevgoswami1, published 2026-08-29"},"content:building-a-cap-app-with-fiori-part-1-environment-and-hana-cloud":{"href":"/content/building-a-cap-app-with-fiori-part-1-environment-and-hana-cloud","name":"Building a CAP App with Fiori Integration – Part 1: Environment & HANA Cloud Setup","kind":"blog","short":"Trial account, CAP project and HANA Cloud setup for a Fiori app","line":"A trial account taken from nothing to a CAPM project with a HANA Cloud instance behind it. Everything here is prerequisites, which the author says outright — the application is in the parts that follow.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SuryaRamesh, published 2026-04-08"},"content:building-a-cap-service-with-cds-mcp-and-cline":{"href":"/content/building-a-cap-service-with-cds-mcp-and-cline","name":"Building a CAP service with cds‑mcp and Cline — HANDS‑ON SUPER BASIC GUIDE [ with screenshots ] 🍌","kind":"blog","short":"Building a CAP service with cds-mcp and Cline in VS Code","line":"Somebody following the CAP MCP server announcement all the way through, and writing down what it cost: a CAP service in VS Code wired to S/4HANA through a destination, plus the real bumps — Windows PATH and global installs — that the announcement does not have.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"smarchesini, published 2025-09-21"},"content:building-a-genai-inventory-assistant-with-cap-rag-and-a-vector-database":{"href":"/content/building-a-genai-inventory-assistant-with-cap-rag-and-a-vector-database","name":"Building a Generative AI-powered Inventory Assistant with SAP CAP, RAG, and Vector Database","kind":"blog","short":"Generative AI inventory assistant with CAP, RAG and a vector database","line":"An existing CAP stock application turned into a question-answering one, and the part worth reading is the schema: three tables, not one — the products, an archive of the text that was embedded, and a separate lookup table holding the vectors. Retrieval finds candidate products by similarity and then reads the real rows, so the answer is grounded in records rather than in the embedded text.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"furkan5, published 2025-11-07"},"content:building-a-pro-code-agent-on-sap-btp-part-2-the-agent-langgraph-genai-hub":{"href":"/content/building-a-pro-code-agent-on-sap-btp-part-2-the-agent-langgraph-genai-hub","name":"Building a Pro-Code Agent on SAP BTP — Part 2: The Agent (LangGraph + GenAI Hub)","kind":"blog","line":"Part 2 of a three-part series builds a separate, non-CAP Node/TypeScript agent that calls the Part 1 CAP service's MCP tools and reasons through SAP AI Core via @sap-ai-sdk/orchestration, using LangGraph's createAgent ReAct loop for provider-agnostic model calls across GPT, Claude and Gemini deployments. It explains why the tool's Zod schema and model-facing description are the agent's actual contract, the gotcha between a foundation-models deployment and an orchestration-scenario one, and how edge-case testing replaced date inference with a server-computed daysOverdue field after the agent wrongly called a delayed order 'on schedule'.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"rodfior, published 2026-08-20"},"content:building-a-pro-code-agent-on-sap-btp-part-3-joule-integration-via-a2a":{"href":"/content/building-a-pro-code-agent-on-sap-btp-part-3-joule-integration-via-a2a","name":"Building a Pro-Code Agent on SAP BTP — Part 3: Joule Integration via A2A","kind":"blog","line":"The third instalment of a three-part series deploys an already-built CAP service and LangGraph agent to SAP BTP, Cloud Foundry Runtime, wraps the agent in an A2A protocol server, and registers it with SAP Joule through a capability YAML and the @sap/joule-studio-cli, confirming the chain works end to end inside a real Joule assistant. It covers CAP's default JWT/XSUAA authentication in production, what a test deployment needs to get past it, and the cf push, mbt build and environment wiring that run both apps as separate Cloud Foundry containers. A closing section names what stays unfinished by design — a long-lived AI Core service key, no authentication on the BTP destination, no principal propagation — as the gap between this MVP and a production posture.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"rodfior, published 2026-08-20"},"content:building-a-real-time-currency-conversion-iflow-using-sap-cloud-integration-cpi":{"href":"/content/building-a-real-time-currency-conversion-iflow-using-sap-cloud-integration-cpi","name":"Building a Real‑Time Currency Conversion iFlow using SAP Cloud Integration (CPI)","kind":"blog","short":"Currency conversion integration flow in SAP Cloud Integration","line":"A step-by-step build of a currency-conversion integration flow in Cloud Integration: an HTTPS sender adapter accepts JSON, a content modifier stores the currencies and amount as exchange properties, and a Request-Reply step calls an external rate API before a Groovy script renders the result as an HTML table. A Global Exception Subprocess centralizes error handling for the whole flow, turning the MPL ID, error type and message into HTML and mailing it as a notification to a support address.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"RajeshwerRao_G_1, published 2026-04-01"},"content:building-a-saas-multitenant-cap-application-without-a-database":{"href":"/content/building-a-saas-multitenant-cap-application-without-a-database","name":"Building a SaaS Multitenant Application Using SAP CAP Framework — Without a Database","kind":"blog","short":"Multitenant CAP SaaS application without a database","line":"Multitenancy with the database taken out, which is a useful way to see what is left: the approuter and its tenant host pattern, the XSUAA instance in shared tenant mode, and the SaaS Registry binding that makes a subscription happen. Everything here is subscription lifecycle and routing, so the parts that are usually entangled with HDI container provisioning are visible on their own.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"DebashishDas, published 2026-05-06"},"content:building-an-analytical-list-page-with-cap-odata-v4":{"href":"/content/building-an-analytical-list-page-with-cap-odata-v4","name":"Building an Analytical List Page with CAP OData V4","kind":"blog","short":"Analytical List Page annotations on a CAP OData V4 service","line":"The annotations a CAP OData V4 service needs before an Analytical List Page will render — the write-up behind the cap-alp sample indexed here. Candid about its provenance: the author credits a GitHub repository she found the approach in, and notes that the repository is no longer available, which is the whole argument for indexing the reasoning rather than only linking the code.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-06-12"},"content:building-an-enterprise-application-with-fiori-elements-and-cap-part-1":{"href":"/content/building-an-enterprise-application-with-fiori-elements-and-cap-part-1","name":"Building an Enterprise Application Using Fiori Elements and CAP - Part 1","kind":"blog","short":"CAP backend service for a Fiori Elements enterprise app","line":"Part one of three, and it is all backend: the CAP service the UI will sit on. The author states the constraint the series works under — simple enough for someone new to the stack, without departing from the standard project layout.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Farooq, published 2025-12-10"},"content:building-an-enterprise-application-with-fiori-elements-and-cap-part-2":{"href":"/content/building-an-enterprise-application-with-fiori-elements-and-cap-part-2","name":"Building an Enterprise Application Using Fiori Elements and CAP – Part 2","kind":"blog","short":"Generating a List Report on a CAP service with Fiori Elements","line":"The generator run and the List Report it produces, on top of the service from part one. This is where the annotations start doing the work rather than the CDS entities.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Farooq, published 2025-12-10"},"content:building-an-enterprise-application-with-fiori-elements-and-cap-part-3":{"href":"/content/building-an-enterprise-application-with-fiori-elements-and-cap-part-3","name":"Building an Enterprise Application Using Fiori Elements and CAP – Part 3","kind":"blog","short":"Annotation-driven Object Page for a CAP and Fiori Elements app","line":"The Object Page, which the author points out is entirely annotation-driven — there is no page to design, only facets to declare. The last of the three.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Farooq, published 2025-12-10"},"content:building-an-enterprise-ready-sap-ai-agent-with-open-source":{"href":"/content/building-an-enterprise-ready-sap-ai-agent-with-open-source","name":"Building an Enterprise-Ready SAP AI Agent with Open Source","kind":"blog","short":"Self-hosted SAP chat agent with LibreChat, Ollama and MCP servers","line":"A self-hosted chat agent for SAP systems: LibreChat as UI and orchestrator with Entra ID sign-in and SharePoint connected, a local LLM through Ollama, and two MCP servers, mcp-sap-docs for public documentation and the ADT MCP server vibing-steampunk for the system itself. The ADT server runs in its read-only mode under a technical user with display authorisations only, so the agent can find a function module and pull its source, or locate a RAP business object with its behaviour definition and projection view, but cannot change anything. Two workflows show it, explaining what BAPI_DISPUTE_CREATE does in one system and planning a RAP action from a PDF specification, where the generated ABAP is copied into Eclipse by hand; the full setup is in the marianfoo/llm-client-sap-system-integration-sharepoint repository.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-03-03"},"content:building-an-llm-agent-in-cap-java-with-spring-ai":{"href":"/content/building-an-llm-agent-in-cap-java-with-spring-ai","name":"Building an LLM Agent in CAP Java with Spring AI","kind":"blog","short":"LLM agent in CAP Java with SAP AI SDK and Spring AI","line":"The Java counterpart to the author's own Node.js post, and written as one: connecting to AI Core with the SAP AI SDK, then calling an agent and a tool through Spring AI. Opens with a section on libraries and workflows — which framework does what, and what is left to you — before any code.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-06-08"},"content:building-an-llm-agent-using-cap":{"href":"/content/building-an-llm-agent-using-cap","name":"Building an LLM Agent using CAP","kind":"blog","short":"LLM agent built inside CAP with sap-ai-sdk and Langchain","line":"The argument is that CAP is already most of what an agent framework wants — services, handlers, a typed model — so the agent is built inside it rather than beside it. AI Core through sap-ai-sdk, then Langchain for the agent and its tools. Long, with a TLDR at the top for people who want the shape without the walk.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-05-27"},"content:building-an-s4hana-cloud-extension-with-cap-cloud-sdk-and-fiori-elements-part-1":{"href":"/content/building-an-s4hana-cloud-extension-with-cap-cloud-sdk-and-fiori-elements-part-1","name":"Part 1: How to build an extension application for SAP S/4HANA Cloud using CAP, SAP Cloud SDK and SAP Fiori elements","kind":"blog","short":"S/4HANA Cloud extension with CAP, Cloud SDK and Fiori elements","line":"The substantial part of a side-by-side extensibility series: CAP Node.js, Cloud SDK and Fiori elements against S/4HANA Cloud. Eighteen thousand characters, and the one to read if you only read one.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"former_member748, published 2020-12-01"},"content:building-an-s4hana-cloud-extension-with-cap-cloud-sdk-and-fiori-elements-part-2":{"href":"/content/building-an-s4hana-cloud-extension-with-cap-cloud-sdk-and-fiori-elements-part-2","name":"Part 2: How to build an extension application for SAP S/4HANA Cloud using CAP, SAP Cloud SDK and SAP Fiori elements","kind":"blog","short":"Second part of an S/4HANA Cloud extension with CAP and Fiori elements","line":"The second part, continuing the same extension. Opens with a recap of the stack rather than of the steps, which makes it readable on its own.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"former_member748, published 2020-12-20"},"content:building-an-sap-btp-agent-architecture-from-scratch-python-cap-hana":{"href":"/content/building-an-sap-btp-agent-architecture-from-scratch-python-cap-hana","name":"Building an SAP BTP Agent Architecture from Scratch: Python + CAP + HANA","kind":"blog","short":"Flask orchestrator with CAP and HANA answering via Claude","line":"A first-person build log of a Flask orchestrator on Cloud Foundry that reduces a question to keywords, searches a Node.js service's Documents entity, and passes what it finds to Claude for a grounded answer. Getting there means learning that HANA's fuzzy .search() matches one word but not a full sentence, fixed by splitting the query into terms and merging the per-term hits, and that provisioning SAP HANA Cloud hits a database-level free-tier quota rather than an HDI-container one, with a stopped instance needing to be resumed first. It also covers @sap/cds-dk needing to sit in dependencies rather than devDependencies, since Cloud Foundry's buildpack skips the latter, before cds deploy --to hana can run as part of the push.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"neilaspin, published 2026-07-28"},"content:building-and-consuming-an-mcp-server-in-sap-integration-suite-connecting-it-to-c":{"href":"/content/building-and-consuming-an-mcp-server-in-sap-integration-suite-connecting-it-to-c","name":"Building and Consuming an MCP Server in SAP Integration Suite - Connecting it to Claude and Joule","kind":"blog","line":"A hands-on walkthrough of building a native MCP server artifact on SAP Integration Suite's Integration Cell runtime: an API artifact built from an OpenAPI 3.0 specification (the author converted the SAP Business Accelerator Hub's Swagger 2.0 OData spec) through API Management policies, with the MCP artifact's own Authorization policy set to the api.invoke scope for Developer Hub credentials or a custom role such as ESBMessaging.send for BTP OAuth credentials. The same server is then wired to Claude as a custom connector over an OAuth redirect, and to a Joule Studio agent through BTP destinations carrying the sap.mcp.tools.enabled property, with three worked agents (CPI monitoring, a SuccessFactors testing flow, IDoc reprocessing) run from both.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Padmanathan_Vijayan, published 2026-09-11"},"content:building-custom-authentication-in-sap-cap":{"href":"/content/building-custom-authentication-in-sap-cap","name":"Building Custom Authentication in SAP CAP","kind":"blog","short":"Custom authentication in SAP CAP","chip":{"label":"Compatibility","tier":"fair","evidence":"cds 9, maintenance until 2027-06"},"ai":true,"meta":"published 2025-10-25"},"content:building-custom-joule-skills-via-rfc-guide-for-sap-s-4hana-and-ecc-integration":{"href":"/content/building-custom-joule-skills-via-rfc-guide-for-sap-s-4hana-and-ecc-integration","name":"Building Custom Joule Skills via RFC: Guide for SAP S/4HANA and ECC Integration","kind":"blog","short":"Custom Joule skill reading S/4HANA or ECC data over RFC","line":"Walks a Joule skill from a spoken question about a production order's status to an answer in SAP Build Workzone: a Cloud Connector tunnel and a destination in the BTP cockpit reach the S/4HANA or ECC system, a BAPI/RFC Action Project in SAP Build wraps the BAPI that reads the order, and Joule Studio, classic edition turns the action into a skill and deploys it. Establishing the connection and its destination before the action project exists is RFC connectivity and Destinations done for a low-code consumer rather than a CAP service. The action type here is BAPI/RFC, alongside the OData actions Joule Studio's own entry names.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Robin-Qiu, published 2026-04-01"},"content:building-durable-ai-agents-cds-langgraph-persistence":{"href":"/content/building-durable-ai-agents-cds-langgraph-persistence","name":"Building Durable AI Agents - Announcing the cds-langgraph-persistence Plugin","kind":"blog","short":"Announcement of cds-langgraph-persistence for durable AI agents","line":"The announcement, and the argument behind it. Treating an agent as a software architecture rather than a model with tools makes a list of production requirements — identity, authn and authz, multitenancy, persistence, event-driven flows, scalability, observability, CI/CD — and the author's point is that CAP already answers most of them for BTP, which is what makes LangGraph inside CAP Node.js worth doing. The post then narrows to one of those requirements, durability, and the checkpointer that supplies it. Written from a year of building agents next to real business systems rather than as a framework tour.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"merbinjanselm, published 2026-07-15"},"content:building-mcp-servers-with-sap-integration-suite":{"href":"/content/building-mcp-servers-with-sap-integration-suite","name":"Building MCP Servers with SAP Integration Suite: What to Design, Not Just How to Connect","kind":"blog","short":"Designing MCP server tools on SAP Integration Suite","line":"Argues that the tool design, not the connection, is the hard part of putting an API in front of an agent. Works one request — create a customer — through eight endpoint-shaped tools, where the agent carries ids between calls and rebuilds the business rules each run, then through a single intent-shaped create_customer that hides the sequence; and says what separates the two: a business operation for a name, parameters a caller can supply without a lookup, the rules in the server rather than the prompt, and a description written for an agent choosing a tool. The SAP Integration Suite half is short — three creation paths, an iFlow behind the API artifact when a tool has to cross systems — and it closes on a checklist to run before publishing.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-07-07"},"content:building-saas-products-on-sap-btp":{"href":"/content/building-saas-products-on-sap-btp","name":"Building SaaS Products on SAP BTP","kind":"blog","short":"Architecture essay on SaaS products on BTP","line":"An architecture essay rather than a build, written against SAP's own ABAP Cloud Partner Reference App material and explicitly extending it. Part one of a pair; the second is where the hard problem is.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"michal_majer, published 2025-09-30"},"content:building-secure-sapui5-applications-best-practices-for-developers":{"href":"/content/building-secure-sapui5-applications-best-practices-for-developers","name":"Building Secure SAPUI5 Applications: Best Practices for Developers","kind":"blog","short":"Secure coding habits for SAPUI5 apps","line":"A developer-facing rundown of secure coding habits for SAPUI5 apps: typed bindings and custom formatters to reject bad input before it reaches a handler, encodeHTML() instead of rendering untrusted HTML, keeping tokens and URLs out of local and session storage, and CSRF token handling on the ODataModel. It sets up linting with ESLint and an eslint-config-ui5 rule set to catch unsafe DOM access, eval calls and unused imports as part of CI, alongside the same input validation instinct: reject invalid input early rather than trust the backend to catch it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Manisha_19, published 2025-12-10"},"content:by-passing-function-modules-in-aunits":{"href":"/content/by-passing-function-modules-in-aunits","name":"By-passing function modules in aunits","kind":"blog","short":"Replacing function modules with test doubles in ABAP Unit","line":"Walks through registering a function module as a test double with CL_FUNCTION_TEST_ENVIRONMENT inside an ABAP Unit test class: class_setup names the function module to replace, an input configuration matches on the importing parameters, and an output configuration sets what the double returns before the calling class is asserted against it. The Function Test Double Framework is presented as ABAP Unit's way of testing code that calls a function module — procedural, without a class's native test-double support — without triggering the database, RFC or BAPI calls the real function module would make.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Jagadish_R31, published 2026-06-01"},"content:calculating-ibp-technical-week-key-figure-date-in-s-4hana-using-cds-view":{"href":"/content/calculating-ibp-technical-week-key-figure-date-in-s-4hana-using-cds-view","name":"Calculating IBP Technical Week \"Key Figure Date\" in S/4HANA Using CDS View","kind":"blog","short":"CDS view entity deriving the IBP technical week key figure date","line":"A custom ABAP CDS view entity, selecting from the standard I_CalendarDate view, to derive the first date of an SAP IBP \"technical week\" — the split IBP applies when a calendar week crosses a month boundary, a date S/4HANA does not expose natively. The calculated field is built with a case/when expression over dats_add_days, giving any calendar date's technical-week key figure date.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"bharatbajaj, published 2026-02-18"},"content:call-a-remote-odata-api-from-a-local-cap-java-project":{"href":"/content/call-a-remote-odata-api-from-a-local-cap-java-project","name":"How to Call a Remote OData API from Your Local CAP Java Project","kind":"blog","short":"Calling a remote OData API from a local CAP Java project","line":"The Business Accelerator Hub sandbox called from a CAP Java project on a laptop, with a concrete finish line — a localhost URL that returns business partners. Everything needed to get there is listed, Maven and JDK versions included.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Umezuki, published 2025-08-11"},"content:call-bapi-in-custom-entity-through-rap":{"href":"/content/call-bapi-in-custom-entity-through-rap","name":"CALL BAPI IN CUSTOM ENTITY THROUGH RAP","kind":"blog","short":"Read-only RAP custom entity calling BAPI_BANK_GETDETAIL","line":"Builds a read-only RAP Custom Entity, ZCE_BANK, whose query provider class calls BAPI_BANK_GETDETAIL directly instead of reading a CDS-based persistency, handling filtering, sorting, paging and the total count from the request object in IF_RAP_QUERY_PROVIDER~SELECT. It walks through the @UI annotations — headerInfo, presentationVariant, lineItem, selectionField, identification — that drive the entity's Fiori Elements list report, which is Fiori annotations on the ABAP door.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"harsha_reddy24, published 2025-12-09"},"content:calling-bound-and-unbound-cap-actions-from-a-fiori-elements-app":{"href":"/content/calling-bound-and-unbound-cap-actions-from-a-fiori-elements-app","name":"Calling bound / unbound CAP actions from Fiori elements application.","kind":"blog","short":"Calling bound and unbound CAP actions from Fiori elements","line":"invokeAction from the Fiori elements Edit flow API, with the difference between bound and unbound actions spelled out first because the call shape differs. Under three thousand characters and it answers exactly one question.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"vidhyasagarmule, published 2024-09-07"},"content:calling-claude-from-abap-how-i-wired-sap-ai-core-into-a-real-business-scenario":{"href":"/content/calling-claude-from-abap-how-i-wired-sap-ai-core-into-a-real-business-scenario","name":"Calling Claude from ABAP: How I Wired SAP AI Core into a Real Business Scenario","kind":"blog","short":"Calling Claude on SAP AI Core directly from ABAP","line":"A proof of concept wiring SAP AI Core's Claude deployment directly into ABAP with no CAP layer between them: two SM59 HTTP destinations, a hand-written OAuth 2.0 client-credentials exchange, and a regex to unwrap Claude's system/messages response envelope. Most of the effort goes into a system prompt that constrains the model to return one fixed JSON schema of filter fields, which ABAP deserialises with /UI2/CL_JSON and exposes through a RAP custom action so a Fiori search field can drive an OData V4 filter.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"PranayGaroo, published 2026-06-04"},"content:calling-the-sales-order-a2x-odata-v2-api-from-btp-using-a-service-consumption-mo":{"href":"/content/calling-the-sales-order-a2x-odata-v2-api-from-btp-using-a-service-consumption-mo","name":"Calling the Sales Order (A2X) OData V2 API from BTP Using a Service Consumption Model","kind":"blog","short":"Sales Order A2X OData V2 API via a Service Consumption Model","line":"Walks through ABAP's Service Consumption Model for OData V2 in ABAP Development Tools for Eclipse: generating a client proxy from the Sales Order (A2X) API's downloaded EDMX, then using it from an ABAP console class to create a deep sales order with items, texts, partners and pricing elements, read it back and patch a field. The client itself is built the way HTTP clients describes for SAP BTP ABAP environment: a communication arrangement resolved through cl_http_destination_provider=>create_by_comm_arrangement, handed to cl_web_http_client_manager=>create_by_http_destination, reaching the inbound SAP_COM_0109 scenario configured on the SAP S/4HANA Cloud Public Edition side.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Katsiaryna_Darapeika, published 2025-02-04"},"content:calling-the-sales-order-a2x-odata-v4-api-from-btp-using-a-service-consumption-mo":{"href":"/content/calling-the-sales-order-a2x-odata-v4-api-from-btp-using-a-service-consumption-mo","name":"Calling the Sales Order (A2X) OData V4 API from BTP Using a Service Consumption Model","kind":"blog","short":"Sales Order A2X OData V4 API from ABAP on BTP ABAP environment","line":"Walks through calling SAP S/4HANA Cloud Public Edition's Sales Order (A2X) OData V4 API from an ABAP class on SAP BTP ABAP environment: a communication arrangement on each side, a Service Consumption Model built in ADT from the API's downloaded EDMX, and a client proxy wired through cl_http_destination_provider=>create_by_comm_arrangement and cl_web_http_client_manager=>create_by_http_destination, the same HTTP clients pattern for ABAP for Cloud Development. The sample class creates a deep sales order with an item, a text, a partner and a pricing element, reads it back, then updates a field guarded by its ETag.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Katsiaryna_Darapeika, published 2025-02-06"},"content:cap-application-with-successfactors-and-hana-cloud":{"href":"/content/cap-application-with-successfactors-and-hana-cloud","name":"SFSFとHANA Cloudを使用するCAPのアプリケーション開発","kind":"blog","short":"CAP app between SuccessFactors and HANA Cloud, in Japanese","line":"In Japanese. A hands-on taking data between SuccessFactors and HANA Cloud through a CAP application — the connection setup, the data and service models, then read and write logic, and a Cloud Foundry deploy. Long enough to carry its own table of contents.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"rasai, published 2022-12-14"},"content:cap-backend-development-with-productivity-tools-hana-cloud-edition":{"href":"/content/cap-backend-development-with-productivity-tools-hana-cloud-edition","name":"2024/01最新版！Productivity Toolsを使ったCAPバックエンド開発②~HANA Cloud編~","kind":"blog","short":"CAP backend with Productivity Tools on HANA Cloud, in Japanese","line":"In Japanese, and the second of a pair — database connection through to calling the API from outside, with authorisation in between. The author dates the screenshots explicitly and warns that the UI may have moved since, which is the right disclaimer for a click-through guide.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"takayuki_tanaka, published 2024-01-09"},"content:cap-cds-and-fiori-practical-commands":{"href":"/content/cap-cds-and-fiori-practical-commands","name":"加速开发和部署的CAP CDS和Fiori一些实用命令","kind":"blog","short":"Reference of CAP CDS and Fiori commands, in Chinese","line":"In Chinese. A command reference rather than a walkthrough — cds import, cds compile, cds deploy --to sqlite, cds add hana, cds add xsuaa — grouped by what they are for. The kind of page that is more useful than a tutorial once you already know what you are doing.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"TiaXu, published 2022-10-21"},"content:cap-cds-cdl-csn-and-jq-finding-associations":{"href":"/content/cap-cds-cdl-csn-and-jq-finding-associations","name":"CAP, CDS, CDL, CSN and jq - finding associations","kind":"blog","short":"Finding associations in compiled CSN with jq","line":"How associations are actually represented once CDL is compiled into CSN, worked out by parsing the machine-readable form with jq. Useful less as a recipe than as a way in: anything that wants to reason about a CDS model without the compiler has to read CSN, and this is what that looks like from the outside.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-04-16"},"content:cap-consume-external-service-part-1":{"href":"/content/cap-consume-external-service-part-1","name":"CAP: Consume External Service - Part 1","kind":"blog","short":"CAP Node.js service consuming the NorthWind OData V4 service","line":"Builds a CAP Node.js service from scratch that consumes the public NorthWind OData V4 service: cds import turns its EDMX metadata into a CSN model under srv/external, and a CatalogService projects Products from it with a custom READ handler that runs the request through cds.connect.to('NorthWind'). Shows the same projection working two ways — against a CSV mocked under srv/external/data with the <service>-<entity>.csv naming the framework expects, then against the real service once credentials.url is added to the CAP configuration and @sap-cloud-sdk/http-client is installed — and defers routing that connection through the Cloud Foundry Destinations service to the next post in the series.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2020-05-26"},"content:cap-consume-external-service-part-3":{"href":"/content/cap-consume-external-service-part-3","name":"CAP: Consume External Service – Part 3","kind":"blog","line":"Built to work around CAP limitations at the time — OData-only external services, no custom headers, no complex OData queries — the post walks through cdse, the author's own module that resolves a named destination from the CAP project's configuration and calls axios directly, so a handler reads the same way whether it is tested locally against a raw URL or deployed against SAP Cloud Platform's Destinations service. A 2022 update at the top of the post calls it obsolete, since the CAP framework has since addressed the limitations it set out to work around. The walkthrough of cdse resolving a destination and switching between a local credentials.url and an SCP destination, including pulling credentials from VCAP_SERVICES when the lookup fails locally, still holds as a worked example.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2020-07-27"},"content:cap-cors-and-custom-headers":{"href":"/content/cap-cors-and-custom-headers","name":"CAP, CORS and custom headers","kind":"blog","short":"What the CAP server does about CORS and custom headers","line":"What CAP itself does about CORS, and where it stops. The starting point is a colleague's request and a deliberate constraint: @sap/approuter has full CORS support, but the author wanted to know what the CAP server offers on its own and how to extend it. Ends up covering preflight requests and custom servers, which is the mechanism a frontend hosted outside BTP actually runs into.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-04-11"},"content:cap-deep-insert-4-consume-remote-service":{"href":"/content/cap-deep-insert-4-consume-remote-service","name":"SAP Cloud Application Programming Model: Deep Insert (4) Consume Remote Service","kind":"blog","short":"CAP deep insert against a remote service","line":"Fourth in a long series on deep insert, and the one where the target stops being local. Twenty thousand characters, project files linked, and the earlier parts on UUIDs and multi-level structures are prerequisites the author names.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"CarlosRoggan, published 2019-07-24"},"content:cap-deep-insert-5-consume-remote-service-with-cloud-sdk":{"href":"/content/cap-deep-insert-5-consume-remote-service-with-cloud-sdk","name":"SAP Cloud Application Programming Model: Deep Insert (5) Consume Remote Service with SAP Cloud SDK","kind":"blog","short":"CAP deep insert against a remote service via SAP Cloud SDK","line":"The same thing again through SAP Cloud SDK, published as a deliberate comparison with the part before it — the author says outright that it does what the previous post did, differently. Reading both is how you see what the SDK is actually doing for you.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"CarlosRoggan, published 2019-07-26"},"content:cap-developers-call-to-action-for-sap-note-3747787":{"href":"/content/cap-developers-call-to-action-for-sap-note-3747787","name":"CAP Developers - Call to Action to mitigate and Apply Solution provided in SAP Note 3747787","kind":"blog","short":"Advisory on malicious npm versions and SAP Note 3747787","line":"Four malicious npm package versions published on 29 April 2026 that exfiltrate credentials and propagate into adjacent repositories, and what a CAP developer should check. A security advisory rather than a technique, and dated precisely for that reason.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Yogananda, published 2026-05-01"},"content:cap-dynamically-hide-ui-facets-in-fiori-elements":{"href":"/content/cap-dynamically-hide-ui-facets-in-fiori-elements","name":"CAP - Dynamically hide UI facets in Fiori Elements","kind":"blog","short":"Hiding Fiori Elements facets at runtime from CAP","line":"Facets hidden at runtime rather than at design time, which needs two things at once: UI.Hidden on the annotation side and a virtual element on the CDS side to decide it. Both are linked from the post, and it is barely two pages.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"AjayRathore, published 2023-12-08"},"content:cap-for-nodejs":{"href":"/content/cap-for-nodejs","name":"CAP for nodejs安全的暴露接口练习","kind":"blog","short":"Exposing a CAP Node.js service with separate security annotations","line":"Starting from the risk-management sample, the walkthrough adds an open ExternalAPI service beside the existing RiskService, then moves every security annotation into a separate service-auth.cds file: @requires: authenticated-user on one entity, role-scoped @restrict grants for RiskViewer and RiskManager on another. It tests the unprotected action locally with cds watch, calling it from Postman with the session cookie read out of SAP Business Application Studio's preview tab. It then deploys to BTP and reads Risks with a client-credentials OAuth token fetched from a service key of the cpapp-auth instance, after changing that entity's READ grant from RiskViewer to authenticated-user, which the post, citing capire's CDS-based Authorization page, describes as a grant for a technical user integrating systems rather than for access from a front end.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ArthurYang, published 2024-12-10"},"content:cap-foundry-engineering-sap-cap-applications-from-business-intent-with-guardrail":{"href":"/content/cap-foundry-engineering-sap-cap-applications-from-business-intent-with-guardrail","name":"CAP Foundry: Engineering SAP CAP Applications from Business Intent with Guardrailed AI","kind":"blog","short":"Prototype generating CAP projects from written business requirements","line":"CAP Foundry is a prototype that generates a CAP Node.js project with SAP Fiori elements from a written business requirement, discovering the actual data shape from a chosen source — SQLite, a configured SAP HANA HDI container, offline EDMX, live OData through the SAP Destination service, or approved SAP BTP ABAP objects — instead of inventing one. The generated application can carry a Fiori draft lifecycle with optimistic concurrency via ETags and annotation-driven Fiori elements list and object screens, localized independently of the underlying service contract. Attachments can be added with upload, download and delete, gated on a malware-scan status, and the generated project still has to compile, build and pass its generated tests before the run is accepted.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Shahid, published 2026-08-20"},"content:cap-full-stack-testing-with-bdd-flavour":{"href":"/content/cap-full-stack-testing-with-bdd-flavour","name":"CAP full-stack testing with BDD flavour","kind":"blog","short":"BDD testing of CAP apps with Gherkin and cds-cucumber","line":"Introduces Behavior-Driven Development for CAP applications: specifications written in Gherkin against a running app, validated by Cucumber, using cds-cucumber's ready-made step definitions for SAP Fiori elements and OData screens. The library handles service lifecycle — starting the app, assigning a port, driving the browser and authenticating a named user — and its OData steps know the service's entities and fields from the CDS model itself, so a scenario can open a list report, search it and assert row counts without hand-written glue code.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-10-10"},"content:cap-graphql-as-new-protocol":{"href":"/content/cap-graphql-as-new-protocol","name":"CAP: GraphQL as new protocol","kind":"blog","short":"Introduction to GraphQL with @cap-js/graphql","line":"Written days after @cap-js/graphql appeared, by somebody who went looking for it — an introduction to GraphQL alongside what the adapter actually does to a CAP service. The first outside account of the capability, and still one of very few.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"jhodel18, published 2023-03-18"},"content:cap-heaven-not-yet-but-you-can-see-it-from-here":{"href":"/content/cap-heaven-not-yet-but-you-can-see-it-from-here","name":"CAP Heaven? Not Yet — But You Can See It from Here","kind":"blog","short":"Assessment of CAP from a Java, cloud and ABAP background","line":"An assessment from someone with Java, Azure and AWS behind them as well as ABAP and Fiori, which is a rarer vantage point than it sounds. The title is the verdict.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-02-07"},"content:cap-in-the-age-of-ai-1-the-mcp-adapter":{"href":"/content/cap-in-the-age-of-ai-1-the-mcp-adapter","name":"CAP in the age of AI #1 - the MCP adapter","kind":"video","video":{"id":"VPJhkR9pHVM","url":"https://www.youtube.com/watch?v=VPJhkR9pHVM"},"short":"First episode on @cap-js/mcp and its describe and query tools","line":"The episode that opens the series and the first pass over @cap-js/mcp, with four of the people building it on the call. Two of the adapter's tools are worked through: describe, the one an MCP client reaches for first to get the overview of what it may do, and query, which the panel establishes as read-only. It also writes the server entry into a local agent's own configuration file, which episode three comes back to as auto-wiring.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-08-07"},"content:cap-in-the-age-of-ai-2-more-on-the-mcp-adapter":{"href":"/content/cap-in-the-age-of-ai-2-more-on-the-mcp-adapter","name":"CAP in the age of AI #2 - more on the MCP adapter","kind":"video","video":{"id":"5RBFxl5IqKs","url":"https://www.youtube.com/watch?v=5RBFxl5IqKs"},"short":"Token cost of the query tool and the third @cap-js/mcp tool","line":"What the query tool costs in tokens, and the third tool @cap-js/mcp registers. Counted against a model running locally under llama.cpp, the same query is 26 tokens as CQL and 173 as CQN, and the tool definition sent with every system prompt drops from around 5,500 tokens to around 600 — the reason CQL became the default format. The call tool then exposes a service's unbound actions and functions, as one generic tool or, behind a flag, one tool per action with its own description and input schema; a question from the chat about extension points gets the answer that the adapter does the tools, which the panel calls a small subset of the protocol.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-08-14"},"content:cap-in-the-age-of-ai-3-from-mcp-to-a2a":{"href":"/content/cap-in-the-age-of-ai-3-from-mcp-to-a2a","name":"CAP in the age of AI #3 - from MCP to A2A","kind":"video","video":{"id":"Nu_bEVFM7DM","url":"https://www.youtube.com/watch?v=Nu_bEVFM7DM"},"short":"@cap-js/mcp authorisation and the move from MCP to A2A","line":"The episode that finishes @cap-js/mcp with authorisation and then crosses to agents. @requires and @restrict are the same annotations CAP already has, and the plugin reads them to filter the tool list and the describe output per user and per request, so a model is not told about entities the caller cannot reach — where the OData metadata of the same service lists every exposed entity regardless. The second half annotates a service with @agent from @cap-js/agents, which serves it over A2A with an agent card and a chat preview, runs first against a mocked response and then against SAP AI Core bound with cds bind and a hybrid profile, and reuses the MCP adapter's tools rather than defining new ones.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-08-21"},"content:cap-in-the-age-of-ai-4-more-on-agents":{"href":"/content/cap-in-the-age-of-ai-4-more-on-agents","name":"CAP in the age of AI #4 - more on agents","kind":"video","video":{"id":"2nWIwzoNw-M","url":"https://www.youtube.com/watch?v=2nWIwzoNw-M"},"short":"Human-in-the-loop approvals and agent behaviour in @cap-js/agents","line":"Asking a human first, and telling the agent how to behave. Ordering a book through @cap-js/agents happens without a question being asked; the human-in-the-loop annotation on the action turns the same request into an approve-or-reject step, which the episode follows down to the A2A status update that stores the task in an input-required state in the database — A2A itself being JSON-RPC 2.0 over HTTP with server-sent events for the stream. The rest is instructions on disk: an agents.md in the service's own folder removes the question about how many copies to order, a skill under a skills folder is advertised by its description and read only when the agent decides the case applies, and either file makes the plugin build a deep agent instead of the plain one.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-09-11"},"content:cap-in-the-age-of-ai-5-agents-wrap-up":{"href":"/content/cap-in-the-age-of-ai-5-agents-wrap-up","name":"CAP in the age of AI #5 - agents wrap-up","kind":"video","video":{"id":"cMqSxjtN1hs","url":"https://www.youtube.com/watch?v=cMqSxjtN1hs"},"short":"Persistence and tracing around agents in CAP","line":"The agents topic closed out on what sits around the agent rather than inside it, now that the documentation has moved into capire. The chat preview's session is persisted in the database rather than kept in memory, traces go out through @cap-js/telemetry to a self-hosted MLflow under the OpenTelemetry conventions for generative AI, and the panel is explicit that @agent reuses the MCP adapter's code programmatically without serving an MCP endpoint. It ends in the xtravels sample, where a travel agent delegates to a hotel-service sub-agent and reaches a separately started flight service over MCP through the service binding CAP resolves anyway. Earlier in the hour the same agent answers from a model running on the presenter's laptop, reached as an OpenAI-compatible endpoint.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-10-02"},"content:cap-in-the-age-of-ai-6-vector-embeddings":{"href":"/content/cap-in-the-age-of-ai-6-vector-embeddings","name":"CAP in the age of AI #6 - vector embeddings","kind":"video","video":{"id":"tdtRgPy4B40","url":"https://www.youtube.com/watch?v=tdtRgPy4B40"},"short":"Vector embeddings in the CAP incident management sample","line":"Vector embeddings put to work in the incident management sample, answering whether this problem has been seen before. An embedding element of type Vector is calculated and stored from the vector_embedding function, so the database refreshes it whenever the text behind it changes, and cosine_similarity compares it with a freshly embedded string; because a title says little, a scheduled action first summarises each incident's conversation through a model on SAP AI Core and the embedding is taken from that summary. The similar-incidents list is a view joining incidents to themselves, with order and limit set in a before handler on the expanded query, and the vector element excluded from the service, since OData knows nothing about vectors — on SAP HANA Cloud the function is native, while SQLite needs packages added to the project.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-10-09"},"content:cap-in-the-age-of-ai-7-vector-embeddings-wrap-up":{"href":"/content/cap-in-the-age-of-ai-7-vector-embeddings-wrap-up","name":"CAP in the age of AI #7 - vector embeddings wrap-up","kind":"video","video":{"id":"JGXE952l4JM","url":"https://www.youtube.com/watch?v=JGXE952l4JM"},"short":"CAP embeddings moved from SQLite to SAP HANA Cloud with @cap-js/ai","line":"The same embeddings model taken from SQLite to SAP HANA Cloud, then handed to an agent. Locally it is @cap-js/ai that adds the vector functions SQLite lacks and downloads an all-MiniLM L6v2 ONNX model on first start; on HANA natural language processing has to be switched on, the model name is a mandatory argument, the vectors it returns are 768 dimensions, and dimensions must match on both sides of a comparison. HANA itself can be given SAP AI Core as a remote source for other embedding models, which a CDS.ql expression has to inject because the postfix notation only takes what the CDS model holds, and the hour ends with a search function over cosine similarity exposed over @cap-js/mcp, so an agent asked about low output from solar panels calls semantic search instead of writing the query itself.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-10-16"},"content:cap-in-the-age-of-ai":{"href":"/content/cap-in-the-age-of-ai","name":"CAP in the age of AI","kind":"series","short":"Seven Hands-on SAP Dev episodes on CAP's AI features","line":"Seven live episodes of Hands-on SAP Dev in which DJ Adams works through CAP's AI features with the people who build them, each one a screen-share against a sample project. The first three are @cap-js/mcp: the @mcp annotation on a service, the describe, query and call tools, CQL as the query format, and what authorisation takes out of the tool list. From episode three the run moves to A2A and @cap-js/agents — human approval of an action, agents.md and skills, session persistence, telemetry and sub-agents — and the last two episodes are vector embeddings in CDS, local on SQLite and native on SAP HANA Cloud.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-08-07"},"content:cap-initializr-generate-sap-cap-projects-in-seconds":{"href":"/content/cap-initializr-generate-sap-cap-projects-in-seconds","name":"CAP Initializr: Generate SAP CAP Projects in Seconds","kind":"blog","short":"Hosted CAP project generator in the shape of Spring Initializr","line":"A hosted project generator for CAP in the shape of Spring Initializr — pick the structure, dependencies and configuration in a browser and download the result, rather than running cds init and then wiring the facets by hand. The post is an MVP announcement asking for feedback, and the tool lives at a Cloud Foundry trial URL rather than on npm, so it is a direction being tested in public rather than something to depend on.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Saptarshi017, published 2026-03-23"},"content:cap-is-important-because-its-not-important":{"href":"/content/cap-is-important-because-its-not-important","name":"CAP is important because it's not important","kind":"blog","short":"Essay on what CAP is and why it is foundational","line":"An essay rather than a technique: what CAP actually is, what it gives you, and the case for treating it as foundational precisely because it is not the interesting part of an application. Written in 2019, when that argument still had to be made, and the title is the argument. Also recorded as a Tech Aloud podcast episode and a CodeTalk, both linked from the post.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2019-11-06"},"content:cap-java-implementation-for-authorization-management-service":{"href":"/content/cap-java-implementation-for-authorization-management-service","name":"CAP-JAVA implementation for Authorization Management Service (AMS)","kind":"blog","short":"Authorization Management Service in CAP Java","line":"Short and deliberately narrow: the author defers the concepts to kevin_li's post and writes only the CAP Java part — the development flow, designing the authorization model, and assigning and checking a policy. Read the other one first; this is the half that touches the code.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Harvey_Yao, published 2024-12-27"},"content:cap-java-nodejs-mixed-mono-multitenant-saas-with-shared-database":{"href":"/content/cap-java-nodejs-mixed-mono-multitenant-saas-with-shared-database","name":"Developing CAP java/node.js mixed mono Multitenant SaaS Applications with Shared Database","kind":"blog","short":"Mixed Java and Node.js CAP projects sharing one tenant database","line":"Two CAP projects, one Java and one Node.js, in one npm workspace sharing a single tenant database. The interesting part is which sidecar wins: both sub-projects get an MTX sidecar, both have cds.xt.SaasProvisioningService switched off, and a third onboarding project keeps provisioning to itself. Configuration listings rather than prose, and it assumes you already know why you would want this.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"xuelong, published 2025-01-08"},"content:cap-java-with-amazon-aurora-postgresql":{"href":"/content/cap-java-with-amazon-aurora-postgresql","name":"SAP CAP (Java) with Amazon Aurora PostgreSQL","kind":"blog","short":"CAP Java on Amazon Aurora PostgreSQL","line":"PostgreSQL, but the hyperscaler's own managed global database rather than BTP's option — Aurora, from CAP Java. One of a pair published the same day, the other being Azure's equivalent.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"shanthakumar_krishnaswamy, published 2023-08-02"},"content:cap-java-with-azure-cosmos-db-for-postgresql":{"href":"/content/cap-java-with-azure-cosmos-db-for-postgresql","name":"SAP CAP (Java) with Azure Cosmos DB for PostgreSQL","kind":"blog","short":"CAP Java on Azure Cosmos DB for PostgreSQL","line":"The Azure half of the pair: Cosmos DB speaking PostgreSQL, used from CAP Java. Same shape as the Aurora post, and reading both is how you see what is actually portable between them.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"shanthakumar_krishnaswamy, published 2023-08-02"},"content:cap-just-got-faster-whats-new-in-cds-caching-1-0":{"href":"/content/cap-just-got-faster-whats-new-in-cds-caching-1-0","name":"CAP just got faster: What's new in cds-caching 1.0","kind":"blog","short":"Changes in cds-caching 1.0, including the read-through API","line":"What changed in cds-caching at 1.0, announced at reCAP 2025 by the plugin's own maintainer. The substantive change is the read-through API: cache.rt.run(), send(), exec() and wrap() replace the bare cache.run() and cache.send(), and each returns the cache key and hit-or-miss metadata beside the result rather than the value alone. The second is quieter and easier to miss on an upgrade: user, tenant and locale stopped being folded into request-based cache keys by default and became opt-in through keyManagement, or per operation through a key template. Both of those still describe 3.x. What does not is the second half of the post: the metrics configuration it shows was reshaped at 2.0 and the statistics and dashboard settings were removed at 3.0, so take the monitoring and dashboard sections from the README instead. Read it as the successor to the introduction post, which still shows the deprecated calls.","chip":{"label":"Compatibility","tier":"fair","evidence":"cds-caching 1.0, cds 9, maintenance until 2027-06"},"ai":true,"meta":"published 2025-07-15"},"content:cap-lessons-learned-run-a-cap-app-using-sqlite-on-cloud-foundry":{"href":"/content/cap-lessons-learned-run-a-cap-app-using-sqlite-on-cloud-foundry","name":"SAP CAP Lessons Learned: Run a CAP app using SQLite on SAP BTP - Cloud Foundry","kind":"blog","short":"Running a CAP app with SQLite on Cloud Foundry","line":"SQLite past the point it is meant to go — deployed, not local. Written as a lesson learned rather than a recommendation, and it pairs with the author's own note that SQLite is single threaded.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"LucasMagriniRigo, published 2024-12-30"},"content:cap-lessons-learned-sqlite-is-single-threaded-hana-is-not":{"href":"/content/cap-lessons-learned-sqlite-is-single-threaded-hana-is-not","name":"SAP CAP Lessons Learned: SQLite is single threaded, HANA is not","kind":"blog","short":"Concurrency bugs hidden by single-threaded SQLite versus HANA","line":"A page long, and one of the more useful pages here: the local database serialises what the deployed one runs in parallel, so concurrency bugs are invisible until they are not. Filed by the author as something the tutorials do not make clear.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"LucasMagriniRigo, published 2025-01-22"},"content:cap-mcp-adapter-guide":{"href":"/content/cap-mcp-adapter-guide","name":"Model Context Protocol Adapter — CAP guide","kind":"doc","short":"CAP MCP adapter guide for Node.js and Java","line":"Documents @cap-js/mcp and com.sap.cds:cds-adapter-mcp, service annotations, generated describe/query/call tools and local client setup. The guide records Java doc-comment configuration, unbound-action-based data changes, incomplete XSUAA PKCE support and the adapter’s governance boundaries.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:cap-multitenancy-with-work-zone":{"href":"/content/cap-multitenancy-with-work-zone","name":"CAP multitenancy with Work Zone","kind":"blog","short":"Wiring SAP Build Work Zone into multitenant CAP apps by hand","line":"A gap in the tooling and the manual edit that closes it. cds add portal wires the Portal service, which is deprecated; Work Zone supports multitenancy but has no equivalent command. The author runs the portal command anyway and then rewrites the resource and module config in mta.yaml to point at Work Zone. Short, and honest that it is a workaround rather than a supported path.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-03-14"},"content:cap-node-js-expert-session-6-the-mcp-adapter":{"href":"/content/cap-node-js-expert-session-6-the-mcp-adapter","name":"CAP Node.js Expert Session #6 - The MCP Adapter","kind":"video","video":{"id":"CpgkXwNLPYQ","url":"https://www.youtube.com/watch?v=CpgkXwNLPYQ"},"short":"Adding @cap-js/mcp to a bookshop and querying it via an agent","line":"Daniel Schlachter and DJ Adams add @cap-js/mcp to a bookshop service, inspect its describe, query and action tools, and query the catalogue through an AI agent. The session distinguishes this runtime adapter from the development-time MCP server and demonstrates automatic registration of the running service with a local agent. The recording describes the adapter as beta in July 2026, with read-only queries and writes through unbound actions.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:cap-now-supports-reactjs-with-working-demo-ui5-web-components":{"href":"/content/cap-now-supports-reactjs-with-working-demo-ui5-web-components","name":"CAP Now Supports ReactJS - With working demo + UI5 Web components","kind":"blog","line":"A walkthrough of scaffolding a React front end onto a CAP Bookshop project with cds add react --into <app>, wiring UI5 Web Components for React to the generated OData service, then adding further facets one command at a time — cds add app-frontend, cds add ias or cds add xsuaa, and cds add hana — before cds up deploys the result with IAS authentication and a HANA Cloud database. Each command expands the project by one facet rather than scaffolding everything up front, the grow-as-you-go shape generators describes.","chip":{"label":"Compatibility","tier":"fair","evidence":"cds 9, maintenance until 2027-06"},"ai":true,"meta":"published 2026-06-09"},"content:cap-on-kyma-deploy-your-cap-apps-to-btp-kyma-runtime":{"href":"/content/cap-on-kyma-deploy-your-cap-apps-to-btp-kyma-runtime","name":"CAP on Kyma - Deploy your CAP apps to SAP BTP, Kyma Runtime","kind":"blog","short":"Deploying CAP apps to SAP BTP, Kyma Runtime with cds 6","line":"The post that superseded the author's own earlier one, written for cds and cds-dk 6 when Kyma deployment became something the tooling did rather than something you assembled. The current reference of the several Kyma posts here.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Uwe_Klinger, published 2022-07-12"},"content:cap-operator-on-kyma-part-2-runtime-architecture-and-cost":{"href":"/content/cap-operator-on-kyma-part-2-runtime-architecture-and-cost","name":"Part 2: Runtime Architecture & Cost efficiency gains","kind":"blog","short":"Kyma runtime architecture and cost for CAP multitenancy","line":"The technical half of the Kyma Evolution series: why a cluster tuned for CAP multitenancy is not just somewhere to run containers, and where the cost efficiency actually comes from.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ChristianWeiss, published 2026-02-04"},"content:cap-postgresql-local-debugging-using-docker-part-2":{"href":"/content/cap-postgresql-local-debugging-using-docker-part-2","name":"CAP PostgreSql setup local debugging using Docker - Part 2","kind":"blog","short":"Local PostgreSQL in Docker for CAP debugging","line":"PostgreSQL in a container so the local loop matches the deployed one — the thing SQLite quietly stops you doing. Short, and it assumes the project from part one already runs.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ramonlee5, published 2023-11-22"},"content:cap-rap-or-both-stop-hiding-behind-it-depends":{"href":"/content/cap-rap-or-both-stop-hiding-behind-it-depends","name":"CAP, RAP, or Both: Stop Hiding Behind 'It Depends'","kind":"blog","short":"Framework for choosing between CAP, RAP or both","line":"Opens by refusing the answer every other post on this gives — \"both are complementary, choose based on context\" — and then commits to a framework, including the parts usually left out: the staffing bias behind the decision, and what to do about a landscape with thousands of Z-objects. Argument, not tutorial.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-04-09"},"content:cap-service-to-fetch-create-sales-order-in-s4-hana-public-cloud":{"href":"/content/cap-service-to-fetch-create-sales-order-in-s4-hana-public-cloud","name":"CAP Service to Fetch + Create Sales Order in S4 HANA Public Cloud","kind":"blog","short":"CAP Node.js service reading and creating S/4HANA Cloud sales orders","line":"A CAP Node.js walkthrough imports SAP S/4HANA Cloud's Sales Order OData API with cds import, adds csrf handling to the generated service definition, and forwards a custom REST action's reads and writes to the remote proxy through cds.connect.to, the pattern Service integration covers. The mta.yaml binds the SAP S/4HANA Cloud extensibility service and a SAP Destination service instance so the S/4HANA Public Cloud system's address and credentials stay outside the application, per Destinations.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Mujeeb, published 2023-05-30"},"content:cap-specifying-the-queues-to-be-consumed-from-sap-event-mesh":{"href":"/content/cap-specifying-the-queues-to-be-consumed-from-sap-event-mesh","name":"CAP - Specifying the queues to be consumed from SAP Event Mesh","kind":"blog","short":"Consuming existing or multiple Event Mesh queues from CAP","line":"Written against the edge of the convention rather than the convention. CAP creates one queue per application and names it for you; this is the case where the queue already exists, belongs to someone else, or there is more than one of them. The oldest Event Mesh post indexed here, and the only one about taking the naming back.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"schardosin, published 2021-06-21"},"content:cap-techbytes-input-validation":{"href":"/content/cap-techbytes-input-validation","name":"#CAP-TechBytes Input Validation","kind":"blog","short":"CAP input validation annotations and their error handling","line":"The annotations one at a time — @mandatory, @assert.unique, @assert.range including the enum form, @assert.format — each with what it produces. Ends on error handling, which is the part that decides whether any of it is usable from a UI.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Thajunniza, published 2023-07-07"},"content:cap-typescript-fiori-typescript-and-live-reload-initial-setup":{"href":"/content/cap-typescript-fiori-typescript-and-live-reload-initial-setup","name":"CAP Typescript + Fiori Typescript + live reload Initial app setup","kind":"blog","short":"Full-stack TypeScript setup for CAP and Fiori with live reload","line":"A full-stack TypeScript starting point recorded as it was arrived at — the terminal commands and the configuration files, in order, for the CAP side, the conversion to TypeScript, and then the Fiori side. The author is explicit that it takes a while to go through, which is the honest framing for a setup that has this many steps.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Christophe_SW, published 2023-06-18"},"content:cap-unit-testing-using-mocha-and-chai":{"href":"/content/cap-unit-testing-using-mocha-and-chai","name":"CAP: Unit Testing using Mocha and Chai","kind":"blog","short":"Adding Mocha and Chai unit tests to an existing CAP service","line":"Unit tests added to an existing CAP service rather than written alongside a new one, which is the harder and more common case. Mocha and Chai wired up by hand, from a time before cds.test was the obvious answer.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"jhodel18, published 2020-05-31"},"content:cap-websockets":{"href":"/content/cap-websockets","name":"CAP WebSockets","kind":"blog","short":"WebSockets in CAP solved by hand in 2021, before an adapter","line":"The early one, from 2021, before an adapter existed to make it ordinary. Read for what the problem looked like when it had to be solved by hand.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"vvdries, published 2021-01-26"},"content:cap-with-fiori-elements-actions-on-list-report-and-object-page-part-1":{"href":"/content/cap-with-fiori-elements-actions-on-list-report-and-object-page-part-1","name":"CAP with Fiori Elements: Actions on List Report / Object Page using Annotations - Part1","kind":"blog","short":"Placing actions on List Report and Object Page by annotation, part 1","line":"Actions on their own, at length — where an action can be placed, what the annotation looks like for each position, and what changes between the List Report and the Object Page. Part one of two.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Ajit_K_Panda, published 2023-12-31"},"content:cap-with-fiori-elements-actions-on-list-report-and-object-page-part-2":{"href":"/content/cap-with-fiori-elements-actions-on-list-report-and-object-page-part-2","name":"CAP with Fiori Elements: Actions on List Report / Object Page using Annotations – Part2","kind":"blog","short":"Second half of the Fiori elements actions annotation pair","line":"The second half of the actions pair, published the same day. Between them they cover more ground on this one annotation than the documentation does in one place.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Ajit_K_Panda, published 2023-12-31"},"content:cap-with-fiori-elements-configure-multiple-views-on-list-report-tables":{"href":"/content/cap-with-fiori-elements-configure-multiple-views-on-list-report-tables","name":"CAP with Fiori Elements: Configure Multiple Views on List Report Tables","kind":"blog","short":"Multiple filtered table views on a Fiori elements List Report","line":"Several tabs over one entity, each with its own filter — the multiple-views annotation, which is one of the few Fiori elements features that changes the shape of the page rather than its content.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Ajit_K_Panda, published 2023-12-25"},"content:cap-with-fiori-elements-side-effects-custom-actions-dynamic-expressions":{"href":"/content/cap-with-fiori-elements-side-effects-custom-actions-dynamic-expressions","name":"CAP with Fiori Elements: Side Effects, Custom Actions, Dynamic Expressions","kind":"blog","short":"Side effects, custom actions and dynamic expressions in Fiori elements","line":"The first of the author's Fiori elements posts, and the widest: side effects, which are the annotation that tells the UI a field changed something else; custom actions; and dynamic expressions. The three that turn a generated app into a usable one.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Ajit_K_Panda, published 2022-12-23"},"content:cap-with-local-app-previews":{"href":"/content/cap-with-local-app-previews","name":"CAP with Local App Previews – Tips for Smooth Development","kind":"blog","short":"Tips on UI5 virtual endpoints for local app previews in CAP","line":"UI5's virtual endpoints remove the sandbox files a local preview used to need, and this is what that means for a CAP project specifically. Tips from trying it rather than an announcement of it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"MioYasutake, published 2025-08-16"},"content:cap-with-mongodb":{"href":"/content/cap-with-mongodb","name":"My Learnings in SAP-CAP Using MongoDB","kind":"blog","short":"Running CAP against MongoDB with handlers calling the driver","line":"CAP against a document database, which the supported list does not include — and the way it gets there is the point. The CDS model and the service definitions stay; the persistence is replaced by handlers calling the mongodb driver, with @sap/cds-odata-v2-adapter-proxy in front so a UI5 application can consume it. Learnings rather than a supported path, and the only MongoDB entry here.","chip":{"label":"Compatibility","tier":"good","evidence":"holds, checked 2026-09-09"},"ai":true,"meta":"published 2021-01-11"},"content:cap-with-postgresql-db-alternate-to-hana-cloud-part-1":{"href":"/content/cap-with-postgresql-db-alternate-to-hana-cloud-part-1","name":"CAP with PostgreSQL DB alternate to HANA Cloud DB - Part 1","kind":"blog","short":"Bootstrapping a CAP project on PostgreSQL instead of HANA Cloud","line":"Bootstrapping a CAP project on PostgreSQL, framed as a choice that depends on the client rather than on the technology. Short, and part two is where it gets debuggable.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ramonlee5, published 2023-10-10"},"content:capm-basics-part-2":{"href":"/content/capm-basics-part-2","name":"CAPM Basics - Part 2","kind":"blog","line":"Walks through deploying a CAP application to SAP BTP, Cloud Foundry Runtime: provisioning a SAP HANA Cloud instance and HDI container, then running cds add hana and cds add xsuaa --for production, cds build --production, and an MTA build and deploy. Tests the deployed service in Postman with an OAuth 2.0 client credentials token from the XSUAA binding (SAP Authorization and Trust Management service), explicitly leaving out any role templates or scopes.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"archisman92, published 2025-02-28"},"content:capm-basics-part-4":{"href":"/content/capm-basics-part-4","name":"CAPM Basics - Part 4","kind":"blog","line":"Part 4 of a CAPM Basics series binds the deployed XSUAA and SAP HANA Cloud service instances with cds bind and runs the project against them from a laptop via cds watch --profile hybrid, the hybrid-testing loop @sap/cds-dk provides. It then restricts the service with @restrict (READ granted to a Viewer role, full access to Admin) and adds OData Capabilities restrictions plus @odata.draft.enabled so a Fiori elements client renders create, update and delete without UI code. It closes by adding a UI module with the SAP Fiori Generator, wiring an approuter via cds add approuter to forward the auth token, and updating the SAP Authorization and Trust Management service instance with the generated redirect URI before redeploying.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"archisman92, published 2025-05-10"},"content:capturing-background-job-errors-in-sap-using-the-application-log-slg0-slg1":{"href":"/content/capturing-background-job-errors-in-sap-using-the-application-log-slg0-slg1","name":"Capturing Background Job Errors in SAP Using the Application Log (SLG0/SLG1)","kind":"blog","short":"Logging background job errors with ABAP's Application Log","line":"Walks through ABAP's Application Log framework for recording errors from a background job that has no screen to show them on: defining an Object and Sub-object in SLG0, then building the log in code with BAL_LOG_CREATE, adding a free-text or message-class entry with BAL_LOG_MSG_ADD_FREE_TEXT or BAL_LOG_MSG_ADD, and persisting it with BAL_DB_SAVE so it survives after the job finishes. The worked example is a report inserting student records into a custom table, scheduled via SM36 and reviewed afterwards in SLG1, filtered by the Object and Sub-object that created it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"bhuvaneswarg, published 2026-08-26"},"content:capval-a-project-is-born":{"href":"/content/capval-a-project-is-born","name":"CAPVAL: A project is born","kind":"blog","line":"This second CAPVAL post announces CAPVAL version 2.0, made compatible with CAP v8 after breaking changes there, with the fix shown as a custom cds.middlewares.after error handler. It restates the plugin's @validation.message annotation alongside standard annotations such as @mandatory as the input validation mechanic the project builds on, and the release otherwise adds automated tests and release-automation GitHub Actions rather than new annotations.","chip":{"label":"Compatibility","tier":"poor","evidence":"cds 8, line ended"},"ai":true,"meta":"published 2024-08-26"},"content:case-insensitive-filters-in-fiori-elements-with-a-cap-backend":{"href":"/content/case-insensitive-filters-in-fiori-elements-with-a-cap-backend","name":"Case-insensitive filters in Fiori Elements (List report + CAP)","kind":"blog","short":"Case-insensitive List Report filters fixed in a CAP backend","line":"A blocker rather than a feature: filters on a List Report are case-sensitive, the business wanted them not to be, and the CAP backend is where it gets fixed. Node and Java both.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Kishannaicker, published 2022-04-26"},"content:ccm-calculate-key-figures":{"href":"/content/ccm-calculate-key-figures","name":"CCM - Calculate Key Figures","kind":"blog","short":"How Clean Core Measurement turns ATC findings into a debt score","line":"Explains how the Clean Core Measurement (CCM) project turns ABAP Test Cockpit findings into the Technical Debt Score shown on its Clean Core Dashboard: messages from the ABAP_CLEAN_CORE_READINESS check are weighted by severity level (B/C/D) and summed per object, while the object's overall classification follows its highest message level rather than the point total. Covers where the calculation can be tuned — configurable weights, an exemption process, and additional metrics for documented but unreleased API use — and how the resulting score and classification drive the object list and per-object processing views.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Björn S., published 2026-08-05"},"content:cds-deploy-to-sqlite-in-memory-database":{"href":"/content/cds-deploy-to-sqlite-in-memory-database","name":"cds deploy to sqlite in-memory database","kind":"blog","short":"Short note on what cds deploy --to sqlite does and prints","line":"Two pages on what cds deploy --to sqlite does and what it prints. A reference note rather than an argument, and the shortest entry in this capability.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"AndrewBarnard, published 2021-04-25"},"content:cds-launchpad-plugin-supercharged":{"href":"/content/cds-launchpad-plugin-supercharged","name":"cds-launchpad-plugin supercharged & ready for the future - CAP Plugin, UI5 Tooling support & Async Launchpad","kind":"blog","short":"Changes to cds-launchpad-plugin: CAP plugin, UI5 Tooling, async","line":"The maintainer on a set of changes rather than on the plugin's original purpose, which is indexing every SAPUI5 project in a workspace into one sandbox launchpad so all of them can be tested together. What moved: it became a CAP plugin, gained UI5 Tooling support, and moved to the async launchpad — each framed as keeping pace with where SAPUI5 itself is going rather than as a feature.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-12-11"},"content:cds-toon-ai-protocol-adapter-cutting-token-costs":{"href":"/content/cds-toon-ai-protocol-adapter-cutting-token-costs","name":"cds-toon-ai-protocol-adapter: a pragmatic way to cut AI token costs using SAP CAP","kind":"blog","short":"Plugin bringing TOON to CAP services to cut LLM token costs","line":"Names a cost most CAP-plus-LLM writing ignores: every JSON payload streamed to a model is billed by its verbosity, in latency as well as money. The plugin brings TOON — Token-Oriented Object Notation — to a CAP service so the wire format changes without the service code doing so, in a REST variant and an OData one, with token counts reported on both sides.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-01-25"},"content:cds-ts-dispatcher-simplifying-sap-cap-typescript-development":{"href":"/content/cds-ts-dispatcher-simplifying-sap-cap-typescript-development","name":"CDS-TS-Dispatcher: Simplifying SAP CAP TypeScript Development","kind":"blog","short":"Introduction to a TypeScript dispatcher library for CAP handlers","line":"The first of a pair introducing the author's own libraries, and it states what it is reacting to: CAP derives OData services from a CDS model, but the communication between business logic, service and persistence layers is left to you, and the earlier attempt at the service-layer half, cds-routing-handler, appeared unmaintained against newer CAP. The dispatcher is the answer offered for that layer.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-11-13"},"content:cds-ts-repository-simplify-cap-entity-persistence":{"href":"/content/cds-ts-repository-simplify-cap-entity-persistence","name":"CDS-TS-Repository: Simplify SAP CAP Entity persistance with BaseRepository","kind":"blog","short":"Typed BaseRepository for CAP entity persistence in TypeScript","line":"The persistence half of the same pair, three days later: a BaseRepository putting entity access behind a typed repository rather than CQN written inline in a handler. Shares its opening argument with the dispatcher post — the layer between business logic and persistence is the part CAP leaves open — and the two are designed to be used together.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-11-16"},"content:centralized-error-handling-in-sap-cloud-integration":{"href":"/content/centralized-error-handling-in-sap-cloud-integration","name":"Centralized Error Handling in SAP Cloud Integration","kind":"blog","short":"Routing Cloud Integration flow errors to a central logger flow","line":"Business integration flows in Cloud Integration route their runtime errors to a shared Central Error Logger flow through an Exception Subprocess and a ProcessDirect adapter, instead of each flow handling failures on its own. The logger normalises the incoming error data — flow name, message ID, correlation ID, timestamps — and formats it into an HTML email sent through a Mail Receiver Adapter. The author validated the same logger flow, unchanged, against a second, more complex business flow with routers and multiple email notifications.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"vishaladhikari, published 2026-03-27"},"content:cf-create-app-end-to-end-apps-deployed-to-cloud-foundry":{"href":"/content/cf-create-app-end-to-end-apps-deployed-to-cloud-foundry","name":"cf-create-app: Create End-to-End apps and deploy to Cloud Foundry in minutes","kind":"blog","short":"2020 generator creating and deploying apps to Cloud Foundry","line":"A generator from 2020 that goes further than scaffolding — an end-to-end application created and deployed to Cloud Foundry in one run. Predates most of what cds add now does.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"former_member604013, published 2020-07-29"},"content:ci-cd-for-hana-cloud-with-cds-add-pipeline":{"href":"/content/ci-cd-for-hana-cloud-with-cds-add-pipeline","name":"SAP BTP Showcase – SAP Continuous Integration and Delivery (SAP CI&D) for SAP HANA Cloud","kind":"blog","short":"CI/CD pipeline for HANA Cloud database changes via cds add pipeline","line":"A pipeline for the database half of a CAP application, built with cds add pipeline — one command that writes a Jenkinsfile and a .pipeline folder — and then the mta module that makes a database change deploy itself.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"gcalixtos, published 2021-01-27"},"content:claude-code-via-mcp-poor-man-s-joule-or-a-practical-tool":{"href":"/content/claude-code-via-mcp-poor-man-s-joule-or-a-practical-tool","name":"Claude Code via MCP: Poor man's Joule, or a practical tool?","kind":"blog","short":"Driving Claude Code against an ABAP system through vibing-steampunk","line":"The author drives Claude Code against a live ABAP system through vibing-steampunk, an ADT-to-MCP bridge that locks and unlocks objects on the agent's behalf so the model can concentrate on the change: extending an ALV report, turning its SELECT into a CDS view, and answering ad-hoc questions over the report's own data. Where Claude got it wrong — a RAP scaffold missing the fields RAP's locking mechanism needs, ORDER as a reserved word — the piece asks where that knowledge would go as a Skill, and concludes Skills' filesystem basis has no home in a system reached only through MCP.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"k1000, published 2026-03-08"},"content:claude-ported-abap-functions-to-new-api":{"href":"/content/claude-ported-abap-functions-to-new-api","name":"Claude ported ABAP functions to new API","kind":"blog","short":"Claude Code and sapcli repairing RFC modules for abapGit and gCTS","line":"A first-person account of using Claude Code, driven through the sapcli command line, to install and repair RFC function modules that let a CI pipeline control abapGit and gCTS remotely, rather than treating git as a way to read ABAP source. Instead of trusting a local checkout, Claude read the abapGit login manager class and queried the target system's own type catalogue through sapcli, then used what it found to update a renamed API method and swap a TABLES parameter's structure for the table type BAPIRET2_T.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"jakub_filak, published 2026-03-16"},"content:clean-core-by-design-event-enablement-cockpit-as-a-core-integration-enabler-in-s":{"href":"/content/clean-core-by-design-event-enablement-cockpit-as-a-core-integration-enabler-in-s","name":"Clean Core by Design: Event Enablement Cockpit as a Core Integration Enabler in SAP S/4HANA","kind":"blog","short":"Wiring on-premise S/4HANA into Event Mesh as an event producer","line":"Walks through wiring an on-premise SAP S/4HANA system into Event Mesh as an event producer, using the Enterprise Event Enablement framework: creating the service instance and its service key, then an RFC destination and OAuth 2.0 client configuration in SPRO so a channel can publish native S/4 business events over AMQP or MQTT. Covers the channel's reconnect and quality-of-service parameters and activating the Event Discovery Service, and notes that SAP ECC needs a third-party add-on for the same events since S/4's native Business Events are not available there.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"HammadSharif1, published 2026-06-01"},"content:clean-core-index":{"href":"/content/clean-core-index","name":"Clean Core Index","kind":"blog","short":"Company-built KPI scoring custom ABAP code by object type","line":"Describes a company-built KPI, the Clean Core Index, that scores existing custom ABAP code by object type — reports, function modules, SAPScript/Smartforms, ATC S/4 readiness-check findings, user exits and modifications — each weighted by a severity the author sets for redesign effort and upgrade risk, with counts read off CDS views built for the purpose. The index is the author's own definition rather than an official one and does not by itself certify public-cloud readiness, but tracking it weekly shows where custom code still blocks a move to ABAP Cloud and lets progress be read per module or per object type.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"patrick_weber11, published 2025-08-15"},"content:clean-core-maturity-and-the-new-extensibility-levels":{"href":"/content/clean-core-maturity-and-the-new-extensibility-levels","name":"Clean Core maturity and the new Extensibility Levels","kind":"blog","short":"SAP's Clean Core Levels, successor to the 3-Tier Development Model","line":"Sets out SAP's Clean Core Level concept, the successor to the 3-Tier Development Model, which grades extensibility by how upgrade-safe it is rather than by where it runs: Level A covers on-stack extensions on released RAP and CDS views plus side-by-side apps on BTP, Level B covers upgrade-stable classic APIs listed in the Cloudification Repository, Level C covers internal-object use flagged through SAP's Changelog for SAP Objects, and Level D covers direct modifications and implicit enhancements that ABAP Test Cockpit checks must block. Choosing between an on-stack and a side-by-side implementation is left to the SAP Application Extension Methodology, and the official Level classifications are filed under SAP Note 3578329.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"EmilianoAyub, published 2025-12-19"},"content:clean-core":{"href":"/content/clean-core","name":"Clean Core清洁核心概况介绍","kind":"blog","short":"Chinese overview of Clean Core and its A-D extension grading","line":"Explains Clean Core as SAP's architecture methodology for decoupling custom code from standard code, and walks through the A-D grading SAP uses for a single extension's cleanliness: D for direct modification of standard tables, programs, classes or functions, or disallowed patterns such as implicit enhancements; C for internally developed functions calling unreleased APIs; B for using only SAP's classic or released APIs (BAPI, ALV Grid, BAdI); A for side-by-side extensions reached only through released interfaces onto the SAP Build extension suite. It lays out a six-step roadmap for reaching Clean Core — inventorying existing extensions, setting a reduction target, surveying SAP's extension routes (SAP GUI SE80, Fiori custom fields and logic, BTP high/low-code, workflow/RPA), writing a decision tree, splitting new development from legacy migration, and reviewing periodically — while noting that in-app development is not inherently unclean and that real decisions should weigh ROI rather than follow the theory absolutely.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ArthurYang, published 2025-11-10"},"content:cloud-integration-activating-enterprise-messaging-capabilities-for-jms-queue-cf":{"href":"/content/cloud-integration-activating-enterprise-messaging-capabilities-for-jms-queue-cf","name":"Cloud Integration- Activating Enterprise Messaging Capabilities for JMS Queue - CF","kind":"blog","short":"Fixing a JMS iFlow deploy error by enabling Message Queues","line":"Traces a JMS iFlow deployment failure on Cloud Integration (Cloud Foundry) — ERROR_MISSING_SERVICE_KEY — to the Message Queues (Enterprise Messaging) capability being switched off on the tenant rather than a missing service key, since an edition upgrade does not turn it on by itself. Resolves it by enabling Message Queues under Manage Capabilities, which restarts the tenant, then redeploying the affected iFlows.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Pavan_Koppula1, published 2026-07-21"},"content:cloud-integration-with-document-ai":{"href":"/content/cloud-integration-with-document-ai","name":"Cloud Integration with Document AI","kind":"blog","line":"Walks through connecting Cloud Integration to SAP Document AI: an iFlow posts a prescription PDF to Document AI's job API, polls the job endpoint until it completes, and a groovy script reads back the result, keeping only the fields above a stated 60% confidence threshold. The scenario is a hospital extracting a new patient's past illnesses, allergies and blood group from uploaded prescriptions, matched against a custom extraction schema.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"PriyankaChak, published 2025-08-10"},"content:cloud-native-with-abap-cloud-the-transactional-outbox-pattern":{"href":"/content/cloud-native-with-abap-cloud-the-transactional-outbox-pattern","name":"Cloud-Native with ABAP Cloud – The Transactional Outbox Pattern","kind":"blog","short":"Transactional outbox pattern in ABAP Cloud with bgPF and RAP","line":"Implements the transactional outbox pattern in ABAP Cloud's background processing framework (bgPF): a RAP business object's save sequence registers a bgPF handler implementing IF_BGMC_OP_SINGLE, and the RAP runtime runs it, and only then emits the message, after the database commit succeeds, so a rolled-back transaction emits nothing. The post walks through the full working example published as SAP-samples/abap-platform-rap-transactional-outbox-with-bgpf.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-11-12"},"content:combine-power-automate-microsoft-teams-approvals-and-an-sap-cloud-application-pr":{"href":"/content/combine-power-automate-microsoft-teams-approvals-and-an-sap-cloud-application-pr","name":"Combine Power Automate, Microsoft Teams Approvals and an SAP Cloud Application Programming Model (CAP) App","kind":"blog","short":"CAP app approvals through Power Automate and Microsoft Teams","line":"Weighs how to give an approver in a bookshop-demo CAP app a screen to act on — S/4HANA's My Inbox via a custom task provider class, the not-yet-GA SAP Task Center, Microsoft Outlook, Microsoft Teams or plain mail — and settles on Teams approvals, wired to a Power Automate flow that calls the app's OAuth2-secured API through a custom connector. The setup worked, but every request runs as the one user who created the connection, since OAuth2 client credentials flow isn't yet supported for Power Automate's custom connectors.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2021-04-29"},"content:communicate-from-a-java-application-to-abap-via-websocket-rfc-using-jco-migratio":{"href":"/content/communicate-from-a-java-application-to-abap-via-websocket-rfc-using-jco-migratio","name":"Communicate from a Java Application to ABAP via WebSocket RFC using JCo - Migration Guide","kind":"blog","short":"Migrating a JCo setup from CPIC-based RFC to WebSocket RFC","line":"Walks a JCo setup from classic CPIC-based RFC to WebSocket RFC: swap the application- or message-server logon properties for jco.client.wshost and jco.client.wsport, and implement DestinationDataProvider's getSSLContext (and, for mTLS, getClientCertificate) since the new connection runs over TLS. It covers building the PKI trust on both sides — a local PKCS12 keystore for the Java side, STRUST's SSL-Server Standard certificate exported and imported for mutual trust on the ABAP side — and notes that on BTP, JCo paired with the Destination service already implements this via the Connectivity service, so the custom SSLContext work can be skipped there.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"simon_luser, published 2025-01-21"},"content:completing-the-b2b-migration-into-sap-integration-suite-vision":{"href":"/content/completing-the-b2b-migration-into-sap-integration-suite-vision","name":"Completing the B2B migration into SAP Integration Suite vision","kind":"blog","line":"Walks through migrating SAP PI's B2B integrations — EDIFACT, X12 and other partner formats — into Trading Partner Management in SAP Integration Suite: recording test messages from SAP PI, creating partner profiles, and filling a Self Partner Agreement template that references the MIG and MAG guidelines SAP's own migration path builds on. The author's migration tool, Figaf, turns each Operation Mapping into a Process Direct flow, carrying its UDFs to Groovy or SAP's Cloud Integration Function Libraries, then reruns the recorded test cases against the result.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"DG, published 2025-09-09"},"content:computed-field-example-in-cap":{"href":"/content/computed-field-example-in-cap","name":"Computed field example in CAP","kind":"blog","short":"Counting associated entities in CAP with CDS and service events","line":"An answer to a Community question — how to count the entities on the far side of an association — written up as a short post rather than left in a thread. The answer combines CDS with Node.js service events, which is the seam worth noticing: some of what looks like modelling is expressed in the model and some has to be computed when the request arrives, and the boundary between them is not obvious from either side.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2019-08-21"},"content:configure-journal-entry-posting-approval-from-store-template-in-build-process-au":{"href":"/content/configure-journal-entry-posting-approval-from-store-template-in-build-process-au","name":"Configure Journal Entry Posting Approval from Store Template in Build Process Automation","kind":"blog","short":"Deploying the Journal Entry Posting Approval template on-premise","line":"Walks through deploying SAP's Journal Entry Posting Approval template from the SAP Build Process Automation Store against an on-premise S/4HANA system that has no Secure Network Connection: destinations for S/4HANA via Cloud Connector, for SAP Document Management service, integration option to hold the approval's supporting documents, and for the BPA service and its SMTP mail. It then swaps the template's SNC action groups for basic-connection BAPI calls and deploys the approval's UI5 applications so the task lands in My Inbox, with a Desktop Agent registered to run the unattended document-check and document-post automations.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-01-28"},"content:configuring-sap-cloud-integration-for-an-ibp-to-s-4hana-on-prem-private-cloud-in":{"href":"/content/configuring-sap-cloud-integration-for-an-ibp-to-s-4hana-on-prem-private-cloud-in","name":"Configuring SAP Cloud Integration for an IBP to S/4HANA (on prem / private cloud) integration","kind":"blog","short":"BTP RFC destinations for an IBP to S/4HANA Cloud Integration flow","line":"Walks through creating the two BTP destinations an Cloud Integration iflow needs for an IBP-to-S/4HANA integration: one of type RFC with a WebSocket RFC server host and port for the IBP tenant, and one of type RFC with the on-premise proxy type, a Cloud Connector location ID and a virtual host for the S/4HANA system. It then has the reader copy SAP's prebuilt IBP integration packages into the Design workspace and deploy every reusable iflow in them before a business iflow can call the S/4HANA extractor through SAP Connectivity service.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SofianePebre, published 2025-08-27"},"content:connect-a-cap-application-to-hana-cloud-in-another-account-without-hdi":{"href":"/content/connect-a-cap-application-to-hana-cloud-in-another-account-without-hdi","name":"Configure an SAP CAP Application to Connect to an SAP HANA Cloud Database in Another Global Account or Subaccount","kind":"blog","short":"Connecting CAP to HANA Cloud in another account without HDI","line":"The case the tooling does not cover: the database is in a different global account, so there is no HDI container to bind and cds deploy cannot do its usual job. Written for exactly that, and it says so in the subtitle — without HDI.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"JhoelAnthonyRamosRomeroPE, published 2024-10-08"},"content:connect-sap-cap-nodejs-to-private-postgresql-using-cloud-connector":{"href":"/content/connect-sap-cap-nodejs-to-private-postgresql-using-cloud-connector","name":"Connect SAP CAP (Node.js) to On-Premise/Private PostgreSQL using SAP Cloud Connector","kind":"blog","short":"CAP Node.js to private PostgreSQL over Cloud Connector and SOCKS5","line":"An end-to-end route from a CAP Node.js application on Cloud Foundry to a PostgreSQL database that is never made publicly reachable, over BTP Connectivity and the Cloud Connector using a TCP destination and SOCKS5. The part worth having is that it covers the deployer as well as the server: the generated PostgreSQL deployer has to reach the same private database to deploy the CDS model, and a guide that only connects the runtime leaves you with a schema you cannot install.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Kalaikovan, published 2026-08-07"},"content:connect-to-a-public-cloud-api-in-nodejs-via-authorisation-code":{"href":"/content/connect-to-a-public-cloud-api-in-nodejs-via-authorisation-code","name":"Connect to Public Cloud API in Node.js via Authorisation Code","kind":"blog","short":"Calling a public cloud API from CAP via authorisation code flow","line":"The authorisation code flow rather than client credentials, which is the harder half: a service key, an XSUAA instance bound to the CAP app, and a destination, with the author saying plainly that this was challenging and they hope it saves somebody the same time.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Egan, published 2025-07-22"},"content:connecting-a-custom-mcp-server-to-joule-work-desktop-a-seamless-and-secure-authe":{"href":"/content/connecting-a-custom-mcp-server-to-joule-work-desktop-a-seamless-and-secure-authe","name":"Connecting a Custom MCP Server to Joule Work Desktop: A Seamless and Secure Authentication Flow","kind":"blog","short":"Authentication flow for a custom MCP server in Joule Work Desktop","line":"Walks through connecting a custom MCP server to Joule Work Desktop: a Dynamic Client Registration handshake (RFC 7591) followed by an Authorization Code + PKCE flow through the organisation's SSO via XSUAA or IAS, so authentication establishes the human identity that Joule then attaches to every subsequent tool call. That forwarded identity lets the BTP backend apply its existing authorization checks and row-level data filtering instead of a second permission model, and a role change in XSUAA revokes access on the next token refresh.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-08-17"},"content:connecting-sap-integration-suite-with-sap-document-ai-and-sap-business-ai":{"href":"/content/connecting-sap-integration-suite-with-sap-document-ai-and-sap-business-ai","name":"Connecting SAP Integration Suite with SAP Document AI and SAP Business AI","kind":"blog","short":"Cloud Integration flow extracting purchase orders with Document AI","line":"Walks through a Cloud Integration flow in SAP Integration Suite that pulls PDF purchase orders from a Gmail mailbox, extracts header and line-item fields through SAP Document AI's job-submission and polling API, and validates the result with SAP AI Core's generative AI hub using GPT-5-mini as a quality check rather than the source of the extracted values. Groovy steps combine the Document AI confidence score and the model's score into one figure that routes low-scoring purchase orders to manual review, with no S/4HANA posting performed.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"subhojitSaha, published 2026-08-24"},"content:connecting-sap-integration-suite-with-slack-a-hands-on-guide-with-open-connector":{"href":"/content/connecting-sap-integration-suite-with-slack-a-hands-on-guide-with-open-connector","name":"Connecting SAP Integration Suite with Slack: A Hands‑On Guide with Open Connectors","kind":"blog","short":"Integration flow posting to Slack through Open Connectors","line":"A walkthrough builds an integration flow on SAP Integration Suite that receives JSON over an HTTPS sender, transforms it with Groovy, and posts a formatted message to a Slack channel through the Slack Open Connector. An Exception Subprocess catches token, channel and connector-invocation failures and returns a structured error response, and the author verifies it by forcing a bad channel ID and confirming the error-notification email arrives.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"jareenabee_dudekula, published 2026-03-20"},"content:connecting-sap-s-4hana-on-prem-directly-to-advanced-event-mesh-using-cloud-conne":{"href":"/content/connecting-sap-s-4hana-on-prem-directly-to-advanced-event-mesh-using-cloud-conne","name":"Connecting SAP S/4HANA On-Prem Directly to Advanced Event Mesh using Cloud Connector - finally!","kind":"blog","short":"On-premise S/4HANA events to Advanced Event Mesh via Cloud Connector","line":"Package Integration 1.4.0 for the Advanced Event Mesh Adapter adds official support for routing through SAP Cloud Connector, so an on-premise SAP S/4HANA system can produce events that SAP Advanced Event Mesh distributes without exposing a public endpoint. The same release changes the adapter's default acknowledgment mode from Automatic Immediate to Automatic On Exchange Complete, altering delivery semantics and error handling. The release notes warn against mixing proxy configurations within one tenant, since that causes unpredictable routing in complex hybrid tenants.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"sissyhae, published 2026-01-23"},"content:connecting-two-sap-cap-projects-without-duplicating-your-data":{"href":"/content/connecting-two-sap-cap-projects-without-duplicating-your-data","name":"Connecting Two SAP CAP Projects Without Duplicating Your Data","kind":"blog","short":"Sharing data between CAP projects with cross-container HDI synonyms","line":"Cross-container HDI synonyms, argued from the alternatives rather than presented as a recipe: copying the table, standing up an API, or hard-coding the values are the three things the author reports seeing teams do, and each is named as working but unclean. With synonyms in place the consuming project queries the owner's HANA tables through ordinary SQL and ordinary CAP service code, with no replication and nothing to drift between environments. Covers the same ground as Mio Yasutake's 2021 post from a different angle — that one enumerates four topologies, this one argues for one of them.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Inderpreet, published 2026-07-08"},"content:connectivity-between-a-local-cap-runtime-and-on-premise-systems":{"href":"/content/connectivity-between-a-local-cap-runtime-and-on-premise-systems","name":"Establishing connectivity between a local CAP runtime and on-premise systems","kind":"blog","short":"Reaching on-premise systems from a locally running CAP process","line":"Reaching S/4HANA, an on-premise HANA or any HTTP service from a CAP process running on your laptop — the case where the connectivity proxy the platform provides is not there and the tunnel has to be arranged.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"vLeonkev, published 2025-10-15"},"content:consume-abap-rfc-function-modules-in-cap":{"href":"/content/consume-abap-rfc-function-modules-in-cap","name":"Consume ABAP RFC Function Modules in CAP","kind":"blog","short":"Calling existing ABAP RFC function modules from CAP","line":"Calling an existing RFC function module from CAP instead of asking somebody to build an OData service for it — which is the actual decision, since the alternative is custom development on the ABAP side for a function that already works.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-03-28"},"content:consume-sap-document-management-using-cap-js-sdm":{"href":"/content/consume-sap-document-management-using-cap-js-sdm","name":"Consume SAP Document Management using @cap-js/sdm plugin","kind":"blog","short":"Storing CAP attachments in Document Management with @cap-js/sdm","line":"Storing attachments in a SAP Document Management repository from a CAP application, using the official plugin. The point the post makes about the plugin is that it brings its own UI: a user attaches any number of documents and one Save writes them all to the repository, so the application does not build an upload surface of its own.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-08-26"},"content:consuming-data-from-sap-datasphere-in-cap-applications":{"href":"/content/consuming-data-from-sap-datasphere-in-cap-applications","name":"Consuming data from SAP Datasphere in SAP BTP CAP Applications","kind":"blog","short":"Reading data from SAP Datasphere in a CAP application","line":"Datasphere as the source a CAP application reads from — the case for it being that Datasphere already unified the SAP and non-SAP data, so the application does not have to. From a real project.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"sudheer-tammana, published 2025-06-03"},"content:consuming-sap-build-apis-with-cloud-sdk-in-a-cap-application":{"href":"/content/consuming-sap-build-apis-with-cloud-sdk-in-a-cap-application","name":"Consuming SAP Build API's made easy with SAP Cloud SDK in your CAP application","kind":"blog","short":"Reading SAP Build tasks and workflows from CAP with Cloud SDK","line":"Reaching into SBPA from CAP the other way round — reading its tasks and workflows rather than starting them. The author starts from the plain Axios version and says what it costs: the connection and the authentication are the work, not the call. Cloud SDK is used to generate a typed client from the OpenAPI document and then to resolve the connection through either a service binding or a destination, shown for client credentials and for user token exchange.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"maheshpalavalli, published 2023-02-08"},"content:control-visibility-of-crud-and-custom-actions-based-on-authorization":{"href":"/content/control-visibility-of-crud-and-custom-actions-based-on-authorization","name":"How to Control the Visibility of CRUD and Custom Actions in Fiori Elements Based on Authorization","kind":"blog","short":"Hiding Fiori elements actions according to user authorisation","line":"Hiding Create, Edit and custom action buttons according to what the user may actually do — the join between the authorisation model and the annotations, which is where the two usually fail to agree and the UI offers something the service will refuse.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-05-14"},"content:create-a-business-service-using-cds-nodejs-sqlite-and-odata":{"href":"/content/create-a-business-service-using-cds-nodejs-sqlite-and-odata","name":"Create a Business Service using CDS, Node.js, SQLite and a OData service","kind":"blog","short":"Minimal CAP service with CDS, Node.js, SQLite and OData","line":"The stack at its smallest — CDS, Node, SQLite, an OData service — worked through at length. Nothing cloud in it, which is the point: it is the shape of a CAP service before any of the platform arrives.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"raybanton, published 2021-07-12"},"content:create-a-cap-application-with-hana-cloud-and-deploy-to-cloud-foundry":{"href":"/content/create-a-cap-application-with-hana-cloud-and-deploy-to-cloud-foundry","name":"Create a CAP Application with SAP HANA Cloud from Scratch and Deploy to Cloud Foundry","kind":"blog","short":"CAP app with HANA Cloud from model to Cloud Foundry deploy","line":"The whole lifecycle in one post rather than a series — model, service, HANA binding, build, deploy. Useful as a single reference for the order things have to happen in, which is the part that is easy to get wrong when it is spread over six posts.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"MaheshSirsat1708, published 2025-11-19"},"content:create-a-fiori-elements-ui-for-cap-nodejs-applications-in-bas":{"href":"/content/create-a-fiori-elements-ui-for-cap-nodejs-applications-in-bas","name":"Create an SAP Fiori Elements UI for CAP Node.js applications in SAP Business Application Studio","kind":"blog","short":"Generating a Fiori elements V4 UI for CAP Node.js in BAS","line":"Written the week Fiori elements gained OData V4 support, which is what made a generated List Report over a CAP Node.js service possible at all. Short, and dated in the useful sense — it marks when the generator stopped being a V2-only path.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"liat_b, published 2021-01-11"},"content:create-a-fiori-list-report-with-object-page-using-a-capm-nodejs-service":{"href":"/content/create-a-fiori-list-report-with-object-page-using-a-capm-nodejs-service","name":"Create Fiori List Report with object page using CAPM(node.js) Service","kind":"blog","short":"Short walkthrough of a List Report with Object Page over CAP","line":"The short version of the generated-app walkthrough — an existing CAPM Node.js service, and the List Report with Object Page on top of it. Under three thousand characters.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Md_sanaullah, published 2023-09-06"},"content:create-an-api-to-run-a-hana-cloud-stored-procedure-in-cloud-foundry":{"href":"/content/create-an-api-to-run-a-hana-cloud-stored-procedure-in-cloud-foundry","name":"How to create an API to run a HANA Cloud Stored Procedure in Cloud Foundry","kind":"blog","short":"API in front of HANA Cloud stored procedures on Cloud Foundry","line":"Reaching past CDS to the database's own machinery — built-in algorithms, SQLScript procedures and functions — and putting an API in front of them. Long, and it is the case where the model is not where the logic belongs.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"gonzalo_hernan_sendra, published 2022-12-08"},"content:create-cds-views-and-expose-them-through-odata-in-capm":{"href":"/content/create-cds-views-and-expose-them-through-odata-in-capm","name":"Create CDS Views and expose through OData service in CAPM","kind":"blog","short":"Defining CDS views and exposing them over OData in CAP","line":"Views defined in CDS and then exposed, which is the whole of what a small CAP service is. Written step by step from cds init onward in Business Application Studio.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"VenkateshMundru, published 2025-08-11"},"content:create-your-first-cap-plugin":{"href":"/content/create-your-first-cap-plugin","name":"Create your first CAP plugin","kind":"blog","short":"Step-by-step guide to building and testing a CAP plugin","line":"A step-by-step guide to the cds-plugin.js extension point: scaffold a package, add an index.cds for shared model artifacts, and test it locally against a throwaway CAP project before publishing to npm, with a separate section on building the same plugin in TypeScript and compiling it with tsc. Points to the author's own cds-plugin-handlers and ui5-cap-serverside-rendering-plugin as worked examples.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-12-09"},"content:creating-a-custom-f4-help-for-currency-fields-in-abap-using-f4if-int-table-value":{"href":"/content/creating-a-custom-f4-help-for-currency-fields-in-abap-using-f4if-int-table-value","name":"Creating a Custom F4 Help for Currency Fields in ABAP Using F4IF_INT_TABLE_VALUE_REQUEST","kind":"blog","short":"Custom F4 help for a currency field with F4IF_INT_TABLE_VALUE_REQUEST","line":"Walks through building a custom F4 help popup for a currency selection-screen field: an AT SELECTION-SCREEN ON VALUE-REQUEST handler reads currency codes and texts from TCURC and TCURT into an internal table, then passes it to F4IF_INT_TABLE_VALUE_REQUEST to render the popup list. It is offered as a replacement for the field's standard search help when that does not fit the business requirement.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"vinodkumarreddyappannagari, published 2026-06-03"},"content:creating-a-hybrid-cap-nodejs-profile-with-postgresql-from-bas":{"href":"/content/creating-a-hybrid-cap-nodejs-profile-with-postgresql-from-bas","name":"Creating a Hybrid CAP (Node.js) Profile with PostgreSQL on BTP from Business Application Studio","kind":"blog","short":"Hybrid CAP profile bound to PostgreSQL on BTP from BAS","line":"Hybrid testing is documented for HANA; this is the same profile against a PostgreSQL instance on BTP, driven from a BAS dev space rather than a laptop. Proposed under editor support because of where it runs, but the subject is the binding: what cds bind writes, and what has to be true of the service instance and the tunnel for a local process to reach it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"valentincadart, published 2025-10-02"},"content:creating-a-meal-generator-application-with-sap-build-and-cap":{"href":"/content/creating-a-meal-generator-application-with-sap-build-and-cap","name":"Creating a meal generator application with SAP Build, Cloud Application Programming and openAI","kind":"blog","short":"Meal suggestion app built with CAP, SAP Build and OpenAI","line":"Ingredients in, meal suggestions out, assembled from BTP services plus OpenAI and Google APIs. A small application built for the pleasure of it, and useful here as the plainest example of CAP holding the middle of a generative flow.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"former_member793421, published 2023-07-17"},"content:creating-an-arc-1-btp-diagram-with-codex-and-a-drawio-skill":{"href":"/content/creating-an-arc-1-btp-diagram-with-codex-and-a-drawio-skill","name":"Creating an ARC-1 BTP Diagram with Codex and a draw.io Skill","kind":"blog","short":"Drawing an ARC-1 BTP diagram with Codex and a draw.io skill","line":"The sap-architecture skill from marianfoo/btp-drawio-skill draws architecture diagrams as editable draw.io files in SAP Architecture Center style by copying the closest of 71 bundled SAP reference templates, or a built-in fallback layout, then validating, scoring and rendering the result for the model to inspect; it takes ideas from Wouter Lemaire's btp-solution-diagram-generator and from claude-drawio-btp-diagram. Codex ran it on an L2 diagram of ARC-1 on BTP Cloud Foundry, reached from VS Code over MCP and passing through XSUAA, Destination, Connectivity and Cloud Connector to an on-premise ABAP system, and the first pass validated and scored 100 while labelling the flows HTTPS and OData/REST instead of MCP and ADT REST. The post draws its boundary from that run: the checks read the file's visual structure and cannot tell whether the architecture is right, and a diagram with no close template still needs manual draw.io work.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-07-09"},"content:creating-an-sap-sd-billing-document-using-a-bapi-in-sap-build-and-accessing-it-t":{"href":"/content/creating-an-sap-sd-billing-document-using-a-bapi-in-sap-build-and-accessing-it-t","name":"Creating an SAP SD Billing Document Using a BAPI in SAP Build and Accessing It Through 'Joule Work'","kind":"blog","short":"Calling an on-premise billing BAPI from SAP Build Process Automation","line":"Walks through the two pieces of connectivity a SAP Build Process Automation action needs to call an on-premise BAPI: mapping the virtual host to the internal S/4HANA host in Cloud Connector over the RFC protocol, and creating an RFC-type destination in the BTP cockpit so BAPI_BILLINGDOC_CREATEMULTIPLE becomes a selectable action. The resulting process creates an SD billing document from a sales document number and is reached through SAP Build Work Zone, including from the Joule Work mobile app.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"MrRaj, published 2026-06-29"},"content:creating-and-deploying-a-cap-application-with-hana-part-1":{"href":"/content/creating-and-deploying-a-cap-application-with-hana-part-1","name":"Part 1: Creating and Deploying a SAP CAP Application with SAP HANA on SAP BTP (Cloud Foundry)","kind":"blog","short":"Creating and deploying a CAP app with SAP HANA on Cloud Foundry","line":"Opens with the observation the whole series rests on — CAP is usually demonstrated locally, and the interesting part starts when it is deployed. Part one of the run that continues into PostgreSQL and Work Zone.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"yashbhosle789, published 2026-02-25"},"content:creating-and-deploying-a-cap-application-with-postgresql-hyperscaler":{"href":"/content/creating-and-deploying-a-cap-application-with-postgresql-hyperscaler","name":"Part 2: Creating and Deploying a CAP Application with PostgreSQL, Hyperscaler Option","kind":"blog","short":"Deploying the CAP app on PostgreSQL, hyperscaler option","line":"The middle of a series that runs from database to Work Zone: the CAP application from part one pointed at PostgreSQL on the hyperscaler option, and deployed. The service binding and the build are where it spends its time.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"yashbhosle789, published 2026-03-04"},"content:creating-material-master-data-in-sap-s-4hana-using-rap-and-eml":{"href":"/content/creating-material-master-data-in-sap-s-4hana-using-rap-and-eml","name":"Creating Material Master Data in SAP S/4HANA Using RAP and EML .","kind":"blog","short":"Unmanaged RAP business object for material master data via EML","line":"Builds an unmanaged Transactional model RAP business object for Article (Material) master data on top of the standard interface views I_Product, I_ProductDescription and I_ProductPlant, replacing BAPI_MATERIAL_SAVEDATA with EML operations in the create, update and custom extendplant behaviour methods. A CDS metadata extension adds the Fiori annotations — headerInfo, facets, line items and value helps — that drive the generated Fiori elements UI.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Sudhanshu07, published 2026-01-08"},"content:creating-new-services-using-the-cds-graphical-modeler":{"href":"/content/creating-new-services-using-the-cds-graphical-modeler","name":"Creating new services using the CDS Graphical Modeler for SAP Business Application Studio","kind":"blog","short":"Defining a CAP service in the CDS Graphical Modeler","line":"The worked half of the introduction, published the same day: a service defined by drawing rather than by typing, projections included. Assumes the setup from the introduction and does not repeat it, so the two are one piece split in two.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Xiao-fei_Song, published 2021-04-23"},"content:creating-structured-types-enums-and-named-aspects-in-the-graphical-modeler":{"href":"/content/creating-structured-types-enums-and-named-aspects-in-the-graphical-modeler","name":"Creating structured types, enums and named aspects using the CDS Graphical Modeler","kind":"blog","short":"Structured types, enums and named aspects in the CDS Graphical Modeler","line":"The modelling constructs that are awkward to draw — structured types, enums, named aspects — done in the graphical modeller rather than in CDL.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Xiao-fei_Song, published 2021-05-26"},"content:custom-form-with-custom-data-source-in-sap-public-cloud-grow-with-sap":{"href":"/content/custom-form-with-custom-data-source-in-sap-public-cloud-grow-with-sap","name":"Custom Form with Custom Data Source in SAP Public Cloud (Grow with SAP)","kind":"blog","short":"Custom Adobe output form with a RAP data source in S/4HANA Cloud","line":"Builds a custom Adobe-based output form for SAP S/4HANA Cloud Public Edition when SAP ships no standard data source: a RAP business object exposes header and item CDS views through a service definition, one view marked as the form's data provider, and the layout is designed offline in Adobe LiveCycle Designer against the exported XML schema before upload and rendering back in the tenant. It draws the line against SAP Forms Service by Adobe on BTP, which the post sets aside in favour of building the form inside the S/4HANA Cloud system itself.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Gourab_Dey, published 2026-01-15"},"content:custom-functions-in-odata-v4-in-cap":{"href":"/content/custom-functions-in-odata-v4-in-cap","name":"Custom Functions in OData V4 – SAP Cloud Application Programming Model","kind":"blog","short":"Declaring and implementing OData V4 functions on a CAP service","line":"Functions rather than actions, and the distinction is where it starts: a function must return data and must never change any, so it is the read-only half of custom operations. Then how to declare and implement one on a CAP service.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Roopa_N, published 2021-04-28"},"content:custom-handlers-for-draft-enabled-entities-in-sap-cap":{"href":"/content/custom-handlers-for-draft-enabled-entities-in-sap-cap","name":"Custom Handlers for Entities in SAP CAP","kind":"blog","short":"Reference to custom handlers across the CAP draft action lifecycle","line":"Written from the moment of not knowing: a two-level composition with drafts, the Fiori elements UI working perfectly, and no idea which handlers are actually needed. What comes out is the action lifecycle laid out as a reference — NEW, EDIT, PATCH and the rest — with a matrix saying which handler fires for which, which is the thing the documentation leaves you to assemble.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"xavisanse, published 2026-02-20"},"content:custom-joule-agent-for-sap-ariba-slp-building-an-ai-agent-for-supplier-registrat":{"href":"/content/custom-joule-agent-for-sap-ariba-slp-building-an-ai-agent-for-supplier-registrat","name":"Custom Joule Agent for SAP Ariba SLP - Building an AI Agent for Supplier Registration Approval","kind":"blog","short":"Joule Studio agent reviewing SAP Ariba SLP supplier registrations","line":"Builds a Joule Studio agent that reviews SAP Ariba SLP supplier registration tasks: four custom skills bind to Ariba's API (pending tasks, task detail, questionnaire answers, post a decision), each needing a precisely configured BTP destination and action, and the agent's own Expertise, Instructions and Additional Context sections carry the domain knowledge, the step order, and the scoring rubrics that decide approve, deny or deny-with-resubmit. The author contrasts this with an earlier hand-wired flow on SAP Build Process Automation, where every connection, variable and error path had to be designed and wired manually.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Giancarlo-Martinez, published 2026-04-07"},"content:debug-a-cap-app-with-ui5-typescript-ui-component-with-vs-code":{"href":"/content/debug-a-cap-app-with-ui5-typescript-ui-component-with-vs-code","name":"debug a CAP app with UI5 TypeScript UI component with VS Code","kind":"blog","short":"Debugging CAP and a UI5 TypeScript component together in VS Code","line":"Debugging both runtimes at once — the CAP server and a UI5 component written in TypeScript, the latter stepped through in its own sources rather than in the transpiled output. Written when TypeScript for UI5 had just become possible, and the combination it sets up is the one CAP's app folder invites.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2021-11-16"},"content:debugging-in-abap-development-tool-part-1":{"href":"/content/debugging-in-abap-development-tool-part-1","name":"Debugging in ABAP Development Tool (Part 1)","kind":"blog","short":"Walkthrough of the ABAP Debugger in ABAP Development Tools","line":"A walkthrough of the ABAP Debugger inside ABAP Development Tools: setting a toggle (hard) breakpoint versus a soft breakpoint that only fires once a session is already active, running up to four debugging sessions on the same program, reading the call stack, and debugging an update function module. It also covers watchpoints with their recent and current values, conditional and user-specific breakpoints, activating and deleting breakpoints, and adding variables such as SY-INDEX to the variables tab.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"M_Sumaiya_Khatoon, published 2025-09-02"},"content:decision-logic-modernization-in-sap-integrations-using-sap-rpt-1-for-intelligent":{"href":"/content/decision-logic-modernization-in-sap-integrations-using-sap-rpt-1-for-intelligent","name":"Decision Logic Modernization in SAP Integrations: Using SAP-RPT-1 for Intelligent Routing Decisions","kind":"blog","short":"SAP-RPT-1 in a Cloud Integration flow choosing a 3PL partner","line":"Walks through embedding SAP-RPT-1 — SAP's foundation model for classification and regression over tabular ERP data, hosted on SAP AI Core — into a Cloud Integration flow that picks the optimal 3PL logistics partner for an outbound delivery. The iflow sends historical deliveries from SAP HANA Cloud plus the new delivery as context rows to the model's in-context learning, with no training step, and routes on the returned prediction and confidence score, the mechanism predictive models's core coverage describes for SAP-RPT-1. The author is explicit that SAP-RPT-1 differs from general-purpose language models trained on text, which keeps this apart from an LLM-integration scenario.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"arunmaarirajha_kv, published 2026-02-16"},"content:declarative-programming-in-cap-less-code-more-value":{"href":"/content/declarative-programming-in-cap-less-code-more-value","name":"Declarative Programming in CAP: Less Code, More Value","kind":"blog","short":"Case for CAP annotations over handlers for repetitive validation","line":"An argument for annotations over handlers, made from the case where it is most obvious: repetitive validation logic that could be declared instead of written. Describes what you want rather than how to get it, and lets the runtime decide the how.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-02-05"},"content:deep-insert-in-cap-using-composition-and-fiori-elements":{"href":"/content/deep-insert-in-cap-using-composition-and-fiori-elements","name":"Deep Insert in SAP CAPM Using Composition and Fiori Elements","kind":"blog","short":"Deep insert of parent and children with CAP and Fiori elements","line":"Parent and children created in one transaction, which composition already gives you in the model — the post is about what Fiori elements does with it, and what the payload looks like when the UI sends both at once.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-05-22"},"content:dependency-injection-and-di-containers-on-cap-nodejs":{"href":"/content/dependency-injection-and-di-containers-on-cap-nodejs","name":"Quick Implementation of DI/DI Container on SAP CAP: Node.js Hands-on Part","kind":"blog","short":"Hands-on dependency injection container in CAP Node.js","line":"The hands-on half of a pair — the theory is in the author's earlier post — built on the official bookshop sample with the directories flattened so the pattern is visible rather than the scaffolding. Assumes CAP and TypeScript already.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Umezuki, published 2025-05-02"},"content:deploy-and-run-the-incident-management-application-in-the-sap-btp-kyma-runtime-w":{"href":"/content/deploy-and-run-the-incident-management-application-in-the-sap-btp-kyma-runtime-w","name":"Deploy and Run the Incident Management Application in the SAP BTP, Kyma Runtime with a Mock Server","kind":"tutorial","short":"Deploying the Incident Management CAP app to Kyma with Helm","line":"Builds the Incident Management CAP service and its HTML5 UI deployer as container images with the pack CLI's Cloud Native Buildpacks, then deploys both to SAP BTP, Kyma runtime with a Helm chart, wiring in the mock-server destination and productive cds build --production output set up in the prerequisite tutorials. Marked out of maintenance in favour of the newer \"Develop a Side-by-Side CAP-Based Extension Application\" mission in SAP Discovery Center, but the build-and-deploy mechanics it walks through — buildpacks, image tags, a Helm chart — are what deployment still covers for Kyma.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-12-06"},"content:deploying-a-cap-app-with-fiori-app-standalone-html5-repo-host":{"href":"/content/deploying-a-cap-app-with-fiori-app-standalone-html5-repo-host","name":"Deploying a CAP app with Fiori app standalone (HTML5 Repo Host)","kind":"blog","line":"A step-by-step alternative to deploying a CAP app's Fiori frontend through SAP Workzone or Launchpad: exposing it to the SAP HTML5 Application Repository service for SAP BTP instead of serving it straight from @sap/approuter, for zero-downtime content updates, versioning and permissions. It builds a sample with @sap/cds-dk's cds add hana,html5-repo,approuter,mta and cds add xsuaa --for production, generates the Fiori app through Business Application Studio's module wizard, then wires the app router's xs-app.json routes, the mta.yaml service binding and SAP Authorization and Trust Management service before building with mbt and deploying to SAP BTP, Cloud Foundry Runtime.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Christopher_Ketzler, published 2025-04-22"},"content:deploying-a-cap-application-to-kyma-and-connecting-an-ios-app":{"href":"/content/deploying-a-cap-application-to-kyma-and-connecting-an-ios-app","name":"Deploying a CAP Application to SAP Cloud Platform, Kyma runtime & connecting an iOS app","kind":"blog","short":"CAP app on Kyma runtime with a native iOS client","line":"Kyma when it was new on the platform, taken from a CAP application through deployment to a native iOS client on the other end. Written by someone working the mobile side, so the parts about what a device needs from the service are more careful than usual.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"KRiedelsheimer, published 2020-12-17"},"content:deploying-cap-services-with-the-in-memory-sqlite-database":{"href":"/content/deploying-cap-services-with-the-in-memory-sqlite-database","name":"Deploying CAP services with the in-memory SQLite database","kind":"blog","short":"Deploying CAP to Cloud Foundry with in-memory SQLite","line":"In-memory, deployed to Cloud Foundry — so the data is gone on restart, on purpose. For a service whose datastore does not need to survive anything, which is a narrower case than it sounds and a real one.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"liam_mischewski, published 2021-05-24"},"content:deploying-the-ui-of-an-mta-app-with-application-frontend-service":{"href":"/content/deploying-the-ui-of-an-mta-app-with-application-frontend-service","name":"Exploring Application Frontend Service: Deploying the UI of an MTA App","kind":"blog","short":"Deploying an MTA app's UI with Application Frontend Service","line":"Application Frontend Service, which arrived in May 2026 and overlaps the HTML5 Application Repository without replacing it. The post is careful about the difference — single-tenant, stand-alone, and no Work Zone integration yet — which is what you need to decide between them.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"MioYasutake, published 2025-07-12"},"content:deploying-your-first-cap-project-in-sap-cloud":{"href":"/content/deploying-your-first-cap-project-in-sap-cloud","name":"Deploying first CAP Project in SAP Cloud : A Step-by-Step Guide","kind":"blog","short":"Terminal route from cds init to a deployed CAP application","line":"The terminal route rather than the template wizard, from cds init to a deployed application, with each command written out. For the case where the generated project is the thing you are trying to understand.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"satyanarayanpradhan, published 2025-07-02"},"content:designing-multi-tenant-solutions-on-btp-architecture-and-prototype":{"href":"/content/designing-multi-tenant-solutions-on-btp-architecture-and-prototype","name":"Designing a Multi‑Tenant Solutions on SAP BTP – Architecture and Prototype Walkthrough","kind":"blog","short":"Multi-tenant architecture on SAP BTP from a delivered project","line":"Written back from a delivered project, and it lists the constraints that shaped it rather than the features that showcase it — several customers, strict data isolation, central lifecycle management, and operations kept simple.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Avinash_Vaidya, published 2026-02-17"},"content:designing-scalable-integration-flows-in-sap-btp-using-pallets-and-adapters":{"href":"/content/designing-scalable-integration-flows-in-sap-btp-using-pallets-and-adapters","name":"Designing Scalable Integration Flows in SAP BTP Using Pallets and Adapters","kind":"blog","short":"Pallets and adapters as building blocks of integration flows","line":"Explains two building blocks of integration flows in SAP Integration Suite: a pallet, a reusable group of flow steps built as its own integration flow and called from another over the ProcessDirect adapter for loose coupling, with logging, transformation, error-handling, notification and security pallets as examples; and the adapters Cloud Integration ships to reach other systems — REST, SOAP, OData, IDoc, JDBC, ProcessDirect and SFTP — each with the protocols and authentication it supports. Written as a design pattern for reuse across flows rather than a single worked example.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Saksham-Mutneja, published 2025-10-16"},"content:develop-a-full-stack-business-application-with-sap-cloud-application-programming":{"href":"/content/develop-a-full-stack-business-application-with-sap-cloud-application-programming","name":"Develop a full stack Business application with SAP Cloud Application Programming Model","kind":"blog","short":"Full-stack CAP app from the retired SAP Web IDE template","line":"Builds a full-stack CAP application in SAP Web IDE Full Stack's now-retired 'SAP Cloud Platform Business Application' template: a data-model.cds entity with its own service definition, then Fiori annotations on the generated OData. Building the project compiles that model into Catalog.xml and csn.json, the EDMX and CSN that metadata publishing says every exposed service gets. The entity and service definitions it writes by hand are the basic shape data modelling covers, though the webIDE and MTA tooling staged around them is gone.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"former_member584731, published 2018-11-29"},"content:develop-and-deploy-a-html-angular-vue-react-app-on-sap-btp-access-s-4-op-part-ii":{"href":"/content/develop-and-deploy-a-html-angular-vue-react-app-on-sap-btp-access-s-4-op-part-ii","name":"Develop and deploy a HTML (Angular/Vue/React) app on SAP BTP access S/4 OP, Part III","kind":"blog","line":"Third part of a series on an Angular front end over CAP against an on-premise S/4HANA system: after an OData V4 service is exposed from S/4 OP, a CAP (Node.js) project imports its metadata with cds import, wires it as an external service with cds.connect.to, and resolves the on-premise tenant through a named destination set under the service's cds configuration in package.json. The HTML app itself is built as shown in an earlier part of the series and is only referenced here.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Hongjun_Qian, published 2024-03-11"},"content:develop-cap-project-with-lazyvim-in-docker":{"href":"/content/develop-cap-project-with-lazyvim-in-docker","name":"Develop CAP Project with Lazyvim in Docker","kind":"blog","short":"Docker image running Lazyvim with CDS language server support","line":"A Docker image running Lazyvim with language server support for CDS, TypeScript and JSON, so a CAP project can be developed with an editing experience comparable to VS Code without leaving the keyboard. Narrow by intent, and the useful general point underneath it is that CAP's editor support reaches anything that speaks LSP.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-03-28"},"content:develop-sap-cap-apps-inside-a-vs-code-docker-container":{"href":"/content/develop-sap-cap-apps-inside-a-vs-code-docker-container","name":"Develop SAP CAP apps inside a VS Code Docker Container","kind":"blog","short":"VS Code dev container configuration for CAP projects","line":"A VS Code dev container configuration with everything a CAP project needs already in it, published as a repository rather than as instructions. The 2020 half of a pair whose other half, four years later, does the same for Lazyvim — the same author solving the same problem twice as his editor changed.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2020-02-20"},"content:developing-a-fiori-elements-app-with-cap-and-fiori-tools":{"href":"/content/developing-a-fiori-elements-app-with-cap-and-fiori-tools","name":"Developing a Fiori elements app with CAP and Fiori Tools","kind":"blog","short":"Learning write-up on a Fiori elements app with CAP and Fiori tools","line":"A learning write-up from someone new to CAP at the time, and long enough to be thorough. Carries its own update pointing at a newer post on deploying a CAP-based Fiori app to a central launchpad without an approuter.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"MioYasutake, published 2020-09-07"},"content:developing-a-fiori-elements-application-using-cap":{"href":"/content/developing-a-fiori-elements-application-using-cap","name":"Developing SAP Fiori Element application by using SAP Cloud Application Programming Model","kind":"blog","short":"Fiori elements floorplans and one built out on a CAP service","line":"The long version, and it starts by naming the floorplans — List Report, Worklist, Object Page, Overview Page, Analytical List Page — which is the decision most walkthroughs skip. Then one of them, built out against a CAP service.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"shobhit, published 2023-08-07"},"content:developing-a-fiori-elements-list-report-and-object-page-on-a-cap-odata-service":{"href":"/content/developing-a-fiori-elements-list-report-and-object-page-on-a-cap-odata-service","name":"Developing Fiori Element Application (List Report and Object Page) consuming the OData service created using SAP Cloud Application Programming model","kind":"blog","short":"2020 List Report and Object Page over a CAP OData service","line":"One of the earliest entries here, from mid-2020: the List Report and Object Page pair generated over a CAP OData service, when that combination was still new enough to need explaining.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"former_member187069, published 2020-06-08"},"content:developing-a-shell-plugin-for-work-zone-custom-notifications":{"href":"/content/developing-a-shell-plugin-for-work-zone-custom-notifications","name":"Developing a Shell Plugin for SAP Build Work Zone to Display Custom Notifications","kind":"blog","short":"Work Zone shell plugin for displaying custom notifications","line":"The rendering end of a notification rather than the publishing end: a shell plugin that changes what Work Zone shows, for the cases the standard notification card does not cover.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Mykhaylo, published 2025-07-17"},"content:developing-business-services-with-cloud-application-programming-cap-model-in-sap":{"href":"/content/developing-business-services-with-cloud-application-programming-cap-model-in-sap","name":"Developing Business Services with Cloud Application Programming(CAP) Model in SAP Business Studio","kind":"blog","line":"A step-by-step build of a CAP Node.js service in SAP Business Application Studio: a CDS schema for banks, customers, accounts and transactions using compositions, associations, enumerated types and the @assert.unique constraint, followed by authorization layered on with @restrict and @requires annotations and mock users assigned the authenticated-user and Manager roles in .cdsrc.json. Custom event handlers registered through @sap/cds (srv.before/srv.after) and sample HTTP requests round out the example.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Ranjith, published 2020-05-27"},"content:developing-cap-applications-in-sap-business-application-studio":{"href":"/content/developing-cap-applications-in-sap-business-application-studio","name":"Developing CAP applications in SAP Business Application Studio","kind":"blog","short":"Building CAP apps in BAS compared step by step with Web IDE","line":"The overview written at the point BAS replaced Web IDE, and it is structured as a comparison — each step of building a CAP application, with the difference from the Web IDE experience called out beside it. Useful now mostly for what it records: which parts of CAP development the editor took over, and when.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"liat_b, published 2020-07-06"},"content:developing-mobile-apps-with-sap-build":{"href":"/content/developing-mobile-apps-with-sap-build","name":"Developing Mobile Apps with SAP Build","kind":"blog","line":"A tutorial that builds a cross-platform mobile app with the Mobile Development Kit on top of the CAP-based data service from the author's earlier posts, using the mobile Dev Space in SAP Business Application Studio to configure and deploy the app to SAP Mobile Services. It sets up the mobile destination against SAP Destination service two ways — reusing the BTP destination already created for the CAP service, or an Internet Destination with OAuth2 User Token Exchange and a manually retrieved client secret — and turns on Cross Context SSO so a token issued in the browser carries into the generic SAP Mobile Services Client app on the phone.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-05-22"},"content:devtoberfest-2026-aba-32-business-ai-abap-cloud":{"href":"/content/devtoberfest-2026-aba-32-business-ai-abap-cloud","name":"How to implement business AI capabilities in ABAP Cloud","kind":"talk","video":{"id":"2alpLnbfpuQ","url":"https://www.youtube.com/watch?v=2alpLnbfpuQ"},"short":"Embedding AI in an ABAP Cloud RAP app and exposing it to Joule","line":"A Devtoberfest 2026 session (ABA-32) on embedding AI in an ABAP Cloud application and on making SAP Joule aware of what that application can do. The first demo implements two features of a RAP travel app with the ABAP AI SDK: a determination on an uploaded receipt that sends the image together with the allowed categories and transaction types to a model reached through an intelligent scenario, then writes the extracted description, category, currency and amount back to the expense entity; and a recommendation function, triggered by a side effect on the trip title, that proposes a trip type with a score the Fiori UI sorts the proposals by and leaves the business user to accept — which is LLM integration from ABAP code. The second demo builds a capability for SAP Joule in the Joule Studio code editor in VS Code, with a scenario that extracts a trip title from the user's intent and calls an OData service in the ABAP backend through a BTP destination, deploys it and asks the Joule test UI for the trip's details; the session states that agents reach ABAP only over governed remote APIs — OData, SQL and MCP — and that automatic grounding of custom OData services in the knowledge graph is upcoming rather than available.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-10-05"},"content:devtoberfest-2026-aba-33-embedded-analytics-abap-cloud":{"href":"/content/devtoberfest-2026-aba-33-embedded-analytics-abap-cloud","name":"Updates on Embedded Analytics in ABAP Cloud for Developers","kind":"talk","video":{"id":"B3bbdZC4msQ","url":"https://www.youtube.com/watch?v=B3bbdZC4msQ"},"short":"Generator wizards for Embedded Analytics in ABAP Cloud","line":"A Devtoberfest 2026 session (ABA-33) on the generator wizards for Embedded Analytics in ABAP Cloud, run by right-clicking a data definition in the ADT Project Explorer. It first names the artefacts a star schema needs, all of them ABAP CDS — cube view at its centre, dimension, text and hierarchy views reached by association, a hierarchy directory, and an InA service definition and binding — and then generates them: the star schema generator reads a view entity's metadata, sorts its fields into dimensions and measures, asks about the ones it cannot decide, offers the dimension views it found and writes an activated cube view; the hierarchy generator produces directory, node, base and definition views plus a maintenance business object with a generated app, which is used to group airlines into alliances before the hierarchy is switched on in the layout of the multi-dimensional analysis app. That is analytic modelling on the ABAP platform, which is what the edges rest on; the outlook names time-dependent hierarchies, translatable texts and dimensions generated from database tables.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-10-05"},"content:devtoberfest-2026-aba-44-abap-ai-sdk-islm":{"href":"/content/devtoberfest-2026-aba-44-abap-ai-sdk-islm","name":"ABAP AI SDK powered by ISLM - How to implement your own AI use cases in ABAP","kind":"talk","video":{"id":"y36Ans6hSyM","url":"https://www.youtube.com/watch?v=y36Ans6hSyM"},"short":"Implementing AI use cases in ABAP with the ABAP AI SDK and ISLM","line":"A Devtoberfest 2026 ABAP-track session (ABA-44) on the ABAP AI SDK: an intelligent scenario development object holds the model and its version, so the ABAP code asks for an API, sends a prompt and reads the completion with its token counts and finish reason, and swapping the model is a change to that object rather than to the code. Four demos go through the ABAP line by line — a bare completion, a system prompt with the temperature set to 0.2, tool calls where the model asks for order details and the result goes back into the message container, and a JSON response schema that returns category, severity and goodwill as fields a program can act on — and a fifth replaces the API with the SDK's own mocks so unit tests run with no network call, which is what the LLM integration edge on the ABAP door rests on. The closing availability matrix separates base scenarios, available across SAP S/4HANA on-premise, private edition, public cloud and the SAP BTP ABAP environment, from the orchestration service and SAP RPT, shown for on-premise and private cloud with transport-based correction instructions back to release 2022 and not yet for the public cloud editions.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers"},"content:devtoberfest-2026-abap-development-tools-for-vs-code":{"href":"/content/devtoberfest-2026-abap-development-tools-for-vs-code","name":"ABAP Development Tools for VS Code","kind":"talk","video":{"id":"qNoUVhTQB6w","url":"https://www.youtube.com/watch?v=qNoUVhTQB6w"},"short":"Session on ABAP Development Tools for VS Code and its releases","line":"A Devtoberfest 2026 session on ABAP Development Tools for VS Code: where the extension sits after the ABAP Workbench and ABAP Development Tools for Eclipse, the ADT language server both editors share, and what the releases since May 2026 cover. The demo installs the extension, creates a destination, opens, creates and activates objects, runs ATC and ABAP Unit, and names the object types, domains among them, for which a developer still goes to Eclipse or SAP GUI. It also opens the extension's settings to turn on the ADT MCP Server and shows the tools a chat can call, with the object search and source code search tools listed as planned.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-09-28"},"content:devtoberfest-2026-abap-environment-partner-solutions-certification":{"href":"/content/devtoberfest-2026-abap-environment-partner-solutions-certification","name":"SAP BAIP, ABAP environment  – How to build partner solutions and get them certified","kind":"talk","video":{"id":"aTXF1WjDJoA","url":"https://www.youtube.com/watch?v=aTXF1WjDJoA"},"short":"Shipping and certifying partner solutions on the ABAP environment","line":"A Devtoberfest 2026 session on the two ways a partner ships an ABAP Cloud solution built on SAP BTP ABAP environment, which the session calls the ABAP environment of SAP Business AI Platform: software delivery, where an add-on product is published with the solution ID from SAP Store onboarding and the customer discovers and deploys it into their own system, and service delivery, where the partner operates the same add-on as a multi-tenant SaaS and a new version is deployed rather than published again. That is the ABAP environment edge; the static analysis edge rests on the quality steps shown in the landscape portal, where the Manage Continuous Testing app released with 2608 runs an ATC check variant against a configured system on a recurrence pattern, beside test product version builds and managed test tenants. The second half walks through the SAP Integration and Certification Center process and the three BTP certification options open to an add-on product.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-10-12"},"content:devtoberfest-2026-agentic-development-with-sapui5":{"href":"/content/devtoberfest-2026-agentic-development-with-sapui5","name":"Beyond copilots: Agentic development with SAPUI5","kind":"talk","video":{"id":"Rt6wxsCOjvY","url":"https://www.youtube.com/watch?v=Rt6wxsCOjvY"},"short":"SAPUI5 team on coding-agent plugins for UI5 development","line":"Devtoberfest 2026 session UI-12, from the SAPUI5 team, on the year of work behind UI5/plugins-coding-agents: what a model produces for UI5 without help — outdated concepts, framework versions a decade old, generic JavaScript rules, code that does not run — and the two ways they chose to close that gap, an MCP server in September 2025 and skills packaged as plugins once agents began reading them. Three plugins are demonstrated live in Claude Code: the everyday one scaffolds an Oktoberfest tents application in about four minutes, the TypeScript conversion plugin rewrites an existing JavaScript project and reconfigures its build with the types and the transpile task, and the modernisation plugin takes a ten-year-old application through staged migrations, applying UI5 Linter's automatic fixes where they cannot break the app and the model where they can, then running the tests. @ui5/mcp-server is still the path for the parts that need a server, and the plugins are installed from the Claude Code and GitHub Copilot marketplaces rather than a UI5-hosted one.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-09-25"},"content:devtoberfest-2026-agentic-enterprise-automation-integration-suite-joule-studio":{"href":"/content/devtoberfest-2026-agentic-enterprise-automation-integration-suite-joule-studio","name":"Achieve Agentic Enterprise Automation with SAP Integration Suite and Joule Studio","kind":"talk","video":{"id":"NHi15XJIpYI","url":"https://www.youtube.com/watch?v=NHi15XJIpYI"},"short":"Agentic automation with SAP Integration Suite and Joule Studio","line":"A Devtoberfest 2026 integration-track session (INT-22), the second of that week's integration sessions, given by an SAP product expert for process automation and integration together with the product manager for Joule Studio, who walks the audience through it. The opening states the subject: process management, automation and orchestration unified into one combined approach, which the presenters put forward as the foundation for building custom AI agents.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-09-30"},"content:devtoberfest-2026-agentic-loop-with-joule-for-developers-and-adt-mcp-server":{"href":"/content/devtoberfest-2026-agentic-loop-with-joule-for-developers-and-adt-mcp-server","name":"Agentic Loop with Joule for Developers and ADT MCP Server","kind":"talk","video":{"id":"xg0Dt1oBdgs","url":"https://www.youtube.com/watch?v=xg0Dt1oBdgs"},"short":"Generating a RAP app with a coding agent and ADT MCP tools","line":"A Devtoberfest 2026 session from SAP's ABAP AI team that generates a RAP issue-tracker application by prompting a coding agent. It covers what SAP Joule for Developers, ABAP AI capabilities now ships as MCP tools and which assistants can reach an ABAP system's virtual filesystem, then does the setup twice: turning on the ADT MCP Server and pasting the Joule side-by-side tenant link in ABAP Development Tools for VS Code, and again in ABAP Development Tools for Eclipse, where the custom agent becomes custom instructions. The demo's subject is the guardrails around the loop — an agent.md of phases and human checkpoints, skill files cloned from a GitHub repository for naming, ATC compliance and UI annotations — run through GitHub Copilot until the generated objects are activated, unit-tested and in a transport.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-09-28"},"content:devtoberfest-2026-agentic-ui-extensibility":{"href":"/content/devtoberfest-2026-agentic-ui-extensibility","name":"Agentic UI Extensibility: The Next Chapter of SAPUI5 Flexibility","kind":"talk","video":{"id":"90cGm6RYJ2Y","url":"https://www.youtube.com/watch?v=90cGm6RYJ2Y"},"short":"SAPUI5 key-user adaptation and a Joule-driven lab preview","line":"A Devtoberfest 2026 session on SAPUI5 flexibility: a recap of key-user adaptation as deltas that survive an upgrade, then a lab preview in which Joule works through a pasted list of adaptation requests inside the key-user tooling — moving a section, adding one through embedded content, saving and activating a version — and writes a handover prompt when a request is outside what a key user may change. The developer half pastes that prompt into VS Code, where a coding agent generates an adaptation project through MCP tools, picks up the key-user changes already made, reads the base application's metadata and the UI5 documentation, writes the XML fragments and controller extensions for a new table column and a supplier dialogue, and restarts the editor to verify both appear. The agentic parts are unreleased; what the session shows as already available is the adaptation project for Cloud Foundry in VS Code, role-specific adaptation on Cloud Foundry from SAPUI5 1.146, views in variant management loaded when the manage-views dialogue opens rather than at startup, and the redesigned key-user adaptation mode with its change highlighting and version dialogue.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-10-16"},"content:devtoberfest-2026-agentic-workflows-n8n-joule-studio":{"href":"/content/devtoberfest-2026-agentic-workflows-n8n-joule-studio","name":"Building Agentic Workflows with n8n in Joule Studio","kind":"talk","video":{"id":"7p9FE6STfWA","url":"https://www.youtube.com/watch?v=7p9FE6STfWA"},"short":"SAP-managed n8n inside Joule Studio on a blocked-invoice case","line":"A Devtoberfest 2026 session, JS-31, on SAP-managed n8n inside Joule Studio, shown as a labs preview on a blocked-invoice scenario: a solution made of assets, an intent refined by the web agent into requirements and then a specification, and the generated workflow opened in the n8n editor that Joule Studio connects to its own n8n tenant, with the generated files committed through GitHub. The nodes carry the other edges — the human-in-the-loop node is built on SAP Task Center, and SAP AI Core is where model providers are configured centrally instead of per developer. It ends in Joule chat, where the approval task the workflow created is listed, opened and completed.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-10-08"},"content:devtoberfest-2026-ai-assisted-cap-development":{"href":"/content/devtoberfest-2026-ai-assisted-cap-development","name":"AI Assisted CAP Development","kind":"talk","video":{"id":"2OejfBst0zU","url":"https://www.youtube.com/watch?v=2OejfBst0zU"},"short":"Building CAP apps with a coding agent and @cap-js/mcp-server","line":"A Devtoberfest 2026 session (CAP-43) on building CAP applications with a coding agent, in two demos. The first asks the same question twice in a dev container, once with no MCP server configured and once with @cap-js/mcp-server registered: without it the agent answers CAP's semantic search with an outdated vector type and CQL, with its documentation search it writes the built-in vector embedding function and a working similarity query. The second installs the cap-developer plugin from capire/skills, from a Devtoberfest preview branch, and runs its guided-development skill stage by stage — domain model, sample data, services, constraints — each stage reviewed before the next.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-10-16"},"content:devtoberfest-2026-ai-assisted-sap-development-with-mcp":{"href":"/content/devtoberfest-2026-ai-assisted-sap-development-with-mcp","name":"AI-assisted SAP development with MCP","kind":"talk","video":{"id":"b6eGA00UpkI","url":"https://www.youtube.com/watch?v=b6eGA00UpkI"},"short":"Tour of AI-assisted SAP development and the MCP servers around it","line":"A Devtoberfest 2026 session (UI-41) that traces AI-assisted SAP development from pasting code into a chat window to coding agents with built-in connectors, and sorts the MCP servers around SAP development into SAP's own, the community's and the hosted ones, where the agent cannot change what the server allows. Four demos follow: GitHub Copilot alone explaining an ABAP report from a Git repository, @ui5/mcp-server reading an OpenUI5 sample app and converting it to TypeScript, mcp-sap-docs grounding Terraform files for a BTP subaccount the presenter had not written before, and arc-1 with Copilot in Eclipse tracing why a title longer than 40 characters is rejected and proposing the DDIC-allowed length instead. It ends on a skill that migrates an SAP Gateway project on an ECC system to RAP on S/4HANA step by step, and on a rule Marian Zeis gives for servers written for internal use: keep them read-only, because what the agent is short of is context.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-10-16"},"content:devtoberfest-2026-ai-in-abap-with-islm":{"href":"/content/devtoberfest-2026-ai-in-abap-with-islm","name":"🟣 Bring AI into Your ABAP Applications with ISLM: Build, Integrate, and Consume AI Natively","kind":"talk","video":{"id":"MRZHKt5lywA","url":"https://www.youtube.com/watch?v=MRZHKt5lywA"},"short":"ISLM for registering and operating AI use cases in S/4HANA","line":"Devtoberfest 2026 session AI-11, from the product manager and product owner of Intelligent Scenario Lifecycle Management: ISLM as the place an AI use case is registered, deployed and operated inside an SAP S/4HANA system, and what has been added to it for generative AI. The demo builds a custom scenario end to end — an intelligent scenario of type generative AI, a connection to SAP AI Core, a GPT-5 mini model, an orchestration flow template that configures data masking, input and output filtering and translation into the user's logged-in language, then prompts with a grounding query over five companies' return-policy documents — and consumes it from an ABAP report through the ABAP AI SDK, which calls the orchestration API and returns the summary as JSON. Two newer pieces follow: SAP RPT, the relational pre-trained transformer for tabular prediction, called with context rows and query rows and answering with a confidence value and no training step; and system-triggered agents, where an application job in the ABAP system starts a billing-creation agent that reaches S/4HANA OData APIs as tools through the agent gateway with principal propagation. The closing availability matrix states the generative AI capabilities for on-premise and private cloud from the 2021 release, with SAP notes to implement on lower ones.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-09-24"},"content:devtoberfest-2026-ai21-multiple-models":{"href":"/content/devtoberfest-2026-ai21-multiple-models","name":"🟣 Enable Your AI application to Run on Multiple Models to Ensure Resilience and Compliance","kind":"talk","video":{"id":"MxwM_5iViIw","url":"https://www.youtube.com/watch?v=MxwM_5iViIw"},"short":"Running an AI application on multiple models with SAP AI Core","line":"Devtoberfest 2026 session AI-21. A cross product owner on the SAP AI Core team gives the reasons an AI application ends up on more than one model — a model down at the hyperscaler, a data centre that is not allowed to run it, a version being deprecated — and runs a joke app that answers from Gemini 2.5 Flash in EU10 and from Claude 4.5 Haiku in Asia-Pacific. The walk through AI Core's parts is where the edges hold: prompts kept as templates in the prompt registry, imported through the launchpad and the APIs or synced as YAML from a git repository (Prompt management); the evaluation service scoring one prompt across up to four models per run on built-in or model-as-judge metrics, and the prompt optimizer generating variants against one metric (Agent evals); and the orchestration service harmonising the providers behind one message format with a priority-sorted fallback list (LLM integration). The session also states where a metric has to be designed rather than picked: an exact-JSON match scores an email generator at zero, so the joke app's custom metric judges topic and family-appropriateness instead.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-10-01"},"content:devtoberfest-2026-ai22-joule-work-desktop-brain":{"href":"/content/devtoberfest-2026-ai22-joule-work-desktop-brain","name":"🟣 AI Eating Brains! How I Fed Mine to Joule Work Desktop","kind":"talk","video":{"id":"o05bdEqb-SQ","url":"https://www.youtube.com/watch?v=o05bdEqb-SQ"},"short":"Connecting an Obsidian vault to Joule Work Desktop via MCP","line":"Devtoberfest 2026 session AI-22. Mathias Kemeter connects his Obsidian note vault to Joule Work Desktop with VaultGate, a local HTTP MCP server he wrote in his spare time because the desktop's sandbox accepts HTTP MCP servers and not stdio ones, and because he wanted the vault reached through Obsidian's own command line rather than by direct file access. The demo builds a Space of management tasks from notes and mailbox together, has the assistant pick up a conventions file in the vault without being told where the reporting rules are, finds a conflict the notes never name by semantic search over local embeddings, and appends a task to a sprint note behind a write confirmation, which is where the edges to Joule Work and Agent workspaces hold. The second half is about the guardrails he had AI choose for the project it then had to live inside: tests and coverage, type safety, static checks, dependency and secret scanning, blocking on commit, on push and in CI.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-10-01"},"content:devtoberfest-2026-bridging-python-and-sap-hana-sqlalchemy-hana":{"href":"/content/devtoberfest-2026-bridging-python-and-sap-hana-sqlalchemy-hana","name":"Bridging Python and SAP HANA: Inside the sqlalchemy-hana Open-Source Dialect","kind":"talk","video":{"id":"AkCiOEhQbtU","url":"https://www.youtube.com/watch?v=AkCiOEhQbtU"},"short":"Inside sqlalchemy-hana, the SQLAlchemy dialect for SAP HANA","line":"A Devtoberfest 2026 data-track session (DAT-21) in which one of the maintainers of sqlalchemy-hana, the open-source SQLAlchemy dialect published in SAP's GitHub organisation, opens up what sits between Python and SAP HANA. It walks the five dialect classes that render statements, types, DDL, identifiers and sequences, and the HANA specifics they absorb: the FROM DUMMY a bare SELECT needs, a limit injected when only an offset is given, string compiled to NVARCHAR, and quoted case-sensitive identifiers against Python's lowercase. The rest covers schema migrations with Alembic on HANA's transactional DDL, the recently added async support and vector types, and that HANA Cloud and HANA 2 are supported while HANA 1 is not.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-09-29"},"content:devtoberfest-2026-cap-cds-oyster-extensibility":{"href":"/content/devtoberfest-2026-cap-cds-oyster-extensibility","name":"Custom Business Logic Extensibility in CAP (CDS-Oyster)","kind":"talk","video":{"id":"bnsi7Ckzp2s","url":"https://www.youtube.com/watch?v=bnsi7Ckzp2s"},"short":"Custom business logic extensibility in CAP with @sap/cds-oyster","line":"A Devtoberfest 2026 session walking @sap/cds-oyster — at version 0.55, with 1.0 stated for Q4 — end to end on a multitenant xtravels, from the application developer's side and the extension developer's side. The application developer adds a submit-for-review action to the status flow and opens exactly one surface for custom code: a separate extension service marked as extensible code, holding a no-op validate action and two read-only helper entities, which the host application calls before the status change; nothing else is extensible, because the annotation defaults to false. The extension developer works in a project whose base model came from cds pull, with test data, a server.js and types from @cap-js/cds-typer added so the UI and code completion work, debugs the handler locally and pushes it as an @sap/cds-mtxs extension, after which the next request rejects a travel over the policy limit without a restart — the code having been stored as an annotation in the tenant's model and run in a Rust WebAssembly sandbox with no database connection, whose queries go back to the CAP runtime as CQL strings, which is tenant extensibility extended from fields to logic.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-10-09"},"content:devtoberfest-2026-cap-level-data-federation":{"href":"/content/devtoberfest-2026-cap-level-data-federation","name":"CAP-level Data Federation","kind":"talk","video":{"id":"0WJBxW5ZcjE","url":"https://www.youtube.com/watch?v=0WJBxW5ZcjE"},"short":"Letting one CAP app read another's data as if it were local","line":"A Devtoberfest 2026 session (CAP-31) on letting one CAP application read another's data as if it were local. The modelling half is the same for both answers, which is why the two technical edges hold: the provider defines an API service and exports it with CDS export as an npm package carrying the model, mock data and translated texts, the consumer imports it and puts consumption views on top, and only then is it wired either as service-level replication that copies the rows into local tables each time the server starts, or over the SAP HANA synonyms that cds-federation-synonyms generates, with HDI grants on the provider side and a service replacement that redirects each synonym from its mock table to the provider's container. It is worked through on xflights and xtravels, including the local run where CDS watch mocks the imported service from the CSV files inside the package.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-10-02"},"content:devtoberfest-2026-cap-mcp-ui5-webmcp":{"href":"/content/devtoberfest-2026-cap-mcp-ui5-webmcp","name":"SAP Meets the Agentic Web: CAP MCP - UI5 WebMCP","kind":"talk","video":{"id":"tns_f_Yqi2w","url":"https://www.youtube.com/watch?v=tns_f_Yqi2w"},"short":"MCP for CAP backends beside WebMCP for UI5 pages","line":"A Devtoberfest 2026 session (CAP-42) that puts MCP and WebMCP side by side: MCP exposes a backend to an agent, WebMCP exposes the tools of a web page to whatever agent arrives at it, and only Chrome behind a flag and Cloudflare's Kite browser support the second one today. The CAP half starts with two agents scraping a Fiori elements app with Playwright and browser dev tools, then annotates the catalogue service with the MCP protocol through @cap-js/mcp, after which the agent calls the generated describe tool instead of parsing pages. The UI5 half registers a search-authors tool on the browser's model context API inside the same app, with the cross-origin isolation header the API requires, and lists it through the WebMCP Chrome extension — the agent run against it ends on an exhausted Gemini key rather than a result.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-10-16"},"content:devtoberfest-2026-cap-the-road-ahead":{"href":"/content/devtoberfest-2026-cap-the-road-ahead","name":"CAP: The Road Ahead - Simplicity in an AI Era","kind":"talk","video":{"id":"Hl13HFV5t3o","url":"https://www.youtube.com/watch?v=Hl13HFV5t3o"},"short":"Live-building session on CAP's direction in an AI era","line":"Devtoberfest 2026 session CAP10, from the head of SAP's Cloud Application Programming Model: forty minutes of live building rather than slides, on the argument that the cheapest code in an AI project is code nobody has to generate. Claude Code builds an invoice-matching workspace from cds init onwards, and each step is one the framework answers rather than the agent: a 42-line domain model that @sap/cds serves as OData and Fiori elements with a status flow, data privacy and change-tracking annotations that produce audit log entries in the console and would reach the SAP Audit Log service once deployed, an imported S/4HANA supplier data product, and semantic matching from a local embedding model after @cap-js/ai is added. The last three steps are annotations: @mcp beside @odata turns the service into an MCP server that a second Claude session queries through @cap-js/mcp, an agent annotation adds the A2A protocol with an agent card and an audit log entry for the agent task, and a skill file gives the agent the matching policy.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-09-25"},"content:devtoberfest-2026-cds-associations-and-joins":{"href":"/content/devtoberfest-2026-cds-associations-and-joins","name":"CDS Associations & Joins","kind":"talk","video":{"id":"94XawWCVfaQ","url":"https://www.youtube.com/watch?v=94XawWCVfaQ"},"short":"What an ABAP CDS association becomes on SAP HANA","line":"A Devtoberfest 2026 session from SAP's performance and scalability team on what an ABAP CDS association becomes on SAP HANA, taken as an excerpt from their internal performance training. The CDS edge rests on the three ways an association is used: a path expression and an explicit join both put a left outer join into the generated view, while exposing the association leaves the view without one and adds the join only for a query that asks for its fields, which the session calls join on demand. The data modelling edge is the advice that follows and the demo under it — cardinality written as precisely as the data allows, because the optimiser trusts it, shown with a view whose missing cardinality let SELECT COUNT(*) prune the join and return 18 rows where selecting the columns returned 56, plus the left-hand, right-hand and left-outer-to-inner rewrites that correct cardinalities make possible.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-10-12"},"content:devtoberfest-2026-cloud-integration-chamber-of-horrors":{"href":"/content/devtoberfest-2026-cloud-integration-chamber-of-horrors","name":"SAP Cloud Integration chamber of horrors","kind":"talk","video":{"id":"uAPknIiIJhQ","url":"https://www.youtube.com/watch?v=uAPknIiIJhQ"},"short":"Anti-patterns in Cloud Integration iFlows","line":"A Devtoberfest 2026 integration-track session that goes through anti-patterns in Cloud Integration iFlows: scripts that re-implement flow steps or make external calls, the ESB_Messaging.send role on every sender channel, default flow-step names, dependence on undocumented platform internals, code that rewrites what the Groovy and Java libraries already hold, XML namespaces stripped to simplify XPath, HTTP calls between iFlows on one tenant where ProcessDirect would stay inside it, externalised parameters too few or too many, and MPL attachments left switched on in production. Each one comes with how to spot it — long scripts, jar files for SFTP communication, the design guidelines and upgrade readiness checks, or a rule in the presenter's own CPILint run locally or in a pipeline — and that pass over flow steps, sender roles, adapters and the message processing log is what the Integration flows edge rests on. The questions afterwards cover the GitHub integration in Cloud Integration, the absence of an official MCP server for building iFlows, and whether generated code shifts the choice between mapping, XSLT and scripting.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers"},"content:devtoberfest-2026-code-based-ai-agents-baip":{"href":"/content/devtoberfest-2026-code-based-ai-agents-baip","name":"Building Code-Based AI Agents on the BAIP","kind":"talk","video":{"id":"YmOjAjD2Hws","url":"https://www.youtube.com/watch?v=YmOjAjD2Hws"},"short":"Writing code-based AI agents on the SAP Business AI Platform","line":"A Devtoberfest 2026 session on writing the agent yourself rather than configuring one, which is the agent tooling edge: an agent is a model with tools, skills, memory and context around it, and the session reads the code of one built in CAP as a LangGraph state graph, with an agent node that calls the model, a tools node holding the MCP clients, and the edge between them looping until no tool is needed. It then shows the shorter route, a CDS service annotated for the agent protocol with its instructions and skills in an agent.md file. SAP AI Core carries both, with the CAP service in front of it as middleware so the credentials never reach the browser, and that is what cap-agent-ui5-webui is demonstrated against: added as a dependency, it gives the annotated service a UI5 chat interface that can be deployed rather than only previewed. A Python multi-agent application on Cloud Foundry, where an orchestrator delegates to per-stack specialists so no single model sees every tool, closes the session.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-10-09"},"content:devtoberfest-2026-daniel-hutzel-brain":{"href":"/content/devtoberfest-2026-daniel-hutzel-brain","name":"What's in Daniel Hutzel's brain?","kind":"talk","video":{"id":"mBAY16nzNMc","url":"https://www.youtube.com/watch?v=mBAY16nzNMc"},"short":"What the CAP team is building for agents, incl. MCP endpoints","line":"A Devtoberfest 2026 session in the building-apps track, in which Daniel Hutzel and DJ Adams work through what the CAP team is building for agents. A bookshop gets an MCP endpoint beside its OData one from a single annotation, with the plugin writing the coding agent's configuration itself; in the xt-travels sample five services that know nothing about each other are served over MCP and an agent does the orchestration the hand-built UI and its value helps used to do. Hutzel then annotates a service as an agent so the ReAct loop and the choice of model move into the CAP service, and finally drops MCP for a skill that teaches the agent CQL instead, which is where the edges to Serve your application over MCP, Agent tooling and Agent guidance come from. The mechanism under all of it, a plugin file in the package root and event handlers that can be added to any CAP service, is the edge to Plugin authoring.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-10-02"},"content:devtoberfest-2026-dat-11-knowledge-graph-hana-cloud":{"href":"/content/devtoberfest-2026-dat-11-knowledge-graph-hana-cloud","name":"Building your knowledge graph on SAP HANA Cloud","kind":"talk","video":{"id":"EVWfXGdSx9c","url":"https://www.youtube.com/watch?v=EVWfXGdSx9c"},"short":"Building a knowledge graph on SAP HANA Cloud","line":"Devtoberfest 2026 session DAT-11, in which two enterprise architects explain what a knowledge graph is and then build one on SAP HANA Cloud. The first half sets the join across three relational tables against an ontology of classes and predicates, the subject-predicate-object triple written as a turtle file, and a SPARQL query over it, and argues that the chain of relationships is what makes a recommendation traceable back to its reasons. The demo, taken from a Discovery Center mission, curates the ontology and the RDF files for an accounts receivable scenario in VS Code, ingests the triples into HANA Cloud with SQL and walks the resulting graph outward from a customer; that is the graph, spatial and document data edge. It closes by separating three things that share the name: the HANA Cloud knowledge graph engine, SAP Knowledge Graph as the data, and the knowledge graph in SAP Business Data Cloud.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-09-22"},"content:devtoberfest-2026-dat-12-ai-agents-hana-embedded-ml":{"href":"/content/devtoberfest-2026-dat-12-ai-agents-hana-embedded-ml","name":"Combining AI Agents with the power of SAP HANA embedded ML (part 1)","kind":"talk","video":{"id":"cRHr2YFLIVw","url":"https://www.youtube.com/watch?v=cRHr2YFLIVw"},"short":"Driving SAP HANA Cloud embedded ML through an agent, part 1","line":"Devtoberfest 2026 session DAT-12, the first of two parts, in which Vitaliy Rudnytskiy does a data scientist's work against the embedded machine learning of SAP HANA Cloud by talking to an agent. The session first takes an agent apart into its LLM, its tools, its memory and the loop between them, then stacks the Predictive Analysis Library under the hana-ml Python wrapper and that under the HANA AI toolkit, whose tools an agent calls from plain English in a notebook to preview a sales refunds table, split it into train and predict tables, run a time-series check and train an AutoML forecast, keeping what it decided in Markdown memory files. That is the agent tooling edge; the same toolkit is then started as an MCP server over stdio and over streamable HTTP and reached from a coding agent and from Joule Work's desktop, which is where the live demo partly fails and the failure is shown.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-09-22"},"content:devtoberfest-2026-dat-13-bw-modernization-bdc":{"href":"/content/devtoberfest-2026-dat-13-bw-modernization-bdc","name":"Strategy and Tool Updates on BW Modernization with SAP Business Data Cloud","kind":"talk","video":{"id":"dawtYL8SGJg","url":"https://www.youtube.com/watch?v=dawtYL8SGJg"},"short":"BW modernisation strategy and tools in SAP Business Data Cloud","line":"Devtoberfest 2026 session DAT-13, in which a product manager for SAP Business Data Cloud sets out the revised BW modernisation strategy, now called optimise, modernise and innovate, and the three tools that carry it. The data product generator transfers BW InfoProviders into local table files in a dedicated BW inbound space of SAP Datasphere, where a data product is still created by hand in the data sharing cockpit; the query template generator turns BW query metadata into an analytical model template in the HANA space; the BW migration assistant, planned to start in Q4 for BW NetWeaver, takes the data flows and transformations below them, and is shown on slides only. That is the loading a warehouse edge, and the demos cover the BW/4HANA cockpit, the ABAP program for the NetWeaver GUI, mass generation with semantics from the BW modeling tools, and the flattening operator for sharing data outside SAP.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-09-22"},"content:devtoberfest-2026-dat-31-bdc-contextualize-and-reason":{"href":"/content/devtoberfest-2026-dat-31-bdc-contextualize-and-reason","name":"SAP BDC in Business AI Platform: Contextualize and Reason","kind":"talk","video":{"id":"cVul8fDPvGc","url":"https://www.youtube.com/watch?v=cVul8fDPvGc"},"short":"SAP Business Data Cloud's place in the Business AI Platform","line":"A Devtoberfest 2026 session (DAT-31) that places SAP Business Data Cloud as the contextualise-and-reason pillar of the SAP Business AI Platform, between the build pillar of Joule Studio and Integration Suite and the govern pillar of AI Agent Hub. It covers data products described with open resource discovery and core schema notation metadata, a data product creation agent that assembles a derived data product for overdue billing documents from the billing document and customer products and shows its lineage and fields; the data products a line-of-business application brings being readable by Joule without a BDC subscription; and the SAP-managed knowledge graph that maps business entities and their relationships for agents, held as graph data in the SAP HANA Cloud knowledge graph engine as RDF triples queried with SPARQL. The closing demo has SAP Joule answer head-count and purchase-order questions, with the generated SQL passed through a data product query that adds the restriction policy defined for that user in cloud identity services, which is why the session stands for cataloguing and lineage as much as for the products it names.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-10-06"},"content:devtoberfest-2026-dat-41-data-product-governance-bdc":{"href":"/content/devtoberfest-2026-dat-41-data-product-governance-bdc","name":"Data Product Governance in SAP Business Data Cloud","kind":"talk","video":{"id":"LcmJy7544Po","url":"https://www.youtube.com/watch?v=LcmJy7544Po"},"short":"Data product governance in SAP Business Data Cloud","line":"A Devtoberfest 2026 data-track session (DAT-41) on data product governance in SAP Business Data Cloud, released as an MVP: every data product belongs to a domain, a consumer puts one in a cart and raises an access request with a purpose, a target location and acknowledged terms and conditions, and a data steward's approval becomes an access agreement recording who uses which data product where. The demo runs both sides in the BDC cockpit — domains, access management and data product management for the steward, catalog, cart and request for the consumer, with Databricks as the target workspace — and that is what the Cataloguing and lineage edge rests on. It also states the current limits: one default domain until custom domains and subdomains arrive, auto-approved requests for space copies, transports and intelligent content, stewards who cannot yet revoke an active agreement, and an install step still done by hand after approval.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers"},"content:devtoberfest-2026-developers-sap-com-in-your-dev-environment":{"href":"/content/devtoberfest-2026-developers-sap-com-in-your-dev-environment","name":"Bring \"developers.sap.com\" Into Your Dev Environment: SAP Developer Context for AI Coding Agents","kind":"talk","video":{"id":"EdsDB-8a228","url":"https://www.youtube.com/watch?v=EdsDB-8a228"},"short":"Rebuilt developers.sap.com and its interfaces for coding agents","line":"Devtoberfest 2026 session FA-11: a tour of the rebuilt developers.sap.com by the team that runs it, from the administration screens behind the home page to the agent interfaces in front of it. The site is a CAP application on SAP HANA Cloud and SAP BTP, open-sourced in full, and the half of the session that places it here is how its content reaches an agent: every tutorial is also served as markdown, a coding agent is detected and given that version instead of the HTML, a well-known agent card advertises what the site offers, and SAP Developers MCP answers questions about tutorials, news and a reader's own completion history in Claude Code and Joule Desktop, over OAuth or a personal access token. Behind the answers sit two things working together: a knowledge graph in the HANA database over 1400 tutorials and 11,000 concepts, and SAP AI Core for the Joule interactions and the embeddings, with the agent harness written for the site rather than taken off a shelf. Where neither MCP nor A2A is available, the same content is published as skills.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-09-25"},"content:devtoberfest-2026-dry-cap-plugins":{"href":"/content/devtoberfest-2026-dry-cap-plugins","name":"DRY CAP – Making Sustainable Solutions Through Plugins","kind":"talk","video":{"id":"3yjKYUtRWHs","url":"https://www.youtube.com/watch?v=3yjKYUtRWHs"},"short":"Packaging shared code as a CAP plugin, built live","line":"A Devtoberfest 2026 building-apps session on packaging the things you would otherwise write twice, from in-house API clients and shared data models to validation logic, as a CAP plugin. The presenter builds one live: a cds-plugin.js next to package.json is what makes CAP notice the plugin at all, an index.cds carries a reusable user context and service that the consuming application projects into its own and protects there, and the plugin registers an Express middleware at a chosen step of the bootstrap to put user properties on the request. A feature-flagging plugin his team already uses closes it, and the whole walkthrough is the edge to Plugin authoring.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-10-02"},"content:devtoberfest-2026-ecc-to-cap-starter-kit":{"href":"/content/devtoberfest-2026-ecc-to-cap-starter-kit","name":"The ECC-to-CAP Starter Kit","kind":"talk","video":{"id":"RdtjNVSH5Q0","url":"https://www.youtube.com/watch?v=RdtjNVSH5Q0"},"short":"CAP service and Fiori elements app over an SAP ECC gateway service","line":"A Devtoberfest 2026 session that builds a CAP service and a Fiori elements list report over an SAP ECC gateway service, on the argument that the CAP project, its contract and its UI survive a later move to SAP S/4HANA while the APIs behind them change. The service integration edge is the body of the demo: the metadata of the ECC flight service is saved as an EDMX file, imported with cds import so the model holds the structure and none of the data, projected read-only into a flight service, and one line of handler code forwards each read to ECC, with filtering, sorting and paging translated down to the older OData version the system speaks. The SAP Destination service edge covers the on-premise destination and the additional properties the walkthrough insists on, and the SAP Business Application Studio edge covers the full-stack dev space, the CAP project wizard, the service center plugin for picking up another OData service, and cds watch run under the profile that uses those credentials.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-10-09"},"content:devtoberfest-2026-errors-in-bapis-or-rap-bos":{"href":"/content/devtoberfest-2026-errors-in-bapis-or-rap-bos","name":"S/4HANA Custom Development - What happens in case of errors in BAPIs or RAP BOs?","kind":"talk","video":{"id":"_07oJmWDNz8","url":"https://www.youtube.com/watch?v=_07oJmWDNz8"},"short":"Handling errors from BAPIs and RAP BOs in custom S/4HANA processes","line":"A Devtoberfest 2026 session on what a custom S/4HANA process does when a BAPI or a RAP business object fails. It is framed from project work rather than product development, with the same issues and challenges turning up on project after project, and it offers the ABAP Processing Center, ABAP-PRC, as what fills the gap it names in modern ABAP development. The edges rest on the opening, which states the session's subject as errors in S/4HANA custom development, read as error handling on the ABAP door, and names that framework.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-09-21"},"content:devtoberfest-2026-event-driven-intelligence":{"href":"/content/devtoberfest-2026-event-driven-intelligence","name":"IntegrAItion: Event-Driven Intelligence","kind":"talk","video":{"id":"aUNHb-4qyDo","url":"https://www.youtube.com/watch?v=aUNHb-4qyDo"},"short":"Events as the way to keep AI agents informed","line":"A Devtoberfest 2026 session, INT-33, whose line is that agents fail because they are not informed enough rather than not clever enough, and that events are how they get informed: what an event is, the source-broker-consumer split, notification against data events, and topic filtering as the thing that decides which agents are woken at all and what that costs in tokens. It covers Event Mesh as the concern — topics, subscriptions, filters and queues — and SAP Integration Suite, advanced event mesh as the product, down to its event portal and catalogue, the mesh and cluster managers and distributed tracing. The closing demo sends an S/4HANA product-defect event through the mesh to wake an agent in Joule Studio, which fetches what it still needs over MCP and reports to a person the next morning.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-10-07"},"content:devtoberfest-2026-fiori-elements-adt-vscode-ui-33":{"href":"/content/devtoberfest-2026-fiori-elements-adt-vscode-ui-33","name":"Intelligent App Development at Scale: SAP Fiori Elements + ABAP Development Tools for VS Code","kind":"talk","video":{"id":"5u2Z6hR7-28","url":"https://www.youtube.com/watch?v=5u2Z6hR7-28"},"short":"RAP service and Fiori elements app in VS Code with MCP servers","line":"A Devtoberfest 2026 session (UI-33) that builds a RAP service and the SAP Fiori elements app over it from one VS Code workspace, with a coding agent driving two of SAP's MCP servers. The ABAP Development Tools for VS Code edges hold on the demo itself: its virtual file system keeps the ABAP package beside the Fiori project, the ADT MCP Server inside it creates, changes and activates the ABAP objects, and a version not yet released publishes the service binding from the agent instead of by hand. The @sap-ux/fiori-mcp-server edge covers its generators and the three-step workflow it uses for changes — list the functionality available for the application, ask for its JSON schema, then execute it — and the agent guidance edge rests on the skills the Fiori team publishes beside it, on the session's account of what a skill adds that a server does not, and on the analytical chart demo where a skill orchestrates both servers in one task.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-10-09"},"content:devtoberfest-2026-from-apis-to-agent-tools-mcp-gateway":{"href":"/content/devtoberfest-2026-from-apis-to-agent-tools-mcp-gateway","name":"From APIs to Agent Tools: How MCP Gateway changes what Integration means","kind":"talk","video":{"id":"XwHqKGFe7TQ","url":"https://www.youtube.com/watch?v=XwHqKGFe7TQ"},"short":"MCP gateway in SAP Integration Suite turning APIs into agent tools","line":"The opening session of the Devtoberfest 2026 integration track, in which two product managers for SAP Integration Suite set out why the suite puts an MCP gateway between agents and backend systems, and then build one. The demo turns an HTTP endpoint and its OpenAPI specification into MCP tools on the integration cell runtime, does the same on top of an existing API-centric integration, and shows the policies tab where authentication through an external provider, quotas, spike arrest and IP filtering sit, plus the trace of the JSON-RPC calls in monitoring and the agent they are earmarked against in analytics. That is where the serve your application over MCP and tool governance edges hold; RFCs and BAPIs as sources are stated as supported, and MCP federation, custom domains and edge integration cell as roadmap.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-09-23"},"content:devtoberfest-2026-hana-data-lake-files":{"href":"/content/devtoberfest-2026-hana-data-lake-files","name":"SAP HANA Data Lake Files (HDLF) Basic Functionalities","kind":"talk","video":{"id":"_Pcrezj3Zlo","url":"https://www.youtube.com/watch?v=_Pcrezj3Zlo"},"short":"Basics of SAP HANA data lake files in SAP HANA Cloud","line":"A Devtoberfest 2026 data-track session on SAP HANA data lake files, the managed object store inside SAP HANA Cloud that is provisioned from HANA Cloud Central, priced per API call and per stored gigabyte, and reached with the same REST API whichever hyperscaler it runs on. Two product managers set up an instance with its IP allow list, client certificates and trusts, then upload, list, read and delete files over the WebHDFS REST API and the HDLFS command-line utility — the Object storage half — and cover file versions with snapshots, access policies per file, and chunked upload with a server-side merge. They then link the instance to a HANA database and query a CSV file as a virtual table: SQL on files now runs through a file adapter in the database, while the older path through the data lake relational engine is deprecated.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers"},"content:devtoberfest-2026-how-to-build-application-jobs-abap-environment":{"href":"/content/devtoberfest-2026-how-to-build-application-jobs-abap-environment","name":"How to Build Application Jobs in SAP Business AI Platform, ABAP environment","kind":"talk","video":{"id":"H8aGwcOAwOI","url":"https://www.youtube.com/watch?v=H8aGwcOAwOI"},"short":"Building application jobs in the cloud ABAP environment","line":"A Devtoberfest 2026 session on the application job framework in the cloud ABAP environment, built from the repository objects outwards: a class implementing the new application job interface, whose public attributes become the parameters and select options, the application log object it writes to, a job catalog entry that lays out sections, groups and value helps, and a job catalog template that works like a report variant. The demo schedules and monitors runs in the Application Jobs Fiori app, starts a job from a RAP action through the scheduling API under a job user of its own, and debugs one through the template's run-for-testing entry. It closes on the alternatives for work that should not be a job — the background processing framework for short-running work, and RAP events consumed locally or sent over the event mesh — which is the async processing this session covers for SAP BTP ABAP environment.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-09-28"},"content:devtoberfest-2026-inbox-to-quotation-react-cap":{"href":"/content/devtoberfest-2026-inbox-to-quotation-react-cap","name":"From Inbox to Quotation: An AI-Assisted Sales Workbench in React on SAP CAP","kind":"talk","video":{"id":"a5VdfCp-q-8","url":"https://www.youtube.com/watch?v=a5VdfCp-q-8"},"short":"React sales workbench on CAP turning e-mails into S/4HANA quotations","line":"A Devtoberfest 2026 session walking live through a sales workbench that turns an incoming customer e-mail into a quotation in S/4HANA, built as a React UI on CAP. It shows the filterable request inbox, the extracted configuration properties with a confidence indicator per characteristic, the variant configurator rendered in React from a JSON schema the configuration service returns, and the link from a derived value back to the place in the e-mail it was read from; the stated reason for the stack is that CAP keeps authentication, destinations and deployment the same in every project, which is where frontend boundary holds. The inbox grows while a user works because a CAP WebSocket plugin pushes new requests into the list — WebSocket.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-10-09"},"content:devtoberfest-2026-int-12-ai-adapter-credit-checks":{"href":"/content/devtoberfest-2026-int-12-ai-adapter-credit-checks","name":"From opportunity to decision: Intelligent Credit Checks with AI Adapter in SAP Cloud Integration","kind":"talk","video":{"id":"Gb95deDGGSA","url":"https://www.youtube.com/watch?v=Gb95deDGGSA"},"short":"Credit checks with the AI adapter in Cloud Integration","line":"Devtoberfest 2026 session INT-12, in which an integration consultant builds two scenarios around the AI adapter in Cloud Integration. The first integration flow is triggered by a Salesforce opportunity event, reads that customer's history from S/4HANA over its OData APIs and calls a sales agent through the AI adapter, which writes a credit status and a credit rating band back onto the opportunity for the sales representative to act on; the second calls an operations agent from an exception subprocess and raises a Jira ticket carrying the suggested resolution, the related past tickets and the average resolution time recorded for the issue. The session places the adapter among the HTTP, Open Connectors and application-specific adapter routes, names its SAP Generative AI Hub, OpenAI and Claude variants, and gives the build effort as roughly 50 to 60 hours for the OData calls against the adapter configuration's two tabs.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-09-23"},"content:devtoberfest-2026-int-13-joule-desktop-mcp-gateway":{"href":"/content/devtoberfest-2026-int-13-joule-desktop-mcp-gateway","name":"Supercharge Joule Desktop: Connect Any SAP API in Minutes with MCP Gateway","kind":"talk","video":{"id":"csvyl_PClkA","url":"https://www.youtube.com/watch?v=csvyl_PClkA"},"short":"Connecting S/4HANA to Joule Work desktop through the MCP gateway","line":"Devtoberfest 2026 session INT-13, in which an SAP solution advisor connects a live S/4HANA system to the desktop experience of Joule Work through the MCP gateway in SAP Integration Suite. One OpenAPI specification covering business partners, sales orders, material stock, billing and purchase requisitions is uploaded as an MCP server artifact, deployed to integration cell with XSUAA inbound authentication, and registered as an MCP connector; the destination behind it is then switched from basic authentication to principal propagation, and the Cloud Connector monitor shows the same question arriving as the presenter's own user. That demonstration is the serve your application over MCP edge, and the second half is Joule Work itself: a Markdown skill that fixes the steps and format of a customer briefing, and a Space the skill rebuilds with each run.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-09-23"},"content:devtoberfest-2026-int-21-mcp-gateway-in-practice":{"href":"/content/devtoberfest-2026-int-21-mcp-gateway-in-practice","name":"MCP Gateway in Practice: Architecture, configuration, and hands-on","kind":"talk","video":{"id":"KE39bVDTfzo","url":"https://www.youtube.com/watch?v=KE39bVDTfzo"},"short":"Architecture and configuration of the Integration Suite MCP gateway","line":"A Devtoberfest 2026 integration-track session (INT-21) on the MCP gateway of SAP Integration Suite: curated enterprise APIs served to agents as MCP tools over JSON-RPC, behind the authentication, authorization and traffic policies an API artifact already carries, with the existing API layer left in place. The hands-on half composes S/4HANA plant, material-stock and supplier data with a non-SAP location-risk source into one business data graph, downloads its OpenAPI specification, creates an MCP server artifact with tools, prompts and a surge-protection policy over that endpoint, and publishes it as a product in Developer Hub of API Management, where an agent developer subscribes and gets OAuth credentials. An MCP client then asks for 15 brake pads and ranks plants by stock, location risk and distance from Walldorf, which is what the agent access to your systems edge rests on; the Q&A covers principal propagation to the backend, how errors reach the model, and which Integration Suite editions carry the gateway.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers"},"content:devtoberfest-2026-int-31-agentic-ai-integration-suite":{"href":"/content/devtoberfest-2026-int-31-agentic-ai-integration-suite","name":"Powering Enterprise-Ready Agentic AI with SAP Integration Suite","kind":"talk","video":{"id":"yTC3zzPff-w","url":"https://www.youtube.com/watch?v=yTC3zzPff-w"},"short":"Creating an MCP server from a deployed API in Integration Suite","line":"A Devtoberfest 2026 session (INT-31) from SAP Integration Suite product management on the MCP gateway. The demo creates an MCP server in a design package from an API already deployed on the tenant, exposes two of its 300-odd resources as tools, attaches authentication and quota policies on a policies tab, and publishes the deployed endpoint as an AI product in Developer Hub of API Management, where an agent subscribes and receives a token, URL, key and secret; the calls then show up in monitoring, in message processing logs and in the analytics dashboard, which is the MCP exposure and the tool governance the edges rest on. Three AI features inside Cloud Integration follow: a content migration agent that converts a PI/PO Java mapping into a Groovy script and generates a second integration flow for its lookup, memory profiling during a flow simulation, and root-cause analysis on a failed message processing log.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-10-07"},"content:devtoberfest-2026-int-41-edge-integration-cell":{"href":"/content/devtoberfest-2026-int-41-edge-integration-cell","name":"Edge Integration Cell - what's new?","kind":"talk","video":{"id":"uyJ3tgng5AA","url":"https://www.youtube.com/watch?v=uyJ3tgng5AA"},"short":"What is new in Edge Integration Cell","line":"A Devtoberfest 2026 integration-track session (INT-41) on Edge Integration Cell, the runtime of SAP Integration Suite a customer runs on their own Kubernetes cluster while design, configuration and monitoring stay in the cloud tenant. It names what the customer has to provide — a supported Kubernetes platform, SAP HANA or PostgreSQL, Redis or Valkey as data store, a load balancer — then the Edge Lifecycle Management cockpit with its monthly rolling updates, the inbuilt and the external Cloud Connector options and why a DMZ placement calls for the second, and the adapters available only on Edge: RFC sender, NFS, OFTP2 and UNF. The demo deploys an OFTP-to-file flow to the Edge runtime and shows the same flow rejected when its runtime profile is switched to cloud, which is where the Integration flows edge holds.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers"},"content:devtoberfest-2026-int-43-event-studio":{"href":"/content/devtoberfest-2026-int-43-event-studio","name":"Event Add-On for ERP: All you need to know about the new Event Studio","kind":"talk","video":{"id":"HyLYUZ7bcII","url":"https://www.youtube.com/watch?v=HyLYUZ7bcII"},"short":"Event Studio in the Event Add-On for ERP, defining events without code","line":"A Devtoberfest 2026 integration-track session (INT-43) on Event Studio, the browser-based part of the Event Add-On for ERP that defines events in an S/4HANA or ECC backend without code and sends them to a broker. A custom sales-order event is built live — fields picked into a payload that is published as a CDS view entity, a trigger on a classic business object, a static topic — and arrives in a queue on SAP Integration Suite, advanced event mesh, which is where the Event Mesh edge holds. The rest of the demo covers health and exception monitoring in SAP Cloud ALM, the AsyncAPI definition replicated to Event Portal, and the AI assistant and MCP server now inside Event Studio.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers"},"content:devtoberfest-2026-int23-agent-calls-sap":{"href":"/content/devtoberfest-2026-int23-agent-calls-sap","name":"🔴 Your Agent Wants to Call SAP. Now What?","kind":"talk","video":{"id":"4XMQYwposUc","url":"https://www.youtube.com/watch?v=4XMQYwposUc"},"short":"What belongs between an agent and an SAP system","line":"Devtoberfest 2026 session INT-23, on what belongs between an agent and an SAP system. A solution advisor and an enterprise architect point Joule Desktop extensions at MCP servers built on API Management inside SAP Integration Suite, and ask it for business partners, orders and line items from an S/4HANA demo system; asked for the ten largest customers it answers from a sample of 200 orders rather than reading the whole table. They then open the API proxy behind it, where a spike arrest policy caps the backend at ten calls per second and the MCP server is configured to expose only the GET resources of the business-partner API so that an agent cannot create one, which is where the edges to Serve your application over MCP and Rate limiting hold. For totals across all sales orders they send the agent to SAP Business Data Cloud instead of the transactional system, since it aggregates and is read-only, and back through Integration Suite for writes such as journal entries.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-09-30"},"content:devtoberfest-2026-intent-to-arcade-joulebert":{"href":"/content/devtoberfest-2026-intent-to-arcade-joulebert","name":"From Intent to Arcade: Building Joule*Bert with Joule Studio and AI-Assisted Pro Code","kind":"talk","video":{"id":"HN52Jm4OqD4","url":"https://www.youtube.com/watch?v=HN52Jm4OqD4"},"short":"Building an arcade game through every phase of Joule Studio","line":"A Devtoberfest 2026 AI-track session that takes a Q*bert-style arcade game, written as an Easter egg for colleagues, through every phase Joule Studio runs: intent analysis with its clarifying questions, a product requirements document, a specification with its task list, generated code, generated tests and deployment. The knowledge-graph lookup reports that the game maps to no enterprise process and the flow adjusts, and the presenter edits the requirements by hand when the first version declares sound out of scope. He then pushes the project to GitHub, clones it and initialises the jl command line so that Joule Studio's MCP servers are wired into the coding agent in VS Code, where mobile arrow keys were added afterwards; applications could not yet be deployed to the Joule Studio runtime, so this one runs on Kyma.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-10-01"},"content:devtoberfest-2026-joule-work-agentic-thinking":{"href":"/content/devtoberfest-2026-joule-work-agentic-thinking","name":"Be the First to Understand Joule Work's Agentic Thinking","kind":"talk","video":{"id":"XhqXg_9H6A4","url":"https://www.youtube.com/watch?v=XhqXg_9H6A4"},"short":"Agent harness behind agentic thinking in Joule Work","line":"A Devtoberfest 2026 session on the agent harness behind agentic thinking in Joule Work: generic operating-system tools in a gVisor-isolated sandbox instead of hand-wired domain functions, a react loop, a warm pool of sandboxes torn down after each task, tenant-separated skill loading, and placeholder tokens the agent never sees swapped for real credentials at the egress path. A skill is a folder with a SKILL.md carrying metadata and instructions, and where it reaches a system, an SAP connectivity JSON that declares each connector by ORD ID with its guardrails — GET allowed by default, POST, PUT, PATCH and DELETE requiring human approval, everything else blocked. The demo uploads a cost-centre skill through the skills view, then has agentic thinking delegate over A2A through Agent Gateway to a custom agent built in Joule Studio, whose MCP tools read cost centres from an S/4HANA Cloud system, and ends by turning the result into a PDF; the Joule Studio trace is what shows the tool call actually happened.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-10-15"},"content:devtoberfest-2026-meet-joule-studio-first-ai-agent":{"href":"/content/devtoberfest-2026-meet-joule-studio-first-ai-agent","name":"Meet Joule Studio and Build your First AI Agent","kind":"talk","video":{"id":"rg6n5x7EI3Q","url":"https://www.youtube.com/watch?v=rg6n5x7EI3Q"},"short":"Building a first AI agent along Joule Studio's full path","line":"A Devtoberfest 2026 session from the product manager of Joule Studio, walking one agent through the whole path the tool defines: an intent, the problem statement and goals a coding agent derives from it, the business context it takes from the SAP knowledge graph, and the solution type it proposes with a stated intent fit. The demo is a collections agent that drafts dunning emails: the product requirements document names the metrics and the human-in-the-loop review, the technical specification lists the artifacts to build — the MCP tools among them — and the build is followed by a business test run against business partner 10001, technical unit tests, and deployment to the managed runtime, where the agent and its MCP server appear as deployed assets. Two points shape how it is used rather than what it produces: every asset is a file, editable in the web editor or in the code view and pushable to git, and the same solution can be built from local pro-code tools; n8n workflows are stated as delivered out of the box inside the studio.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-09-24"},"content:devtoberfest-2026-n8n-for-agentic-integrations":{"href":"/content/devtoberfest-2026-n8n-for-agentic-integrations","name":"How to Use n8n for Agentic Integrations and Cool Insights","kind":"talk","video":{"id":"BtCoFKnbyQo","url":"https://www.youtube.com/watch?v=BtCoFKnbyQo"},"short":"n8n use case judging warranty claim attachments","line":"A Devtoberfest 2026 session on one use case built with n8n, the workflow automation tool SAP announced a partnership with in May 2026: judging the attachments of an automotive warranty claim. A Fiori upload table carries named evidence rows — this line is the invoice, this one the quote — and each uploaded file goes as base64 to an n8n webhook together with the claim context: the position and diagnosis codes, the parts, the amounts and the conversation with the dealer. The flow splits PDF from image, tries text extraction before falling back to a vision prompt, and calls Anthropic's Sonnet with a prompt that names the role, the input, the scoring rules and the response shape; the demo shows a matching invoice scoring 95%, an unrelated dent-removal invoice scoring 5% with the mismatches listed, and a photograph of a rusted suspension arm accepted while an engine bay is rejected against the same claim. The second half is the n8n editor itself — nodes, credentials, the test trace with each node's input and output — and the closing advice is human-in-the-loop flows at the edges of a process rather than automatic adjudication inside it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-09-25"},"content:devtoberfest-2026-news-from-custom-code-migration-ecc-to-s4hana":{"href":"/content/devtoberfest-2026-news-from-custom-code-migration-ecc-to-s4hana","name":"News from Custom Code Migration: ECC to SAP S/4HANA Powered by Agentic AI","kind":"talk","video":{"id":"Fer_uIryMM8","url":"https://www.youtube.com/watch?v=Fer_uIryMM8"},"short":"New custom code migration tools for ECC to SAP S/4HANA","line":"A Devtoberfest 2026 session (ABA-23) on what SAP has added to the ECC to SAP S/4HANA custom code migration tools, demonstrated across a live ECC and an S/4HANA system. The first half stays deterministic and explains static analysis in that process: the custom code migration app's scoping over ABAP test cockpit findings, an explain of a legacy report and of an S/4HANA simplification finding, and transferable quick fixes exported from the app and applied on the ECC system through the SAP GUI ATC transaction before conversion. The second half runs the S/4HANA custom code migration agent in ABAP Development Tools for Eclipse: GitHub Copilot drives the ADT MCP Server's ATC and quick-fix tools in a loop, SAP Joule for Developers, ABAP AI capabilities produces the AI code proposals behind it, and only the high-confidence ones are written into the code, the rest left as comments in one transport request.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-09-28"},"content:devtoberfest-2026-rap-authorizations-business-users":{"href":"/content/devtoberfest-2026-rap-authorizations-business-users","name":"Developing authorizations for business users in SAP Business AI Platform, ABAP environment","kind":"talk","video":{"id":"iL3AtlE3cBQ","url":"https://www.youtube.com/watch?v=iL3AtlE3cBQ"},"short":"Where authorization checks go when implementing a RAP BO","line":"A Devtoberfest 2026 session that walks the places an authorization check has to be written when a RAP business object is implemented, which is the whole of the authorization edge: read restrictions as DCL access controls that become a filter at query time, a child entity inheriting its parent's conditions through an association, the projection layer inheriting rather than changing them, and the same check repeated on the draft side. The ABAP CDS edge holds on that draft half — until 2608 a draft query view was needed above the draft table so a DCL had something to attach to, while a draft table entity is already on CDS level and takes the DCL directly, as long as the associations used in the inherited conditions are redefined on it. Create, update and delete are then taken handler by handler, including the trap that instance authorization reads the buffer and so cannot see the new value a pre-check would reject, and the session closes on in local mode and privileged EML calls.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-10-12"},"content:devtoberfest-2026-rap-draft-handling":{"href":"/content/devtoberfest-2026-rap-draft-handling","name":"What's new with draft handling in RAP?","kind":"talk","video":{"id":"ksNSSDad0Eg","url":"https://www.youtube.com/watch?v=ksNSSDad0Eg"},"short":"Collaborative draft and draft scope in RAP","line":"An ABAP-day session at Devtoberfest 2026 on two additions to draft handling in RAP: collaborative draft, where two users work on the same draft instance and a field is locked only while the other is in it, and draft scope, where editing an instance of one draft-enabled business object puts the related instances of a dependent one into draft as well. Andre Fischer shows what each costs in the behaviour definition and projection, the draft query view and its DCL that collaborative draft needs over a table-based business object, and the CDS table entities that remove both the draft query view and the persistence table, with their current restrictions in ABAP analytics and extensibility; the from-scratch generator in ADT grows a checkbox for them. Both demos run against the DMO flight scenario of SAP-samples/abap-platform-refscen-flight, and the last part hides the draft-related features of an OData V4 app in its manifest, which the session gives as the reason a simple create-update-delete app no longer needs a V2 service binding.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-09-21"},"content:devtoberfest-2026-rap-side-effects":{"href":"/content/devtoberfest-2026-rap-side-effects","name":"Always in Sync — Field-level and event-driven side effects for reactive UIs in RAP","kind":"talk","video":{"id":"TvN_GbfgNbA","url":"https://www.youtube.com/watch?v=TvN_GbfgNbA"},"short":"Field-level and event-driven side effects in RAP","line":"A Devtoberfest 2026 session on side effects in RAP — the declarations in a behaviour definition that tell a draft UI to reload what a change affected, instead of leaving the user to refresh the browser. Field-level side effects recalculate a total price from a determination when a booking fee is entered, including across the association from a child item up to the root entity, and a permissions side effect toggles a description field between read-only and editable; a global side effect is attached to a determine action, fires when the user presses Enter, and only one may exist per business object, which is why the prepare action and a second determine action cannot both carry it. The last part starts a long-running calculation through the background processing framework and raises a business event that the behaviour definition lists as a side effect source and the projection makes public, so the Fiori app is updated with a notification when the work finishes, whether it was triggered by the user or by an application job — the transactional model and the async processing side the edges rest on.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-10-05"},"content:devtoberfest-2026-real-pro-code-joule-studio":{"href":"/content/devtoberfest-2026-real-pro-code-joule-studio","name":"Real Pro-Code Development with Joule Studio","kind":"talk","video":{"id":"_7mOhtsUfII","url":"https://www.youtube.com/watch?v=_7mOhtsUfII"},"short":"One agent build across both of Joule Studio's paths","line":"A Devtoberfest 2026 AI-track session that runs one agent build across both of Joule Studio's paths. Playing a procurement manager, one presenter states the intent in the browser, answers the clarifying questions, watches the fit-gap analysis name the S/4HANA APIs the use case needs, and pushes the intent and requirements document to GitHub; the other clones it and carries on in a terminal, logging in with the jl command line against her landscape URL and running its init command to fetch Joule Studio's skills for OpenCode. From there the coding agent writes the specification, the discovered API specifications, the MCP translation and the agent's Python file with its model configuration and evaluation scenarios, which is the edge to Agent tooling; the skills themselves, which SAP says not to edit but which a developer may add to, are the edge to Agent guidance.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-10-01"},"content:devtoberfest-2026-sap-bdc-and-ai":{"href":"/content/devtoberfest-2026-sap-bdc-and-ai","name":"SAP BDC and AI: A Perfect Match","kind":"talk","video":{"id":"iEUTS1ySSL8","url":"https://www.youtube.com/watch?v=iEUTS1ySSL8"},"short":"How SAP Business Data Cloud feeds SAP's business AI platform","line":"A Devtoberfest 2026 data-track session (DAT-22) in which Business Data Cloud's CTO sets out how SAP Business Data Cloud feeds SAP's business AI platform: data products whose primary persistence is an object store and whose semantics are kept with them, the one domain model that links a supplier in Ariba to a supplier in S/4HANA, and the SAP knowledge graph, a triple store running in SAP HANA Cloud and queried with SPARQL, that SAP Joule consults before answering. The live demo asks Joule for the available data products and the top ten open purchase orders, with the data product query agent compiling SQL over virtual tables and a space rendering a dashboard, which is the cataloguing side of this: a central registry, the Unified Customer Landscape, that every activated data product is registered in. The Q&A covers where the knowledge graph lives and what a customer may extend, base policies that turn into filter conditions on an agent's queries, and Joule Studio as the place to build your own agents and data products.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-09-29"},"content:devtoberfest-2026-sap-customers-adopted-n8n":{"href":"/content/devtoberfest-2026-sap-customers-adopted-n8n","name":"How Have SAP Customers Adopted n8n","kind":"talk","video":{"id":"FkgMKdLHjWc","url":"https://www.youtube.com/watch?v=FkgMKdLHjWc"},"short":"What SAP customers build with the standalone edition of n8n","line":"A Devtoberfest 2026 session on what SAP customers are building with the standalone edition of n8n, from a partner who maintains an SAP OData node for it: use cases across purchase-to-pay, sales, finance and IT service, two live workflows, and the rules he works to — released SAP APIs only, no LLM in the decision path, exceptions to a person. The tool-choice half is where the edges hold: SAP Integration Suite is placed as the job for governed, high-volume system-to-system integration, and its MCP server is what the agent in the second demo reads SAP data through, while process automation is the concern the session sorts between document intake, approvals and the bot inventory that stays with RPA. The first demo is an order-confirmation check that reads a PDF, compares the lines against the purchase order over OData, asks a person, then writes the confirmation back.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-10-08"},"content:devtoberfest-2026-sap-themes-with-coding-agents":{"href":"/content/devtoberfest-2026-sap-themes-with-coding-agents","name":"Bringing SAP themes to any web app with coding agents","kind":"talk","video":{"id":"sl-U76hKJAQ","url":"https://www.youtube.com/watch?v=sl-U76hKJAQ"},"short":"How SAP themes are built and applied to web apps by coding agents","line":"A Devtoberfest 2026 session from SAP's UI theme designer team, in two halves. The first is how an SAP theme is built: seven reference tokens, the main tokens that carry the semantics, component tokens such as the emphasized button background, and derived tokens for states like hover — the inheritance chain that makes theming hard to follow by eye, and the reason a custom theme always derives from an SAP base theme. The second installs SAP/ui-theme-designer-plugins-for-coding-agents in Claude Code and has it apply SAP design tokens to a login screen built with a non-SAP component library, then make the page themeable from a theme root and a theme URL parameter; the design-tokens skill npm-installs the theming content to read current parameter values, and the help skill fetches the UI theme designer help pages at query time. The presenters state the skills are not limited to SAPUI5 and run in any coding agent that reads skills.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-09-25"},"content:devtoberfest-2026-tabular-foundation-models":{"href":"/content/devtoberfest-2026-tabular-foundation-models","name":"Unlocking Tabular Foundation Models: From Experimentation to Production","kind":"talk","video":{"id":"c8iO1JWEVFM","url":"https://www.youtube.com/watch?v=c8iO1JWEVFM"},"short":"Taking tabular foundation models from playground to production","line":"A Devtoberfest 2026 session (AI-41) on taking tabular prediction from a playground to a deployment. It sets tabular foundation models against a model trained per use case and against language models reading rows as text, explains in-context learning as examples plus the rows whose target column is missing, and tries SAP RPT 1.6 on a train-delay dataset in the RPT playground, including the column and row importance it returns with the prediction. The same prediction is then rebuilt on SAP AI Core, where the tabular orchestration service plays the part the orchestration service plays for language models: a data destination, a table artifact with its CSN schema and a scenario configuration registered once at design time, after which a predict call passes only the query rows, the scenario configuration and a context-selection strategy. The last demo runs those same calls in natural language through the aicore-skills plugin in a coding agent, and one of them only resolves once the agent is told which scenario configuration to use.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-10-15"},"content:devtoberfest-2026-tabular-predictions-tabpfn":{"href":"/content/devtoberfest-2026-tabular-predictions-tabpfn","name":"How We Make Tabular Predictions in 2026 with TabPFN","kind":"talk","video":{"id":"qEQkOA3ogLk","url":"https://www.youtube.com/watch?v=qEQkOA3ogLk"},"short":"Tabular predictions with TabPFN versus language models","line":"A Devtoberfest 2026 session, AI-32, on why a table needs a model of its own: a language model reasons its way to a plausible number, while a tabular foundation model takes the table as context in one forward pass and learns from its features statistically. That is predictive models from both ends — a scikit-learn-shaped fit and predict in a notebook over a heart-disease data set, predicted class probabilities and SHAP values for which features drove the outcome, then the same model reached as an MCP tool by a coding agent that is asked which current customers are most likely to churn. The presenter is from the lab that publishes TabPFN; the Q&A puts it beside SAP's own tabular foundation model, which she says she has not used.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-10-08"},"content:devtoberfest-2026-token-efficiency":{"href":"/content/devtoberfest-2026-token-efficiency","name":"Token Efficiency – Your Guide To Smart AI Development","kind":"talk","video":{"id":"238nMtOUZWY","url":"https://www.youtube.com/watch?v=238nMtOUZWY"},"short":"Where a coding agent's tokens go and how to spend fewer","line":"A Devtoberfest 2026 session from two engineers on SAP's business AI platform team on where a coding agent's tokens go: the read-decide-act loop behind one request, what the context command shows is occupying the window — 22,700 tokens of tool definitions against 1,800 of project instructions in their example — and the habits of compacting with a hint, clearing between tasks, choosing model and reasoning effort per job, and handing a large investigation to a sub-agent so only its summary comes back. It reaches agent guidance through the part on skills: a skill holds the reusable instructions for one kind of work and is disclosed progressively, a short description in the window and the detailed file read when it is relevant, rather than every occasional procedure sitting in the always-loaded project instructions. The demo runs on Claude Code against a generated warehouse-management project, with a custom status line showing context, session cost and a self-set budget.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP Developers, published 2026-10-08"},"content:devtoberfest-2026-ui5-views-type-safe-tsx":{"href":"/content/devtoberfest-2026-ui5-views-type-safe-tsx","name":"UI5 Views, Reimagined: Type-Safe TSX for a Modern Dev Experience","kind":"talk","video":{"id":"B4BRUJPwVzo","url":"https://www.youtube.com/watch?v=B4BRUJPwVzo"},"short":"Writing UI5 views as type-checked TSX with @ui5-community/jsx-runtime","line":"A Devtoberfest 2026 session on @ui5-community/jsx-runtime, the incubation project that lets a UI5 view be written as TSX: XML-like markup that the TypeScript compiler checks against the control's own types and a Babel plugin turns into the constructor calls UI5 already makes. The edge to the runtime rests on the session's own description, which gives the project's documentation site as the session's documentation. The TypeScript support edge holds because that is the session's subject — per-property checking, completion on every attribute, renames that carry through a view, and typed event objects that remove the casts — alongside what stays unchanged: string and expression bindings, controllers, routing and i18n, and XML views living beside TSX ones in the same app. The build edge rests on the setup, where ui5-tooling-transpile is given the JSX transform in ui5.yaml; the walkthrough then builds a bookshop app on a CAP OData service and names what is still missing, UI flexibility and native HTML among it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-10-09"},"content:diagrams-related-to-odata-entities-cap-ecc":{"href":"/content/diagrams-related-to-odata-entities-cap-ecc","name":"Diagrams related to OData entities (CAP & ECC)","kind":"blog","line":"Builds a small CAP service that uses the framework's reflection API to read an OData entity's elements and associations and emits PlantUML diagram source for it, as a hand-rolled alternative to the OpenAPI/Yuml-based diagram export capire documents. The author contrasts the PlantUML result with the OpenAPI/Yuml diagram, calling it more detailed and giving more control over orientation, colors and links. Part 1 of a two-part series; part 2 covers the same idea for ECC/ABAP.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Pierre_Godart, published 2022-09-06"},"content:discovering-fiori-elements-analytical-functions-with-sap-support-messages":{"href":"/content/discovering-fiori-elements-analytical-functions-with-sap-support-messages","name":"Discovering SAP Fiori Elements Analytical functions by implementing SAP Support Message Reporting","kind":"blog","short":"Fiori elements analytical annotations via a support message report","line":"Analytical annotations learned by building something the author wanted — a view over SAP support messages — after a conversation in February 2021 that the post dates precisely. Exploration written up as exploration.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2021-03-14"},"content:display-of-hierarchical-data-in-sap-fiori-elements-using-cap":{"href":"/content/display-of-hierarchical-data-in-sap-fiori-elements-using-cap","name":"Display of hierarchical data in SAP Fiori elements using SAP Cloud Application Programming Model","kind":"blog","short":"Hierarchical data in Fiori elements over CAP, before native support","line":"Hierarchies before the framework supported them, and the post now opens with its own update saying that Fiori elements V4 and OData V4 support tree views natively and linking the guide. Read the update first; the rest is the record of what people did in the meantime.","chip":{"label":"Compatibility","tier":"poor","evidence":"1 finding"},"ai":true,"meta":"OliverKlemenz, published 2022-07-01"},"content:display-pdf-from-btp-forms-service-in-a-cap-sapui5-application":{"href":"/content/display-pdf-from-btp-forms-service-in-a-cap-sapui5-application","name":"Using Custom Actions to display PDF from SAP BTP Forms service into a CAP SAPUI5 application","kind":"blog","short":"Showing a Forms service PDF in a CAP UI5 app via a custom action","line":"A requirement that arrived after the application was finished — render a PDF from the record currently open on an object page — and the join it needed: the Forms service bound to the CAP application, a custom action on the service, and a button on the object page header calling it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"rodfior, published 2023-01-30"},"content:distributed-resiliency-of-cap-applications-with-hana-multi-zone-replication":{"href":"/content/distributed-resiliency-of-cap-applications-with-hana-multi-zone-replication","name":"Distributed Resiliency of SAP CAP applications using SAP HANA Cloud (Multi-Zone Replication)","kind":"blog","short":"CAP resilience with HANA Cloud multi-zone replication","line":"Resilience defined the way an operator would — failures happen in a complex landscape and should go unnoticed by the user — and then what multi-zone replication on HANA Cloud means for the CAP application in front of it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"shanthakumar_krishnaswamy, published 2022-11-12"},"content:diy-jdbc-sender-adapter-for-sap-integration-suite":{"href":"/content/diy-jdbc-sender-adapter-for-sap-integration-suite","name":"DIY JDBC Sender Adapter for SAP Integration Suite","kind":"blog","short":"Simulating a JDBC sender adapter in SAP Integration Suite","line":"Simulates the JDBC Sender Adapter that SAP Integration Suite dropped from SAP PO by polling a source database with a Request/Reply step, triggered by a configurable scheduler or a manual HTTP call, and writing the result to a DataStore or JMS Queue to decouple polling from mapping and insertion. Retries run against a configured maximum, a failed batch escalates to a Dead Letter Queue once they are exhausted, and a mapping failure skips retries and escalates straight away from its own local subprocess. The author reports migrating several SAP PO scenarios onto this flow design and offers a reusable template on request.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"lanza, published 2025-10-21"},"content:don-t-let-it-crash-is-this-the-new-cap-guideline":{"href":"/content/don-t-let-it-crash-is-this-the-new-cap-guideline","name":"Don't \"let it crash\", is this the new CAP guideline?","kind":"blog","short":"Change in uncaught error handling in @sap/cds 8.2.0","line":"Dinu traces a change in error handling in CAP's Node.js runtime: @sap/cds@8.2.0 adds a cds.server.shutdown_on_uncaught_errors config flag, defaulting to true, but invoking an operation with an undefined variable no longer takes the server down, with or without the flag, where the same code crashed it on cds@6 and cds@7, and the author notes the old behaviour was already missing in cds@8.1. It still crashes with features.odata_new_adapter turned off to use the old OData parser, so it is the new OData adapter, like the REST adapter before it, that answers an uncaught error with a 500 instead of taking the process down.","chip":{"label":"Compatibility","tier":"poor","evidence":"cds 8, line ended"},"ai":true,"meta":"Dinu, published 2024-09-06"},"content:dynamic-authorisation-with-user-attributes-in-sap-cap-and-ams":{"href":"/content/dynamic-authorisation-with-user-attributes-in-sap-cap-and-ams","name":"Dynamic authorisation with user attributes in SAP CAP and AMS","kind":"blog","short":"Attribute-based authorisation in CAP with AMS instead of roles","line":"The same argument as the XSUAA-to-AMS piece, opened from a concrete failure: an acquisition puts 500 users on sales data restricted by division, and role-based access control answers it with Sales_Manager_EMEA, Sales_Manager_APAC and so on until the roles multiply past managing. Attribute-based authorisation replaces the set with one policy carrying a restriction, and the post walks through defining it in AMS against Cloud Identity Services. The clearest statement of role explosion among the three AMS pieces here.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"pedro_iranzo, published 2026-05-04"},"content:dynamic-criticality-in-cap-using-fiori-elements-and-nodejs":{"href":"/content/dynamic-criticality-in-cap-using-fiori-elements-and-nodejs","name":"Dynamic Criticality in SAP CAP Using Fiori Elements and Node.js","kind":"blog","short":"Row criticality computed in CAP Node.js for Fiori elements","line":"Colouring rows by status, which sounds like a UI question and is not: criticality is a value the service has to compute and expose, so the work is a virtual element in CDS and the annotation that points at it. Comes from a real requirement — business users wanting to spot the records that need attention.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Pranesh_SD, published 2026-06-05"},"content:dynamic-field-control-in-cap-java-object-pages":{"href":"/content/dynamic-field-control-in-cap-java-object-pages","name":"CAP JavaでObject Pageの項目の動的な入力制御を実装する","kind":"blog","short":"Two ways to control object page field editability in CAP Java","line":"Two ways to make an object page field editable or not from the value of another field in CAP Java, with the same rule implemented both ways. The first routes the decision through a separate entity holding default values, reached by Side Effects annotations; the second adds a virtual element the Java event handler fills. The piece is about the trade the two make — annotation-only versus a handler that runs — rather than about which is correct, and the running code is the repository it links.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-10-13"},"content:dynamic-odata-from-any-api-through-sap-btp-kyma":{"href":"/content/dynamic-odata-from-any-api-through-sap-btp-kyma","name":"Dynamic OData from \"any\" API through SAP BTP Kyma","kind":"blog","short":"OData facade over third-party APIs through SAP BTP Kyma","line":"Putting an OData face on a third-party API by way of Kyma, so the SAP side of a landscape can consume something that was never built for it. The word dynamic is doing work in the title — the shape is not modelled in advance.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Gunter, published 2021-09-09"},"content:e2e-sap-iot-to-sap-analytics-cloud":{"href":"/content/e2e-sap-iot-to-sap-analytics-cloud","name":"E2E: SAP Cloud Platform Internet of Things to SAP Analytics Cloud","kind":"blog","short":"IoT device data through CAP on HANA Cloud to Analytics Cloud","line":"Device data from ingestion to chart, with CAP occupying the middle: a CDS-defined persistence on HANA Cloud, and an OData service published from it for Analytics Cloud to consume live. The interesting choice is that CAP is used for the model rather than for business logic — there is barely any.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Gunter, published 2020-08-31"},"content:edge-integration-cell-design-deploy-and-manage-apis":{"href":"/content/edge-integration-cell-design-deploy-and-manage-apis","name":"Edge Integration Cell : Design, deploy and manage APIs","kind":"blog","line":"Walks through creating an API artifact in API Management on the customer-managed Edge Integration Cell runtime, including the option to generate the artifact by importing an OpenAPI specification rather than from a URL or by hand. It then attaches an Authentication policy and a Quota step capped at four calls per minute, deploys, and shows both the resulting 401 and the quota-breach error in the Monitor logs. The author frames it as the first of a series on Edge Integration Cell's policies.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-11-15"},"content:effective-axios-error-logging-for-robust-sap-integrations":{"href":"/content/effective-axios-error-logging-for-robust-sap-integrations","name":"Effective Axios Error Logging for Robust SAP Integrations","kind":"blog","short":"Unwrapping Axios HTTP errors before logging them from CAP","line":"Two logged failures printed side by side, and the point is made by looking at them: one tells you what went wrong and one does not. Axios buries the useful part of an HTTP error, and this is what to unwrap before logging it from a CAP service.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Sahil2508, published 2025-08-31"},"content:effective-from-june-30th-2026-xsuaa-deprecation-of-get-method-for-oauth-token-re":{"href":"/content/effective-from-june-30th-2026-xsuaa-deprecation-of-get-method-for-oauth-token-re","name":"Effective from June 30th 2026 - XSUAA Deprecation of GET Method for OAuth Token Retrieval","kind":"blog","short":"XSUAA deprecating GET for OAuth token retrieval from June 2026","line":"Effective June 30th 2026, the SAP Authorization and Trust Management service (XSUAA) deprecates the HTTP GET method for retrieving an OAuth access token from its /oauth/token endpoint, leaving only POST supported in line with RFC 6749. A client still requesting a token via GET with grant_type and credentials in the query string stops working after the cutover and must switch to a POST request with form-encoded body parameters.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Yogananda, published 2026-06-14"},"content:efficient-data-entry-in-sap-fiori-elements-applications":{"href":"/content/efficient-data-entry-in-sap-fiori-elements-applications","name":"How to ensure that users can efficiently enter data in SAP Fiori elements applications","kind":"blog","short":"Fast keyboard data entry in draft-enabled Fiori elements apps","line":"Guidance for draft-enabled Fiori Elements applications aimed at the user who spends their day in them: entering data quickly and by keyboard, on a slow network, without the round trips a draft-backed form can otherwise impose. Written from the design side rather than the implementation side, which is the half most CAP writing about drafts leaves out.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2022-12-05"},"content:elevating-data-privacy-in-cap-genai-applications-with-cap-llm-plugin":{"href":"/content/elevating-data-privacy-in-cap-genai-applications-with-cap-llm-plugin","name":"Elevating Data Privacy in SAP CAP based GenAI Applications with CAP LLM Plugin","kind":"blog","short":"Anonymising prompt data through HANA with CAP LLM Plugin","line":"The question underneath the enthusiasm: what leaves your landscape when a prompt goes to a model. The plugin's answer is to anonymise the sensitive fields through HANA before the prompt is sent, and this is the post that explains why that is the design rather than an option.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"AkashAmarendra, published 2024-02-02"},"content:embed-btp-attachment-reuse-ui-in-a-fiori-elements-cap-app":{"href":"/content/embed-btp-attachment-reuse-ui-in-a-fiori-elements-cap-app","name":"Unlocking Efficiency: Leveraging SAP BTP Document Management Service in Fiori Applications # 2","kind":"blog","short":"Document Management Attachment Reuse UI in Fiori elements apps","line":"Document Management's own Attachment Reuse UI dropped into a Fiori elements List Report, in two variants — OData V2, and OData V4 in a CAP application. The CAP half is one of the two scenarios rather than the subject; the rest of the series is about custom Fiori apps and a process task UI, with no CAP in them.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-12-10"},"content:empowering-your-data-analytics-with-gpt-3-and-sap-cap-integration":{"href":"/content/empowering-your-data-analytics-with-gpt-3-and-sap-cap-integration","name":"Empowering Your Data Analytics with GPT-3 and SAP CAP Integration","kind":"blog","short":"GPT-3 writing SQL that CAP runs, answers turned back into prose","line":"Free text in, SQL out, answer back in a sentence — the model writes the query, CAP runs it, and the model turns the rows into prose. Written in the GPT-3 window, so the model access has dated, but the three-step shape has not, and it is a different bet from retrieval: nothing is embedded, the schema is the context.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Former Member, published 2023-03-10"},"content:enable-app-to-app-navigation-in-bas":{"href":"/content/enable-app-to-app-navigation-in-bas","name":"Enable App-to-App Navigation in BAS","kind":"blog","short":"Testing navigation between Fiori apps in Business Application Studio","line":"Testing navigation between two Fiori applications inside Business Application Studio, which Web IDE Full-Stack made easy and BAS initially did not. Two paths: between Fiori elements applications it is a few clicks in Fiori tools with both apps in the same workspace, and for a freestyle application the same result takes a short sequence of manual steps. Written in 2021 against the Fiori tools of the time, so read the mechanism rather than the clicks.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2021-05-24"},"content:enabling-authorization-policies-in-ias-with-ams-and-cap":{"href":"/content/enabling-authorization-policies-in-ias-with-ams-and-cap","name":"Enabling Authorization Policies in SAP Cloud Identity Services - IAS with AMS/CAP","kind":"blog","short":"Authorization policies in Identity Authentication used by CAP via AMS","line":"Authorization policies defined in Identity Authentication and consumed by a CAP application through AMS — the configuration half of the move away from XSUAA scopes, from the identity service's side rather than the application's.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Yogananda, published 2024-12-27"},"content:end-to-end-currency-conversion-integration-using-sap-integration-suite-sap-cpi":{"href":"/content/end-to-end-currency-conversion-integration-using-sap-integration-suite-sap-cpi","name":"End to End Currency Conversion Integration using SAP Integration Suite (SAP CPI)","kind":"blog","short":"Currency conversion integration flow in Cloud Integration","line":"A hands-on build of a currency-conversion integration flow in Cloud Integration: an HTTPS sender adapter takes JSON input, a Request-Reply step calls an external exchange-rate API, and a Groovy script converts the amount and formats it as an HTML table before a Mail Adapter delivers the result. Most of the walkthrough is the Exception Subprocess added after hitting HTTP 500 and 429 errors in testing, which captures the error message, response code and message-processing-log ID and turns them into a readable response instead of a raw stack trace.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"shahabaz, published 2026-04-09"},"content:end-to-end-error-handling-with-general-splitter-and-local-flows":{"href":"/content/end-to-end-error-handling-with-general-splitter-and-local-flows","name":"End-to-End Error Handling with General Splitter and Local Flows","kind":"blog","short":"iFlow error handling with General Splitter and local flows","line":"A Cloud Integration iFlow splits an incoming XML payload with the General Splitter, calls an OData service in parallel for each part and gathers the results, then hands a failed call to an Exception Subprocess, where a Process Call reaches a Local Integration Process that calls a separate exception-handling iFlow over ProcessDirect. In that second flow a Content Modifier puts the interface ID and the stack trace into message headers and the tenant, flow and message ID into exchange properties, a Groovy script saves the message as a plain-text log attachment, and the Mail adapter sends the stack trace as an email; the failure itself is provoked by removing the https prefix from the OData URL. Each step is given with its own configuration, from the splitter's XPath and batch size to the ProcessDirect address format and the headers the exception handler sets.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"NaveenReddy_06, published 2025-07-02"},"content:end-to-end-mail-adapter-setup-in-sap-cpi-using-gmail-step-by-step-guide":{"href":"/content/end-to-end-mail-adapter-setup-in-sap-cpi-using-gmail-step-by-step-guide","name":"End-to-End Mail Adapter Setup in SAP CPI Using Gmail (Step-by-Step Guide)","kind":"blog","short":"Configuring Cloud Integration's Mail Receiver Adapter for Gmail","line":"Walks through configuring Cloud Integration's Mail Receiver Adapter against a personal Gmail account: enabling 2-Step Verification and an app password in Gmail, storing it as CPI security material user credentials, and testing the SMTP connection (smtp.gmail.com, port 587, STARTTLS) before wiring the adapter into an integration flow. A content modifier builds the message body, and a Postman call triggers the flow to send mail through the configured Gmail account.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"srivallivasamsetti, published 2026-03-09"},"content:enhancing-business-processes-with-sap-btp-ai-in-sap-integration-suite":{"href":"/content/enhancing-business-processes-with-sap-btp-ai-in-sap-integration-suite","name":"Enhancing Business Processes with SAP BTP AI in SAP Integration Suite","kind":"blog","short":"iFlow mapping return comments to rejection codes with an LLM","line":"Walks through a post-exit iflow in SAP Integration Suite that calls an LLM through SAP AI Core's Generative AI Hub to turn a customer's free-text return comment into one of a fixed set of SAP rejection-reason codes, so an inbound ORDERS05 IDoc carries a decision (E1EDP01-ABGRU) the ERP can act on without pausing for manual review. The worked example is a Commerce Cloud returns flow into S/4HANA; the piece argues the same bounded-classification pattern fits other narrative fields — delivery-exception remarks, expense-claim justifications — where the cost of an LLM call is repaid by removing a human review step, and points to a colleague's post on the Generative AI Hub orchestration workflow for the guardrailing (prompt templating, data masking) it only names.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"arunmaarirajha_kv, published 2025-12-15"},"content:enhancing-customer-master-with-a-custom-tab-using-sap-taxi-framework-badi-se80":{"href":"/content/enhancing-customer-master-with-a-custom-tab-using-sap-taxi-framework-badi-se80","name":"Enhancing Customer Master with a Custom Tab Using SAP TAXI Framework (BAdI + SE80)","kind":"blog","short":"Custom Customer Master tab with the TAXI framework and BAdIs","line":"Walks through adding a custom \"Repayment\" tab to the Customer Master (XD01/XD02/XD03) using SAP's TAXI framework: an append structure on table KNB1, a subscreen built in SE80, and two BAdI implementations — CUSTOMER_ADD_DATA and CUSTOMER_ADD_DATA_CS — registered through SPRO. The BAdIs are the released extension points that keep the tab upgrade-safe without modifying standard code, the developer-extension half of the capability's tiered model.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Divya_palem, published 2026-06-01"},"content:enhancing-sap-business-events-with-custom-payload-fields-using-rap":{"href":"/content/enhancing-sap-business-events-with-custom-payload-fields-using-rap","name":"Enhancing SAP Business Events with Custom Payload Fields using RAP","kind":"blog","short":"Custom payload fields on SAP business events with derived RAP events","line":"Walks through enriching an outbound Business Partner event for Event Mesh that by default carries only the partner ID: a derived RAP business event, raised from a behaviour definition with RAISE ENTITY EVENT and bound through SWE2 event linkage to a receiver function module, adds first and last name to the payload. The custom event is defined on a root view entity over BUT000 and verified in /IWXBE/EVENT_MONITOR, where the enriched JSON payload shows the extra fields reaching subscribers without an additional callback to the source system.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"BramhaniG, published 2025-10-27"},"content:enhancing-standard-bapis-when-and-how-to-do-it":{"href":"/content/enhancing-standard-bapis-when-and-how-to-do-it","name":"Enhancing Standard BAPIs: When and How to Do It","kind":"blog","short":"When to enhance a standard BAPI and five ABAP ways to do it","line":"Walks through why a standard BAPI needs enhancing — a missing field, an extra validation, logic before or after the call, or a performance tweak — and five ways ABAP offers to do it: a BAdI found in SE18/SE19, an append structure for extra fields, a classic user exit wired through SMOD/CMOD, a wrapper function module copied from the original, or an implicit enhancement when no other extension point exists. Each technique gets its own steps, and two carry a short ABAP code example.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Shantalinga, published 2025-09-29"},"content:enhancing-standard-cds-views-in-fiori-my-inbox":{"href":"/content/enhancing-standard-cds-views-in-fiori-my-inbox","name":"Enhancing Standard CDS Views in FIORI My Inbox","kind":"blog","short":"Extending a standard CDS view behind Fiori My Inbox approvals","line":"Extends the standard CDS view C_PurchaseOrderFs consumed by the Fiori My Inbox purchase-order approval screen, adding requester, buyer-note, supplier-note and approver fields as virtual elements resolved by an ABAP class implementing IF_SADL_EXIT_CALC_ELEMENT_READ, then reloading the OData metadata through transaction /IWFND/MAINT_SERVICE. The result is a My Inbox task screen carrying approval context that was not visible on the standard screen before.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"gsureshkumar, published 2026-03-02"},"content:enhancing-unit-testing-in-cap-java-with-github-copilot":{"href":"/content/enhancing-unit-testing-in-cap-java-with-github-copilot","name":"Enhancing Unit Testing in SAP CAP Java Applications with GitHub Copilot","kind":"blog","short":"How much of CAP Java unit testing GitHub Copilot writes","line":"Built on SAP's own CAP Java unit-testing guide, and the question is narrow: how much of that does an assistant actually write for you. The author's own getting-started post is the one to read first.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Anjali_Pathak, published 2025-09-04"},"content:evaluating-saps-new-mcp-servers-ui5-cap-fiori-tools":{"href":"/content/evaluating-saps-new-mcp-servers-ui5-cap-fiori-tools","name":"Evaluating SAP’s new MCP servers: UI5, CAP, and Fiori tools in practice","kind":"blog","short":"Trying SAP's UI5, CAP and Fiori tools MCP servers in practice","line":"Someone trying SAP's three new MCP servers rather than repeating the announcement. It sets the official positioning first — MCP as the bridge from coding assistants to SAP tooling across Cursor, Windsurf, Copilot, Cline and Claude Code, with best-practice scaffolds and BTP-aligned guardrails — and then reports what using them is actually like. The rare kind of post that tests a vendor claim.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-09-04"},"content:event-driven-architecture-with-event-mesh-part-1":{"href":"/content/event-driven-architecture-with-event-mesh-part-1","name":"Event Driven Architecture with Event Mesh - Part-1","kind":"blog","short":"Publishing CAP events to an Event Mesh queue, part 1","line":"Continues the author's own CDS entity-relationship example rather than starting a fresh one, which is the point of it — the same model gains events. Concepts first, then a message client and queue on BTP, then a Postman check that the queue works before any CAP code is written, and finally the emit from a CAP REST service.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Avinash_Vaidya, published 2022-12-04"},"content:event-driven-architecture-with-event-mesh-part-2":{"href":"/content/event-driven-architecture-with-event-mesh-part-2","name":"Event Driven Architecture with Event Mesh – Part-2","kind":"blog","short":"Event Mesh queue webhook to Integration Suite, run end to end","line":"Part 1 published a message and stopped there; this closes the loop by giving it somewhere to go. A REST API built in Integration Suite is registered as a webhook on the Event Mesh queue, and the chain is run end to end — CAP to Event Mesh to Integration Suite to Twilio — so the consumer side and the webhook configuration are what this adds.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Avinash_Vaidya, published 2023-01-30"},"content:event-driven-cap-on-kyma-with-agentic-ai-and-ui-auto-refresh":{"href":"/content/event-driven-cap-on-kyma-with-agentic-ai-and-ui-auto-refresh","name":"Event Driven SAP CAP on Kyma with Agentic AI and UI Auto Refresh","kind":"blog","short":"Prototype of event-driven CAP on Kyma with an agent and UI refresh","line":"A prototype, described as one: a plain CAP application made to react to external events on Kyma, with an agent in the loop and the UI refreshing itself rather than being reloaded. Short — it reports what was built and why, not how to rebuild it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Shahid, published 2025-12-01"},"content:event-driven-extensions-for-sap-successfactors-on-sap-btp-connecting-the-dots":{"href":"/content/event-driven-extensions-for-sap-successfactors-on-sap-btp-connecting-the-dots","name":"Event-driven Extensions for SAP SuccessFactors on SAP BTP – Connecting the Dots","kind":"blog","short":"Event-driven extension for SAP SuccessFactors on SAP BTP","line":"Walks through an event-driven extension for SAP SuccessFactors: Automated Configurations registers the SuccessFactors system against an SAP BTP account with an integration token, and a SuccessFactors custom integration then pushes events, such as an employee joining or leaving, to a topic in Event Mesh that a CAP application subscribes to. The SuccessFactors APIs themselves are downloaded as EDMX files from SAP API Business Hub and imported into the CAP project, the same EDMX-import path behind service integration, so CAP generates the client used to call them. A reference application, RunSmooth, ties Automated Configurations, Event Mesh and CAP together end to end.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Former Member, published 2020-08-12"},"content:event-driven-multi-tenant-architecture-with-cap-and-sap-event-mesh":{"href":"/content/event-driven-multi-tenant-architecture-with-cap-and-sap-event-mesh","name":"Event-Driven Multi-Tenant Architecture on SAP BTP with CAP and SAP Event Mesh","kind":"blog","short":"Tenant isolation for event-driven multi-tenant CAP with Event Mesh","line":"The two topics that are usually written about separately, taken together — because a shared broker is where tenant isolation stops being automatic. It starts from why microservices are decoupled at all, places Event Mesh among the four broker services BTP offers, and then works through what changes when the publisher and the consumer are multitenant.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ale_biagi, published 2024-12-19"},"content:event-enabling-sap-data-replication-framework-with-advanced-event-mesh-aifaem":{"href":"/content/event-enabling-sap-data-replication-framework-with-advanced-event-mesh-aifaem","name":"Event enabling SAP Data Replication Framework with Advanced Event Mesh & AIFAEM","kind":"blog","short":"Data Replication Framework to Advanced Event Mesh via AIFAEM","line":"Walks through connecting SAP's ABAP-side Data Replication Framework to Advanced Event Mesh by way of the AIFAEM add-on, bypassing SAP Cloud Integration: a custom ABAP class maps business-partner replication data into AIF, which publishes it to AEM in CloudEvents format. The author's own disclaimer favours the standard pattern instead — a Standard DRF Replication through an Integration Suite iFlow with the AEM adapter — and presents this direct, custom-ABAP route only as a documented alternative.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"AlexPfeil, published 2025-08-21"},"content:event-mesh-amqp-the-retry-trap-nobody-warns-you-about":{"href":"/content/event-mesh-amqp-the-retry-trap-nobody-warns-you-about","name":"Event Mesh + AMQP: The Retry Trap Nobody Warns You About","kind":"blog","short":"Retry patterns for Event Mesh AMQP sender adapter failures","line":"Works through two patterns for retrying failed messages from Event Mesh's AMQP sender adapter on Cloud Integration, whose native retry has no configurable delay or backoff: bridging into a JMS queue for full exponential-backoff control, or looping messages through a dedicated retry queue with a TTL and a Dead Message Queue. Compares both against a Groovy sleep() workaround that blocks the adapter's connection and the runtime's worker thread, and shows that Advanced Event Mesh's own adapter ships configurable retry interval, backoff and broker-side redelivery without either workaround.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"MateuszPiotrowski, published 2026-03-09"},"content:event-task-scheduling-in-cap-nodejs-alpha":{"href":"/content/event-task-scheduling-in-cap-nodejs-alpha","name":"Quick tip: event/task scheduling in CAP Node.js (in alpha state)","kind":"blog","short":"Note on alpha event and task scheduling in CAP Node.js","line":"A note on something spotted in capire's May 2025 release notes rather than a technique: CAP Node.js is to support scheduling events — actions and functions included — with callbacks, currently alpha and explicitly subject to change. Useful as a dated marker of the core moving into ground the community has been covering, and the alpha caveat is the point rather than a footnote.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-10-30"},"content:execute-oauth2-client-credentials-protected-rest-request-from-cap":{"href":"/content/execute-oauth2-client-credentials-protected-rest-request-from-cap","name":"Execute [OAuth2 client credentials] protected REST request with SAP CAP Application","kind":"blog","short":"Calling an OAuth2 client credentials protected API from CAP","line":"A recipe, and the author calls it that — package.json, a .cds and a handler — for calling a remote service protected by OAuth2 client credentials from a CAP application. Short, complete, and addressed to CAP developers rather than to BTP administrators.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Lachmish, published 2022-04-27"},"content:explaining-sap-joule-for-hr-business-users-functional-consultants":{"href":"/content/explaining-sap-joule-for-hr-business-users-functional-consultants","name":"Explaining SAP Joule for HR Business Users & Functional Consultants.","kind":"blog","short":"How SAP Joule is provisioned on SAP BTP for SuccessFactors","line":"Written for HR business users and functional consultants, this walks through how SAP Joule is provisioned on SAP BTP and wired into SuccessFactors: the Joule instance sits in a BTP subaccount, SAP Build Work Zone is created alongside it, and Identity provisioning syncs users from SuccessFactors into Build Work Zone while Cloud Identity Services authenticates the launch through an IAS tenant. It lists five prerequisites for the connection — a BTP global account, a Joule entitlement, Cloud Identity Service and SuccessFactors admin access, and the right personas — and notes that running BTP's booster adds the Joule permission to the SuccessFactors user's profile.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"santanuray_learner, published 2025-03-23"},"content:exploring-sap-salesforce-adapter-retry-mechanism-with-jms-queue":{"href":"/content/exploring-sap-salesforce-adapter-retry-mechanism-with-jms-queue","name":"Exploring SAP Salesforce Adapter - retry mechanism with JMS queue","kind":"blog","short":"Retry design for Salesforce adapter failures with a JMS queue","line":"Builds a retry design for Salesforce update failures in Cloud Integration on SAP Integration Suite: a Parent iFlow triggered by a Salesforce push topic calls a Child iFlow, whose Exception Subprocess routes specific Salesforce errors to a separate JMS Retry PD iFlow over a ProcessDirect target address. The retry iFlow stores the failed payload in a JMS queue (Enterprise Edition), retries up to five times with exponential backoff, moves exhausted messages to the dead-letter queue, and mails the Application Maintenance team; the author notes the queue's 10 GB size limit and that polling may pause under load.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Shailaja, published 2025-09-05"},"content:exploring-the-typescript-ecosystem-with-cds-typer-part-1":{"href":"/content/exploring-the-typescript-ecosystem-with-cds-typer-part-1","name":"Exploring the TypeScript Ecosystem with @cap-js/cds-typer, cds-ts, and node-ts","kind":"blog","short":"Setting up a TypeScript CAP project with cds-typer, part 1","line":"Part one of two: a bookshop project built in TypeScript from cds init, with cds-typer added as a development dependency and the surrounding tools — cds-ts and node-ts — put in place so the project runs locally. A setup walkthrough rather than an argument about typing, and it stops at the point where the application works on a laptop; deployment is part two.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"satya-dev, published 2024-07-08"},"content:exploring-the-typescript-ecosystem-with-cds-typer-part-2":{"href":"/content/exploring-the-typescript-ecosystem-with-cds-typer-part-2","name":"Exploring the TypeScript Ecosystem with @cap-js/cds-typer, cds-ts, and node-ts Part - 2","kind":"blog","short":"Deploying the TypeScript CAP project to Cloud Foundry, part 2","line":"Part two takes the TypeScript project from part one to Cloud Foundry: cds add mta, then the parts of the generated descriptor the author singles out as needing attention for a TypeScript build rather than a JavaScript one. The pair together is the whole path — typed model locally, then deployed — which is where a typing walkthrough usually stops short.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"satya-dev, published 2024-07-19"},"content:expose-rfcs-as-mcp-tools-in-integration-suite":{"href":"/content/expose-rfcs-as-mcp-tools-in-integration-suite","name":"Expose RFCs as MCP Tools in Integration Suite","kind":"blog","line":"Walks through creating an MCP server in SAP Integration Suite from an RFC source: an on-premise RFC destination labelled for Integration Cell inclusion, a search over the backend's function modules (minimum seven characters), and up to 50 selected modules each becoming a tool. Covers the resulting server's configuration (Source, Tools and Prompts, with no Resources section for this source) and the two scopes an RFC-based server's policy adds beyond an API-sourced one, API.invoke and ESBMessaging.send, plus the RFC receiver adapter used at runtime. Demonstrates the flow with a purchase-order scenario where an AI client calls BAPI_PO_CREATE1 and BAPI_PO_GETDETAIL1 as MCP tools.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ronit199666, published 2026-09-24"},"content:expose-s-4hana-cloud-odata-api-as-an-mcp-server-via-cap-node-js-2":{"href":"/content/expose-s-4hana-cloud-odata-api-as-an-mcp-server-via-cap-node-js-2","name":"Expose S/4HANA Cloud OData API as an MCP Server via CAP Node.js","kind":"blog","short":"Proxying an S/4HANA Cloud OData API in CAP and serving it over MCP","line":"A CAP Node.js service imports the S/4HANA Cloud Outbound Delivery OData v2 API's EDMX metadata with cds import, proxies its reads and a custom createDelivery action against it, and annotates the service @protocol: ['odata-v4', 'mcp'] with @cap-js/mcp's per_action_tool setting on, so the custom action gets its own MCP tool rather than one generic call_action. It tests the result with raw JSON-RPC tools/list and tools/call requests before deploying to SAP BTP, Cloud Foundry Runtime.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Jacky Liu, published 2026-07-29"},"content:expose-s-4hana-cloud-odata-api-as-an-mcp-server-via-cap-node-js":{"href":"/content/expose-s-4hana-cloud-odata-api-as-an-mcp-server-via-cap-node-js","name":"Expose S/4HANA Cloud OData API as an MCP Server via CAP Node.js","kind":"blog","short":"Wrapping an S/4HANA Cloud OData API as MCP tools with @cap-js/mcp","line":"A step-by-step walkthrough that wraps SAP S/4HANA Cloud's Outbound Delivery OData v2 API in a CAP Node.js service and exposes it through @cap-js/mcp, so an MCP client can list the generated tools, query the delivery entities and call a custom createDelivery action over JSON-RPC. The remote S/4HANA connection is configured two ways in package.json: direct Basic Authentication credentials for local hybrid testing, and a named BTP destination for the app once deployed to Cloud Foundry.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Jacky_Liu1, published 2026-07-29"},"content:exposing-calculation-view-with-dynamic-client-via-odata-api":{"href":"/content/exposing-calculation-view-with-dynamic-client-via-odata-api","name":"Exposing Calculation View with Dynamic Client via OData API","kind":"blog","short":"Exposing a HANA Cloud calculation view through an OData API","line":"Getting a HANA Cloud calculation view — built in Business Application Studio and deployed to an HDI container, which is the recommended way to build native HANA artifacts — out through an OData API. The gap it fills is the one between HANA-native development and a service a client can call, which CAP does not cover for artifacts it did not generate.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-10-04"},"content:exposing-sap-s4-onprem-data-to-external-system-odata-service-btp-destination-con":{"href":"/content/exposing-sap-s4-onprem-data-to-external-system-odata-service-btp-destination-con","name":"Exposing SAP S4 Onprem data to external System || Odata Service || BTP || Destination-Connectivity","kind":"blog","short":"On-premise RAP OData service called from Cloud Foundry via destination","line":"A walkthrough that wraps an IDOC-reprocessing function module in a RAP OData service on S/4HANA on-premise, then reaches it from a Python app on Cloud Foundry by looking the on-premise system up through the Destinations service and calling it through SAP Connectivity service proxies behind Cloud Connector. It walks through the destination and connectivity service keys, resolving the destination's URL and credentials, and the connectivity-service token and proxy call needed to reach the on-premise OData endpoint, noting the app must run on Cloud Foundry since destination and connectivity lookups do not work from a local machine.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Ace_D, published 2025-07-24"},"content:extend-cap-validations-with-the-capval-plugin":{"href":"/content/extend-cap-validations-with-the-capval-plugin","name":"Extend SAP Cloud Application Programming Model(CAP) Validations with the CAPVAL Plugin","kind":"blog","short":"Plugin adding custom messages and reusable rules to CAP validation","line":"The complaint first: the built-in annotations are good for data integrity and poor at telling the user what went wrong, and there is no way to reuse a rule. capval, the plugin the post announces, adds @validation.message alongside the standard annotations rather than replacing them, and @validation.handler for a check written as a class. Published in January 2024, before the 1.2.0 line the README now pairs with @sap/cds 8.0.0 and above; the two annotations it shows are the two the README still documents.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-01-09"},"content:extend-sap-successfactors-on-sap-btp-with-cap-create-the-cap-service":{"href":"/content/extend-sap-successfactors-on-sap-btp-with-cap-create-the-cap-service","name":"Extend SAP SuccessFactors on SAP BTP with CAP - Create the CAP Service","kind":"blog","short":"Writing the CAP service for a SuccessFactors extension on SAP BTP","line":"Walks through writing a service definition in SAP Business Application Studio that projects entities from an existing CDS model: one entity gets @odata.draft.enabled because Fiori Elements only shows CRUD actions on a draft-enabled entity, and a read-only projection of an already-imported SuccessFactors OData entity fails with the generic handlers because the call is delegated to the remote service, so a custom handler is needed. Running cds watch then serves the entities, drafts and $metadata at the declared service path.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2022-03-23"},"content:extend-sap-successfactors-on-sap-btp-with-cap-import-sap-successfactors-odata-se":{"href":"/content/extend-sap-successfactors-on-sap-btp-with-cap-import-sap-successfactors-odata-se","name":"Extend SAP SuccessFactors on SAP BTP with CAP - Import SAP SuccessFactors OData Services definitions","kind":"blog","short":"Importing SuccessFactors OData services into a CAP project","line":"Walks through importing the ECEmployeeProfile and PLTUserManagement OData services from SAP API Business Hub into a CAP project: downloading their EDMX files, running cds import in SAP Business Application Studio to generate the CSN under srv/external, and pointing the resulting cds.requires entries at a destination. The second half creates a destination and an XSUAA service instance on BTP and binds their service keys into a default-env.json file so the project can reach SAP SuccessFactors during local development.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2022-03-21"},"content:extend-successfactors-on-btp-with-cap-deploy-to-hana-cloud":{"href":"/content/extend-successfactors-on-btp-with-cap-deploy-to-hana-cloud","name":"Extend SAP SuccessFactors on SAP BTP with CAP - Deploy to SAP HANA Cloud","kind":"blog","short":"Deploying a SuccessFactors CAP extension to SAP HANA Cloud","line":"The deployment instalment of the author's SuccessFactors extension series — the project already exists and the imported service is already modelled, so this is only the move onto HANA Cloud. Depends on the two posts before it and says so.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ale_biagi, published 2022-03-29"},"content:extend-successfactors-on-btp-with-cap-develop-the-fiori-elements-application":{"href":"/content/extend-successfactors-on-btp-with-cap-develop-the-fiori-elements-application","name":"Extend SAP SuccessFactors on SAP BTP with CAP - Develop the SAP Fiori Elements Application","kind":"blog","short":"Fiori elements app over an imported SuccessFactors service","line":"The UI instalment of the SuccessFactors extension series — the imported service is already modelled and this is the application over it. Names the three posts it depends on.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ale_biagi, published 2022-03-30"},"content:extend-upload-set-to-fiori-elements-and-utilize-dms":{"href":"/content/extend-upload-set-to-fiori-elements-and-utilize-dms","name":"Extend Upload Set to Fiori Elements and utilize Document Management Service","kind":"blog","short":"Hand-built Upload Set with Document Management Service","line":"Written two months before there was an official plugin, and the author has left the record of that in the page: an update dated 2024-04-04 noting the CAP team released @cap-js/attachments, and another dated 2024-05-21 saying they tested it and wrote up the Object Store variant separately. The hand-built version underneath is still the answer when the plugin's storage choices do not fit.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-02-25"},"content:extend-upload-set-with-table-to-fiori-elements-and-utilize-object-store":{"href":"/content/extend-upload-set-with-table-to-fiori-elements-and-utilize-object-store","name":"Extend Upload Set with Table to Fiori Elements and utilize Object Store","kind":"blog","short":"Upload Set with Table on Object Store, after @cap-js/attachments","line":"The Object Store variant of the author's earlier Document Management post, written after testing @cap-js/attachments — a sample managing text and file information together, and offered as something for people new to BTP rather than as a pattern.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-05-21"},"content:extending-fiori-elements-with-the-flexible-programming-model":{"href":"/content/extending-fiori-elements-with-the-flexible-programming-model","name":"SAP BTP Developer's Guide: Extending Fiori Elements with the Flexible Programming Model","kind":"blog","short":"Extension points and building blocks of the Flexible Programming Model","line":"Extension points, building blocks and controller extensions in the Flexible Programming Model, aimed at developers who know the annotations but stop where the floorplan does. The premise is that the capability has been available for a while and is still being discovered, which is a fair description of where most Fiori Elements work runs out of documented ground.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-10-15"},"content:extending-sap-sales-and-service-cloud-v2-using-cap":{"href":"/content/extending-sap-sales-and-service-cloud-v2-using-cap","name":"Extending SAP Sales and Service Cloud V2 Using CAP","kind":"blog","short":"CAP extension of Sales and Service Cloud V2 outside BTP","line":"An extension target that does not run on BTP at all — Sales and Service Cloud V2 sits directly on hyperscalers — so the separation between core and extension is enforced rather than encouraged. That constraint is what makes the post worth reading.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Quablab, published 2025-07-09"},"content:extending-standard-s-4-hana-odata-api-s":{"href":"/content/extending-standard-s-4-hana-odata-api-s","name":"Extending Standard S/4 HANA OData API's","kind":"blog","short":"Adding a custom field to a standard S/4HANA OData API","line":"Walks through extending a standard S/4HANA OData API with a custom field, preferring OData V4 over V2 for its closer OASIS compliance and simpler service enablement, then tracing the extensibility objects documented for the entity before touching any code. The custom field reaches the API by layering three CDS view extensions — extendView on I_Product, extendViewEntity on R_ProductTP and on A_Product_3 — following the projection chain down to where the base table is first selected, built in ABAP Development Tools for Eclipse.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"JuanDK78, published 2026-04-08"},"content:extensions-for-sap-build-process-automation-actions-from-cap-nodejs":{"href":"/content/extensions-for-sap-build-process-automation-actions-from-cap-nodejs","name":"Extensions for SAP Build Process Automation - Actions from CAP Node.js Service","kind":"blog","short":"CAP Node.js service as an Action in SAP Build Process Automation","line":"The direction of travel reversed: the CAP service is the thing being called, exposed as an Action so that a no-code process can consume it. Short by design — it is an introduction to a developer tutorial, and it says outright that the goal is to cover every step rather than to model a real use case.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"TJe, published 2023-01-13"},"content:extract-rev-trac-requests-by-custom-program-and-rev-trac-api":{"href":"/content/extract-rev-trac-requests-by-custom-program-and-rev-trac-api","name":"Extract Rev-Trac requests by custom program and Rev-Trac API","kind":"blog","short":"ABAP report searching Rev-Trac long texts through its RFC modules","line":"A custom ABAP report that does a full-text search across custom long-text fields of Rev-Trac change requests — a search the change-management tool has no built-in feature for — by calling Rev-Trac's own RFC-enabled function modules from a separate connected ABAP system. It walks through the mechanics of RFC connectivity on the ABAP side: looking up the RFC destination at runtime from a system table via a remote-enabled function module, then calling further remote function modules with CALL FUNCTION ... DESTINATION, including the read/update APIs' parameter-naming convention and their commit-on-connection-end behaviour.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-12-30"},"content:federating-replicating-and-caching-remote-data-in-cap-part-1":{"href":"/content/federating-replicating-and-caching-remote-data-in-cap-part-1","name":"The Full Picture: Federating, Replicating, and Caching Remote Data in CAP — Part 1","kind":"blog","short":"Concepts of federating, replicating and caching remote data in CAP","line":"Part one of two, and the concepts half: terminology, what CAP already does, and what a project still has to write. It fixes a vocabulary — federation is the umbrella for making remote data part of your model, delegation forwards each request to the remote at query time, replication is a scheduled copy into the local database, and caching is an option on either rather than a third strategy — which collides with CAP's own, since what this series calls replication is what the CAP-level Data Federation guide calls federation. From the ground the Service Integration guide covers, it lists what is left to hand-write: cross-service $expand, navigation filters across the boundary, write forwarding, timeouts and retries, then scheduling, delta detection, backoff, a guard for two app instances sharing one schedule, idempotent writes, and knowing whether the last run succeeded. That list is why the edge to cds-data-federation holds: the second half maps it onto @federation.delegate and @federation.replicate and says which package carries which part — annotations in cds-data-federation, the scheduled engine in cds-data-pipeline, response caching through cds-caching — so it is the design rationale for the annotations, not the API reference. The gap list and the plugins answering it come from the same person who maintains them; cap-replication-demo and SAP's xtravels sample are cited as the hand-written form of the same work. Part 2 is announced as a walkthrough of a demo application and is not covered here.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:federating-replicating-and-caching-remote-data-in-cap-part-2":{"href":"/content/federating-replicating-and-caching-remote-data-in-cap-part-2","name":"Federating, Replicating, and Caching Remote Data in CAP — Part 2","kind":"blog","short":"Sample app that federates, replicates and caches remote data in CAP","line":"The practical half of the pair. Where Part 1 sets out the terminology, what CAP does out of the box and where the gaps are, this one builds a small application that federates, replicates and caches remote data, one step at a time, with the finished project published as sales-cockpit so a reader can either follow along or start from the end. It began as a twenty-minute reCAP talk, which the author says was only room for the intro.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-07-17"},"content:finally-an-mcp-server-for-abap":{"href":"/content/finally-an-mcp-server-for-abap","name":"Finally: An MCP Server for ABAP","kind":"blog","short":"ABAP variant of mcp-sap-docs for Copilot in ADT for Eclipse","line":"Announces the ABAP variant of mcp-sap-docs, published at mcp-abap.marianzeis.de for GitHub Copilot's Agent Mode in ADT for Eclipse, which the post names as the trigger, with ABAP knowledge still a recurring problem in the models. Documentation irrelevant to ABAP was removed from the SAP docs server and the ABAP Keyword Documentation, the DSAG ABAP Development Guidelines and the ABAP Style Guide were added, with search reaching past the local index to SAP Community posts and SAP Help. Copilot in Eclipse is where the post puts the weight, because SAP Joule for Developers, ABAP AI capabilities in Eclipse is not available for S/4HANA on-premise systems; an update of 2026-02-05 adds Software Heroes as an online source and an abap_feature_matrix tool that checks feature availability across releases and ABAP Cloud, and the server runs hosted or locally with Node or Docker.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-02-04"},"content:fiori-elements-analytical-table-with-cap-does-it-work-with-v2-and-v4":{"href":"/content/fiori-elements-analytical-table-with-cap-does-it-work-with-v2-and-v4","name":"Fiori Elements Analytical Table with CAP: Does it work with V2 and V4?","kind":"blog","short":"Analytical table in a List Report with CAP over OData V2 and V4","line":"A question in the title and an answer in the post, with the boundary drawn carefully: this is an analytical table inside a List Report, not the Analytical List Page, and the two protocol versions do not behave the same.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-04-03"},"content:fiori-elements-standard-app-extension-using-virtual-elements":{"href":"/content/fiori-elements-standard-app-extension-using-virtual-elements","name":"Fiori Elements Standard App Extension using virtual Elements: Manage Billing Document ( Real Time Extension Scenario)","kind":"blog","short":"Extending Manage Billing Documents with virtual elements","line":"Extending a delivered standard application — Manage Billing Documents — rather than building a new one, using virtual elements to add what the standard model does not carry. A different problem from most of this capability, and a common one.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"mohit_bansal3, published 2021-08-24"},"content:first-java-cap-application":{"href":"/content/first-java-cap-application","name":"First Java Cap Application","kind":"blog","short":"First CAP Java project from the Maven archetype to a domain model","line":"A step-by-step walkthrough of a first CAP Java project: com.sap.cds:cds-services-archetype scaffolds the initial Maven project, and the domain model is then rewritten in the db folder with entities, the cuid and managed aspects, associations, compositions and a CodeList, so a hand-coded event handler serving a single entity gives way to a service that CAP's generic persistence handling serves without custom code. It deploys that model to SQLite for local development — cds deploy --to sqlite, then a Spring profile pointing at the generated database file — and ends by adding an index.cds so the model and service can be published as a reusable npm module.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"bruce_wang3, published 2020-12-08"},"content:first-release-of-the-sap-fiori-mcp-server":{"href":"/content/first-release-of-the-sap-fiori-mcp-server","name":"SAP Fiori Tools Update – First Release of the SAP Fiori MCP Server for Agentic AI","kind":"blog","short":"Release announcement of the SAP Fiori MCP server","line":"The release announcement for the Fiori MCP server, placed as the step after the Project Accelerator: an assistant can create and edit Fiori applications directly rather than describing what a developer should do. The vendor's own framing, so read it beside the independent evaluation of the same servers rather than instead of it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-09-03"},"content:fixing-the-npm-notarget-error-for-sap-hdi-deploy":{"href":"/content/fixing-the-npm-notarget-error-for-sap-hdi-deploy","name":"How to fix npm error notarget @sap/hdi-deploy when you create a CAP app in BAS","kind":"blog","short":"Fixing npm notarget for @sap/hdi-deploy in a CAP template","line":"A specific npm failure when creating a CAP app from a template, and the post now opens with its own July 2025 update saying the version has been published so this instance is gone. It stays useful because the cause — a dependency pointing at a version nobody published yet — recurs, and the unblocking steps are general.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Ryota_Ito, published 2025-07-28"},"content:from-application-logging-to-cloud-logging-service-innovation-guide":{"href":"/content/from-application-logging-to-cloud-logging-service-innovation-guide","name":"From Application Logging to Cloud Logging: Service Innovation Guide","kind":"blog","short":"What changes moving from Application Logging to SAP Cloud Logging","line":"SAP Cloud Logging replaces SAP Application Logging service, moving each customer from a shared multitenant stack to a dedicated, fully isolated one, and this guide sets out what changes with the move: a deployment per compliance region instead of per Cloud Foundry landscape, SAML/IDP-based authentication instead of Cloud Foundry-bound auth, retention that is configurable instead of fixed at seven days, and hourly capacity-unit pricing instead of fixed-size monthly plans. It also states the deprecation timeline for logging on BTP: SAP Application Logging closes to new or renewed CPEA contracts after 2025-07-31, while contracts signed before that date keep their entitlement until their next renewal.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Hariharan-Gandhi, published 2024-11-22"},"content:from-application-logging-to-cloud-logging-service-migration-guide":{"href":"/content/from-application-logging-to-cloud-logging-service-migration-guide","name":"From Application Logging to Cloud Logging: Service Migration Guide","kind":"blog","short":"Six steps from Application Logging to SAP Cloud Logging","line":"A six-step guide to moving off SAP Application Logging service for SAP BTP onto SAP Cloud Logging: plan the instance layout, set up an Identity Authentication Service tenant for single sign-on to the new service, bind applications to both services in parallel so log data flows to each for comparison, then deprovision the old service once Cloud Logging holds the retained history. It covers what the logging libraries need so custom fields reach both services during the overlap: the CF Node.js library detects both bindings itself from v6.5.0, while the CF Java library has to be configured to retain each custom field at top level. It also gives the deprecation date SAP published for Application Logging under CPEA contracts, 31 July 2025.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Hariharan-Gandhi, published 2024-11-22"},"content:from-dashboard-to-conversational-ai-in-minutes-adding-mcp-to-an-existing-cap-app":{"href":"/content/from-dashboard-to-conversational-ai-in-minutes-adding-mcp-to-an-existing-cap-app","name":"From Dashboard to Conversational AI in Minutes: Adding MCP to an Existing CAP Application","kind":"blog","short":"Adding @cap-js/mcp beside OData in an existing CAP service","line":"A walkthrough of adding @cap-js/mcp to an existing CAP service behind the SuccessFactors Localization Dashboard: two annotations (@odata, @mcp) expose the service over MCP beside its existing OData endpoint, and doc comments added to the 18 entities and their fields are surfaced through the describe tool so a querying model gets business context instead of bare field names. During local development cds watch auto-registers the endpoint in ~/.claude.json, and the author connects the same endpoint to Joule Work Desktop as an MCP connector so users can ask coverage questions in natural language.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"i533678, published 2026-08-24"},"content:from-r3-abap-to-cap-and-fiori-elements-deployment":{"href":"/content/from-r3-abap-to-cap-and-fiori-elements-deployment","name":"From R/3 ABAP to CAP/Fiori Elements on SAP BTP- Deployment","kind":"blog","short":"Deploying a CAP and Fiori elements app rebuilt from R/3 ABAP","line":"The doing half: the steps and the code that got the application from the first post deployed and working. Shorter, and it assumes the argument has already been made.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"former_member231477, published 2021-04-30"},"content:from-r3-abap-to-cap-and-fiori-elements-on-sap-cloud":{"href":"/content/from-r3-abap-to-cap-and-fiori-elements-on-sap-cloud","name":"From R/3 ABAP to CAP/Fiori Elements on SAP Cloud","kind":"blog","short":"ABAP developer's reasoning for moving to CAP and Fiori elements","line":"Written by an ABAP developer of fourteen years explaining what changed and what did not — the argument being that CAP kept the focus on business logic that ABAP had, where learning UI5 and a framework or two had not. The reasoning half of a pair.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"former_member231477, published 2021-03-24"},"content:from-rest-to-datasphere-a-cap-based-integration-approach":{"href":"/content/from-rest-to-datasphere-a-cap-based-integration-approach","name":"From REST to Datasphere: A CAP-based Integration Approach","kind":"blog","short":"Writing REST data into Datasphere through a CAP service","line":"The reverse direction and a second attempt: the authors had already written data into Datasphere with a small FastAPI service on the OPEN SQL schema, and this is what changed when they rebuilt it on CAP.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"christian_willi, published 2025-09-30"},"content:from-sap-integration-suite-iflow-to-mcp-tools-exposing-odata-apis-to-ai-agents":{"href":"/content/from-sap-integration-suite-iflow-to-mcp-tools-exposing-odata-apis-to-ai-agents","name":"From SAP Integration Suite iFlow to MCP Tools: Exposing OData APIs to AI Agents","kind":"blog","short":"MCP Server artifact in Integration Suite over an OData iFlow","line":"Builds an MCP Server artifact inside SAP Integration Suite's Integration Cell runtime that fronts a Northwind OData V4 API through a Cloud Integration iFlow, turning each OpenAPI operation into a tool an agent can call. Walks through the OAuth2 client-credentials flow against XSUAA and the authorization policy scope — ESBMessaging.send in place of the default API.invoke — that gates access to the MCP server, then tests the server from Claude Code.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-07-14"},"content:from-sap-sales-and-service-cloud-v2-apis-to-ai-building-an-mcp-server-with-cap-n":{"href":"/content/from-sap-sales-and-service-cloud-v2-apis-to-ai-building-an-mcp-server-with-cap-n","name":"From SAP Sales and Service Cloud V2 APIs to AI: Building an MCP Server with CAP Node.js","kind":"blog","line":"A step-by-step CAP Node.js walkthrough that wraps the SAP Sales Cloud V2 Case API as a remote service, then exposes the resulting service over both OData V4 and MCP through a single @protocol: ['odata-v4', 'mcp'] annotation together with @cap-js/mcp's per_action_tool setting. Each CDS action — listCases, getCaseById, createCase, patchCase — becomes its own MCP tool served at /mcp/caseservices, discoverable through tools/list and invoked from a natural-language request.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"pvsbprasad, published 2026-08-31"},"content:from-segw-and-legacy-ui5-to-rap-with-arc-1":{"href":"/content/from-segw-and-legacy-ui5-to-rap-with-arc-1","name":"From SEGW and Legacy UI5 to RAP with ARC-1","kind":"blog","short":"ARC-1 skills migrating a SEGW service and old UI5 app to RAP","line":"Three ARC-1 skills, run in Cursor with Composer-2 against a deliberately rough demo on an S/4HANA 2023 trial system, turn the SEGW service ZDEMO_MIG_PROJECTS_SRV into a managed, draft-enabled RAP business object published as OData V4, replace its ApproveProject function import and its direct UPDATE ... COMMIT WORK with the action approve_project written in EML in local mode, and rebuild the freestyle UI5 JavaScript app once in UI5 TypeScript and once as a Fiori elements list report and object page driven by metadata extensions. What the published transcripts add is how the agent got there: it found the generated MPC class names and the custom logic in DPC_EXT only by reading the system, the skills made it print the extracted model and stop for confirmation before writing, and @ui5/mcp-server, mcp-sap-docs and @sap-ux/fiori-mcp-server each had their own job beside it. The demo is small on purpose, and the post says a productive SEGW service that calls BAPIs, carries custom authorisation logic or supports deep inserts is not solved with one prompt.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-05-11"},"content:from-segw-to-odata-publish-expose-your-cds-view-as-odata-in-s-4hana":{"href":"/content/from-segw-to-odata-publish-expose-your-cds-view-as-odata-in-s-4hana","name":"From SEGW to @OData.publish: Expose Your CDS View as OData in S/4HANA","kind":"blog","short":"Exposing an ABAP CDS view as OData with @OData.publish","line":"Walks through exposing an ABAP CDS view as an OData service in an on-premise S/4HANA system by adding the @OData.publish: true annotation, then registering and activating the generated service in SAP Gateway (transaction /IWFND/MAINT_SERVICE) before testing it with $filter, $top and $count. It sets this against the manual route through transaction SEGW, since the annotation generates the service, its navigation properties and its OData properties straight from the CDS view without a Service Builder project.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"rupalipunekar1234, published 2026-07-09"},"content:from-seo-to-meo-designing-joule-ready-api-layers-for-sap-commerce-cloud":{"href":"/content/from-seo-to-meo-designing-joule-ready-api-layers-for-sap-commerce-cloud","name":"From SEO to MEO: Designing Joule-Ready API Layers for SAP Commerce Cloud","kind":"blog","line":"Proposes 'Machine Experience Optimization' (MEO), the author's own term and explicitly not an SAP one, for a governed intent facade in front of SAP Commerce Cloud's OCC APIs so an assistant or a SAP Joule skill gets small, business-oriented operations instead of raw endpoints. Works through a full OpenAPI 3.0.3 contract for a product-search intent, with explicit read/write separation, a short-lived confirmation step and an idempotency key for the consequential 'place order' operation, and authorization checked against account and base-site boundaries rather than at the URL alone. The facade still delegates to Commerce's own services, facades and validation; it does not replace or bypass them.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"BhardwajAditya, published 2026-09-15"},"content:from-strategy-doc-to-runtime-rule-embedding-sap-ai-standards":{"href":"/content/from-strategy-doc-to-runtime-rule-embedding-sap-ai-standards","name":"From Strategy Doc to Runtime Rule: Embedding SAP AI Standards into Claude Code","kind":"blog","short":"SAP AI standards as hooks and skills applied in Claude Code","line":"An experiment in treating published engineering standards as machine-readable instructions an agent follows while it works, rather than as documents somebody is supposed to have read — hooks and skills wired so the rule applies at the moment code is written. The disclaimer is emphatic and worth carrying: a personal exploration, not an SAP product, not an endorsed approach, and readers are told to verify applicability through official channels. Read as a shape for the idea, not as a standard to adopt.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ZYT, published 2026-06-25"},"content:from-xsuaa-to-ams-policy-based-authorization-for-s4hana-extensions":{"href":"/content/from-xsuaa-to-ams-policy-based-authorization-for-s4hana-extensions","name":"From XSUAA to AMS: Architecting S4HANA CAP Extensions with Policy-Based Authorization","kind":"blog","short":"Policy-based authorization with AMS for S/4HANA CAP extensions","line":"Why scope-based authorization runs out, argued from enterprise extension work rather than from the documentation: XSUAA handles roles well, but real requirements are business-context restrictions — country, company code, organisational unit — and expressing those as scopes does not scale. The migration to policy-based authorization is presented as an architectural move for S/4HANA extensions rather than a configuration change.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Avinash Vaidya, published 2026-05-27"},"content:from-zero-to-fiori-building-sap-apps-with-ai-agents":{"href":"/content/from-zero-to-fiori-building-sap-apps-with-ai-agents","name":"From Zero to Fiori: Building SAP Apps with AI Agents (And Why I Use Markdown Files Instead of MCP)","kind":"blog","short":"Fiori apps built by AI agents from markdown instruction files","line":"Eleven entities and four Fiori apps in forty-five minutes, orchestrated rather than typed — and the author is careful to say it is a base to develop from, not something ready to ship. The markdown-files-as-instructions method is the transferable part.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"michal_majer, published 2025-12-10"},"content:full-stack-typescript-app-for-cloud-foundry-sample-repository":{"href":"/content/full-stack-typescript-app-for-cloud-foundry-sample-repository","name":"Full Stack TypeScript App for Cloud Foundry - Sample Repository","kind":"blog","short":"Full-stack TypeScript CAP and UI5 sample for Cloud Foundry","line":"A whole repository rather than a snippet: a CAP Node.js service and a freestyle SAPUI5 application, both in TypeScript, arranged for Cloud Foundry. The build process gets its own section, which is where a TypeScript full-stack project usually goes wrong.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"former_member66, published 2021-12-09"},"content:fullstack-cap-with-hana-cloud-part-1-local-with-sqlite":{"href":"/content/fullstack-cap-with-hana-cloud-part-1-local-with-sqlite","name":"Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-1]","kind":"blog","short":"Part 1 of 6: CAP app built locally against SQLite","line":"The first of six, and it does the thing the later parts depend on: build the Incident Management application against SQLite on a laptop, with no cloud database in sight. The series is called decoupled because the front end and the back end are deployed separately, and this part is entirely the back end.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"sanjucs, published 2026-05-06"},"content:fullstack-cap-with-hana-cloud-part-2-cds-annotations":{"href":"/content/fullstack-cap-with-hana-cloud-part-2-cds-annotations","name":"Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-2]","kind":"blog","short":"Part 2 of 6: UI annotations for the Fiori preview","line":"Part 1 left a working OData service whose Fiori preview showed nothing useful. This is the annotations that fix that — the UI vocabulary added to the CDS model until the generated list report has columns worth reading.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"sanjucs, published 2026-05-07"},"content:fullstack-cap-with-hana-cloud-part-3-setting-up-hana-cloud":{"href":"/content/fullstack-cap-with-hana-cloud-part-3-setting-up-hana-cloud","name":"Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-3]","kind":"blog","short":"Part 3 of 6: HANA Cloud instance set up on BTP","line":"The cloud database appears: a HANA Cloud instance created on BTP and mapped to a Cloud Foundry space. No application code — this is the part where the platform has to be right before the next part can connect to it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"sanjucs, published 2026-05-08"},"content:fullstack-cap-with-hana-cloud-part-4-connect-and-deploy":{"href":"/content/fullstack-cap-with-hana-cloud-part-4-connect-and-deploy","name":"Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-4]","kind":"blog","short":"Part 4 of 6: switching to HANA and deploying the back end","line":"The switch from SQLite to HANA and the first deploy of the back end to Cloud Foundry — the point in the series where the persistence stops being a file and the build starts producing HDI artifacts.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"sanjucs, published 2026-05-12"},"content:fullstack-cap-with-hana-cloud-part-5-btp-destination":{"href":"/content/fullstack-cap-with-hana-cloud-part-5-btp-destination","name":"Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-5]","kind":"blog","short":"Part 5 of 6: BTP destination joining front end and back end","line":"The consequence of decoupling: with the back end live on its own Cloud Foundry route, the front end needs a BTP destination to reach it rather than a relative path. Short, and it is the join the architecture creates.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"sanjucs, published 2026-05-18"},"content:fullstack-cap-with-hana-cloud-part-6-fiori-to-html5-repository":{"href":"/content/fullstack-cap-with-hana-cloud-part-6-fiori-to-html5-repository","name":"Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-6]","kind":"blog","short":"Part 6 of 6: Fiori app deployed to the HTML5 Application Repository","line":"The last part: the Fiori application built and deployed into the HTML5 Application Repository, separately from the service it talks to. Opens with a checklist of the five parts before it, which is the clearest statement of what the whole series covers.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"sanjucs, published 2026-05-14"},"content:genai-mail-insights-generative-ai-hub-for-customer-support":{"href":"/content/genai-mail-insights-generative-ai-hub-for-customer-support","name":"GenAI Mail Insights - Leveraging the generative AI hub in SAP AI Core to improve customer support","kind":"blog","short":"Sample app summarising support mail through the generative AI hub","line":"A sample application rather than an explainer, and the author says so in the opening — enough talking, here is something that runs. Incoming support mail summarised and categorised through the generative AI hub in AI Core.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"martinfrick, published 2023-11-15"},"content:generate-and-download-pdfs-on-the-fly-in-cap":{"href":"/content/generate-and-download-pdfs-on-the-fly-in-cap","name":"How to Generate and Download PDFs on the fly without persisting in CAP Application","kind":"blog","short":"Streaming generated PDFs from CAP without persisting them","line":"Streaming a generated document straight to the client without writing it anywhere first — which sidesteps the retention question a stored file creates, and is the distinction worth having beside the attachments capability.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"HarsithKumarReddy, published 2024-06-18"},"content:generating-adobe-form-using-rap-framework-odata-services":{"href":"/content/generating-adobe-form-using-rap-framework-odata-services","name":"Generating Adobe Form Using RAP framework OData Services","kind":"blog","short":"Adobe Form output from RAP-based OData services","line":"Models a RAP root view entity and consumption view over a custom sales-order table, built with ABAP CDS, and exposes it through a service definition and an OData V2 UI service binding. A separate SEGW project implements GET_STREAM to call an Adobe Form driver class and stream the rendered PDF back as the response, with a computed link field added to the CDS view so the UI can open it. The PDF is generated in the backend and returned to the calling program rather than sent straight to a printer.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Megastar, published 2025-03-18"},"content:generating-pdf-on-btp-cf-using-cap-and-puppeteer":{"href":"/content/generating-pdf-on-btp-cf-using-cap-and-puppeteer","name":"Generating PDF on BTP CF using CAP and Puppeteer","kind":"blog","short":"Rendering PDFs with Puppeteer in CAP on Cloud Foundry","line":"A headless browser rendering the PDF, which is the answer people reach for when the document is really a web page. The Cloud Foundry part is the difficulty: Puppeteer needs a browser in the buildpack, and that is what the post is actually about.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ltomazeli58, published 2024-03-28"},"content:generation-of-message-processing-logs-report-for-edi-transactions-using-sap-ci":{"href":"/content/generation-of-message-processing-logs-report-for-edi-transactions-using-sap-ci","name":"Generation of Message Processing logs report for EDI transactions using SAP CI.","kind":"blog","short":"Cloud Integration report of EDI message processing logs as CSV","line":"Walks through building an integration flow in Cloud Integration that calls SAP's standard MessageProcessingLogs OData API, plus a second request for custom headers, and converts the combined result to a CSV report of order, order-acknowledgement and invoice status by trading partner for EDI transactions. Getting the trading partner number into that report first requires a Groovy script and exchange property added to each EDI I-Flow so the value is captured as a custom header in message monitoring.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"NagurBabu, published 2025-03-13"},"content:get-authenticated-user-information-with-cap-using-the-xsuaa-api":{"href":"/content/get-authenticated-user-information-with-cap-using-the-xsuaa-api","name":"How to get authenticated user information with CAP in three different ways – Using the XSUAA API","kind":"blog","short":"Reading user information in CAP through the XSUAA API","line":"The third of three approaches the author sets out, and the one that returns the most: going to the XSUAA API directly rather than reading what CAP already put on the request. Depends on an earlier post for the project setup, so it starts mid-stream on purpose.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ale_biagi, published 2022-07-18"},"content:get-familiar-with-your-first-capm-project-using-the-cds-graphical-modeler":{"href":"/content/get-familiar-with-your-first-capm-project-using-the-cds-graphical-modeler","name":"Get familiar with your first CAPM project using CDS graphic modeler","kind":"blog","short":"First CAPM project drawn in the CDS Graphical Modeler","line":"The modeller as an entry point rather than an aid — a first CAPM project built by drawing it, for the developer who has not yet internalised CDL, annotations and metadata.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Jyoti_ranjan, published 2025-07-05"},"content:getting-started-with-cap-on-postgresql-nodejs":{"href":"/content/getting-started-with-cap-on-postgresql-nodejs","name":"Getting started with CAP on PostgreSQL (Node.js)","kind":"blog","short":"CAP on PostgreSQL with cds-pg and cds-dbm, since superseded","line":"Running CAP on PostgreSQL locally in 2020, when doing so meant the community packages cds-pg and cds-dbm. It now opens with a banner the author added later: @sap/cds 7.0.0 has native PostgreSQL support, use @cap-js/postgres instead, with a pointer to a step-by-step guide for it. Worth having for that banner as much as for the content — a post that tells you not to follow it is a dated fact about where the answer moved.","chip":{"label":"Compatibility","tier":"poor","evidence":"1 finding"},"ai":true,"meta":"published 2020-11-16"},"content:getting-started-with-cds-ql-in-nodejs-for-cap-101-on-how-to-query-data":{"href":"/content/getting-started-with-cds-ql-in-nodejs-for-cap-101-on-how-to-query-data","name":"Getting started with cds.ql in NodeJS for CAP - 101 on how to query data","kind":"blog","short":"Introduction to cds.ql queries in Node.js CAP handlers","line":"Walks through cds.ql, the query API @sap/cds gives a Node.js CAP service's custom handlers, with worked SELECT, UPDATE, DELETE and INSERT examples against a sample schema — filters, AND/OR conditions, column projections, ordering, limiting, grouping and joining two entities through a schema view. An added correction notes that cds.tx(req) is no longer needed to run a query in newer CAP versions, contradicting the post's own original guidance.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2022-06-21"},"content:getting-started-with-sap-event-mesh-concepts-setup-and-best-practices":{"href":"/content/getting-started-with-sap-event-mesh-concepts-setup-and-best-practices","name":"Getting Started with SAP Event Mesh: Concepts, Setup, and Best Practices","kind":"blog","short":"SAP Event Mesh concepts and setup with a Solace broker","line":"Explains SAP Event Mesh as SAP's managed messaging service and works through its core concepts: queues versus topics, publish-subscribe versus point-to-point delivery, and direct versus guaranteed messaging. A hands-on half wires a Solace event broker to SAP Cloud Platform Integration, with two iFlows publishing to and consuming from a queue and a topic over AMQP and HTTP REST.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"vvinay_kumar, published 2025-10-15"},"content:getting-started-with-unit-testing-in-cap-java":{"href":"/content/getting-started-with-unit-testing-in-cap-java","name":"Getting Started with Unit Testing in SAP CAP Java Applications","kind":"blog","short":"Introduction to unit testing in CAP Java","line":"The plain introduction: what the CAP Java framework gives you to test against, and how to start. Prerequisite to the same author's Copilot post.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Anjali_Pathak, published 2025-07-28"},"content:getting-your-head-into-cap-multitenancy":{"href":"/content/getting-your-head-into-cap-multitenancy","name":"Getting your head into Cloud Application Programming model multitenancy","kind":"blog","short":"Background on CAP multitenancy, flagged as out of date","line":"Opens by telling you it is out of date and pointing at the HANA Academy series instead, which is more honest than most posts manage. What survives the staleness is the discussion and context around multitenancy that the title promises — the reasoning, not the commands.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"andrew_lunde, published 2020-08-20"},"content:github-copilot-vscode-my-own-sap-development-rules":{"href":"/content/github-copilot-vscode-my-own-sap-development-rules","name":"Github Copilot VSCode - My Own SAP Development Rules","kind":"blog","short":"Copilot rule files for CAP, UI5, Jest and Bruno","line":"One developer's rule files for Copilot, split by concern rather than kept as one prompt: CAP backend rules, UI5 frontend rules, Jest testing rules and Bruno collection rules, each with a scope narrow enough that an agent cannot read it two ways. The CAP file covers reusable types, managed data, soft-delete behaviour and service conventions; the UI5 file covers naming, view constraints and where annotations may live. It is the rule-file half of agent guidance rather than the skill half — nothing is packaged or published, and the value on offer is the shape of the split.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"radu_simen, published 2026-02-05"},"content:give-your-ai-agent-some-tools-introducing-the-ui5-mcp-server":{"href":"/content/give-your-ai-agent-some-tools-introducing-the-ui5-mcp-server","name":"Give Your AI Agent Some Tools: Introducing the UI5 MCP Server","kind":"blog","line":"Announces @ui5/mcp-server, SAP's open-source MCP server for UI5 development, and walks through its initial six tools. get_project_info, get_api_reference and run_ui5_linter (which applies UI5 linter fixes) read the project's own version, manifest and code rather than an LLM's training data, which is what agent access to your code explains. create_ui5_app scaffolds a new JavaScript or TypeScript project, standalone or inside an existing CAP application, from templates with pre-configured OData model setups, which is generators.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-09-03"},"content:governance-at-scale-why-a-clean-core-is-what-makes-agent-governance-enforceable":{"href":"/content/governance-at-scale-why-a-clean-core-is-what-makes-agent-governance-enforceable","name":"Governance at Scale: Why a Clean Core Is What Makes Agent Governance Enforceable","kind":"blog","line":"Closing a six-part clean-core series, the post argues that SAP's two agentic-AI governance mechanisms only work against a documented tool surface: MCP Gateway in SAP Integration Suite auto-translates API specifications into MCP tool schemas augmented with natural-language semantics, carrying forward existing authentication, authorization and rate limiting into the agentic layer, while AI Agent Hub, built on SAP LeanIX, discovers and runs verification assessments on agents, LLMs and MCP servers before the resulting badge is read by Joule Studio or SAP Integration Suite to decide what is trusted. Its argument holds the mechanisms up against an undocumented internal interface, where the auto-generated schema and the verification badge have nothing real underneath them, and against a consolidated CAP service exposing only released APIs, where both do.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"DEEPA_DORAIRAJ, published 2026-09-21"},"content:graph-intro-series-part-8-use-graph-with-odata-v4":{"href":"/content/graph-intro-series-part-8-use-graph-with-odata-v4","name":"Graph intro series, part 8: Use Graph With OData v4","kind":"blog","short":"Querying SAP Graph over OData v4 with $select and $expand","line":"Part eight of the Graph intro series works through querying SAP Graph's unified business data graph over OData v4: inspecting the $metadata EDMX document for an entity type such as SalesQuote, then shaping the response with $select and nested $expand across navigation properties, and paging a collection with $filter, $orderby, $top and $skip. It stays with the protocol mechanics against the Graph sandbox endpoint rather than any one client library.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"florian_moritz, published 2024-03-19"},"content:graph-on-integration-suite-simplifying-multi-api-data-retrieval-with-unified-bus":{"href":"/content/graph-on-integration-suite-simplifying-multi-api-data-retrieval-with-unified-bus","name":"Graph on Integration Suite: Simplifying Multi-API Data Retrieval with Unified Business Data Graph","kind":"blog","short":"Graph in Integration Suite exposing several APIs as one model","line":"A hands-on walkthrough of Graph, the API Management feature of SAP Integration Suite also called Business Data Graphs, which exposes several OData APIs as one connected data model behind a single OData V4 or GraphQL endpoint. It covers enabling the capability and its Graph.KeyUser and GraphNavigator.Viewer role collections, creating BTP destinations and a service key for an S/4HANA system, then building a Business Data Graph over the Sales Order and Business Partner APIs so a mirrored SoldToParty association returns both in one call, in place of the two OData requests a Cloud Integration Content Enricher would otherwise merge.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-01-09"},"content:guide-to-process-automation-apis-part-i-getting-started":{"href":"/content/guide-to-process-automation-apis-part-i-getting-started","name":"Guide to Process Automation APIs - Part I - Getting Started","kind":"blog","short":"Calling SAP Build Process Automation APIs with OAuth2","line":"Explains how to call SAP Build Process Automation's REST and OData APIs directly: OAuth2 client credentials with a service key runs as the service, while a user token (OAuth2JWTBearer) runs as the calling person, which matters wherever an API records who acted — approving a task, or reading instances from a shared environment. Since the Public environment is deprecated as of the end of 2025, a call into any other environment also needs an environmentId query parameter.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Dan_Wroblewski, published 2025-07-14"},"content:hana-cloud-knowledge-graph-for-ai-driven-tender-analysis":{"href":"/content/hana-cloud-knowledge-graph-for-ai-driven-tender-analysis","name":"A Use Case for HANA Cloud Knowledge Graph: AI‑Driven Tender Analysis","kind":"blog","short":"HANA Cloud Knowledge Graph and Vector Engine for tender analysis","line":"Matching unstructured text against internal data, using both HANA engines at once — the Knowledge Graph for the relationships and the Vector Engine for similarity — with CAP holding the application and its data. Notes that the Knowledge Graph Engine is off by default and has to be enabled when the instance is created, which is the kind of thing that stops a weekend.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"giacomo_dantonio, published 2026-03-19"},"content:hana-clouds-vector-embedding-in-cap-compared-with-openai":{"href":"/content/hana-clouds-vector-embedding-in-cap-compared-with-openai","name":"HANA Cloud’s VECTOR EMBEDDING in CAP and Comparison with OpenAI Embedding","kind":"blog","short":"HANA Cloud VECTOR_EMBEDDING in CAP compared with Azure OpenAI","line":"Two ways to produce the same embedding, run side by side: HANA Cloud's own VECTOR_EMBEDDING function against Azure OpenAI through the CAP LLM plugin. The CDS side is short — an element of type cds.Vector maps to REAL_VECTOR on deploy — so what remains is the comparison, which is the thing you cannot get from either product's documentation alone.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"lalitmohan, published 2025-04-09"},"content:hana-database-migration-handling-incompatible-changes":{"href":"/content/hana-database-migration-handling-incompatible-changes","name":"HANA Database Migration: Handling Incompatible Changes to Existing Tables","kind":"blog","short":"Incompatible table changes on HANA with live data","line":"The question schema evolution exists for, asked plainly: how do you restructure a table in a production system that already holds live data. Incompatible changes are the ones CAP's own alter path will not make, which is where this starts.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Sekar Somasundaram, published 2025-04-16"},"content:hana-sql-notebooks-in-sap-build-business-application-studio-bas-visual-studio-co":{"href":"/content/hana-sql-notebooks-in-sap-build-business-application-studio-bas-visual-studio-co","name":"HANA SQL NOTEBOOKS in SAP BUILD / Business Application Studio(BAS) / Visual Studio Code","kind":"blog","line":"Walks through SAP HANA SQL Notebooks, a .notebook file opened inside a dev space of SAP Business Application Studio (also reached from SAP Build and Visual Studio Code), that mixes CODE and MARKDOWN blocks and needs the project's mta and hana facets added first with cds add. A CODE block's connection-management mode uses a '#' syntax to list, select and show the active SAP HANA connection, drawn from the HANA Database Explorer's saved connections or the project's own Cloud Foundry connection, so any valid SQL statement can then run against the project's HDI container.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-01-01"},"content:handling-concurrent-updates-in-sap-cap-java":{"href":"/content/handling-concurrent-updates-in-sap-cap-java","name":"Handling Concurrent Updates in SAP CAP Java","kind":"blog","short":"Lost updates and concurrency control in CAP Java","line":"Alice and Bob open the same employee record; Bob saves last and quietly erases Alice's change. The lost-update problem stated concretely and then answered in CAP Java, which is the only entry here on the subject — hence the capability.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Anjali_Pathak, published 2026-05-26"},"content:handling-csv-data-deployment-in-cap-hdi-without-data-loss":{"href":"/content/handling-csv-data-deployment-in-cap-hdi-without-data-loss","name":"Handling CSV Data Deployment in CAP HDI Without Data Loss","kind":"blog","short":"Keeping CSV data in HDI deployments from being overwritten","line":"The same trap from the HDI side: .hdbtabledata hands the container full ownership of the data, so the next deployment overwrites the table from the file. Two independent posts three months apart on the same sharp edge, which is a fair signal about how sharp it is.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Sekar_Somasundaram, published 2025-06-04"},"content:handling-file-routing-and-alerts-in-sap-cpi-based-on-file-type":{"href":"/content/handling-file-routing-and-alerts-in-sap-cpi-based-on-file-type","name":"Handling File Routing and Alerts in SAP CPI Based on File Type","kind":"blog","short":"Cloud Integration flow routing SFTP files by extension with alerts","line":"Walks through building a Cloud Integration flow that pulls files from one SFTP server, captures the name and extension with a Content Modifier's ${file:ext} expression, and uses a Router to send XML files on to a second SFTP server while any other extension, or a missing XML file, triggers an alert. The alert is a Mail adapter step authenticated against Gmail's SMTP server with an app password, so the piece covers an adapter, a router condition and a mail step as parts of one flow.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"harsh__chauhan, published 2025-04-03"},"content:hands-on-with-the-cap-operator-and-the-partner-reference-application":{"href":"/content/hands-on-with-the-cap-operator-and-the-partner-reference-application","name":"From Concept to action: Hands-On with the CAP Operator and the Partner Reference Application","kind":"blog","short":"CAP Operator applied to the Partner Reference Application","line":"The CAP Operator applied to a real application rather than a sample of its own — SAP's Partner Reference Application, taken from plugin integration through containerisation to custom resources. The transition to CRDs is the part that repays attention: it is where the deployment stops being an mta and becomes Kubernetes.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ChristianWeiss, published 2026-05-21"},"content:hello-react-and-vue-caps-new-ui-layer":{"href":"/content/hello-react-and-vue-caps-new-ui-layer","name":"Hello React & Vue : SAP CAP’s New UI Layer is Here!","kind":"blog","short":"CAP UI layer for React and Vue","line":"CAP gaining a UI layer for React and Vue, which changes the default assumption that the front end is UI5. Short, and the significance is larger than the length.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Yogananda, published 2026-06-25"},"content:hey-abap-cloud-please-let-me-save-my-data-export-to-azure-storage-please-part-4":{"href":"/content/hey-abap-cloud-please-let-me-save-my-data-export-to-azure-storage-please-part-4","name":"Hey ABAP Cloud please let me save my data export to Azure Storage please🥺🙏- part 4","kind":"blog","short":"Reaching Azure Blob Storage from ABAP Cloud over OAuth2","line":"Walks through reaching Azure Blob Storage from ABAP Cloud without an intermediary Cloud Foundry app: an OAuth2 client credentials flow against Microsoft Entra ID, driven either through cl_http_destination_provider and the SAP Destination service at subaccount or Cloud Foundry-space level, or through the SAP_COM_0276 communication scenario and Communication Management. Notes that SAP marks the destination-service route deprecated for ABAP Cloud even though it alone offers management APIs and cross-tenant reuse, and closes on automating the resulting client-secret rotation with Azure Key Vault.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-11-21"},"content:how-i-use-ai-for-development-and-why-context-matters":{"href":"/content/how-i-use-ai-for-development-and-why-context-matters","name":"How I Use AI for Development and Why Context Matters","kind":"blog","short":"Part 1 of an AI ABAP series on context in development","line":"Part one of the AI ABAP development series traces a move from pasting ChatGPT output and error messages back and forth to tools that search, read docs and inspect files themselves, and holds that the context around a model decides more in real projects than benchmark results do. In SAP work the grounding comes from mcp-sap-docs, which brings SAP Help, GitHub repositories, style guides and DSAG guidelines into the session, and context for changing a class also means the tables it uses, the classes it calls and similar implementations. Agentic autonomy is a slider set per project, with the time saved on typing moved into planning and review, and the post stops before ABAP: SAP's MCP servers for UI5, CAP and Fiori (@ui5/mcp-server, @cap-js/mcp-server, @sap-ux/fiori-mcp-server) sit in off-stack work that git and pipelines already gate, and the harder ABAP case is left to the next part.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-04-20"},"content:how-redwood-software-and-sap-are-shaping-the-next-era-of-automation-with-joule-s":{"href":"/content/how-redwood-software-and-sap-are-shaping-the-next-era-of-automation-with-joule-s","name":"How Redwood Software and SAP are shaping the next era of automation with Joule Studio","kind":"blog","short":"Joule Studio pausing jobs and iFlows for maintenance with Redwood","line":"Redwood's Field CTO describes a tech preview where an SAP Basis administrator tells SAP Joule in natural language to pause background jobs and dependent Integration Suite iFlows for unplanned system maintenance; Joule acts as a control tower, triggering a pre-approved RunMyJobs workflow and asking for approval before the restart proceeds. The integration is built by publishing RunMyJobs operations to the SAP Business Accelerator Hub, securing access through SAP BTP with API keys and role-based permissions, and combining those actions into a skill inside Joule Studio's low-code design canvas.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"gmblom, published 2025-11-02"},"content:how-to-access-hana-cloud-database-and-hdi-container-in-btp":{"href":"/content/how-to-access-hana-cloud-database-and-hdi-container-in-btp","name":"[BTP HANA Cloud Database] : How to access HANA Cloud Database & HDI Container in BTP","kind":"blog","short":"Accessing HANA Cloud and an HDI container on BTP","line":"Getting at the database your application already deployed to, which sounds trivial until the HDI container is the only thing that has credentials for it. Guidance for the case where the account is already configured and the question is only how to look inside.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"showkath_naseem, published 2023-01-18"},"content:how-to-access-on-premise-odata-from-bas-in-capm-development":{"href":"/content/how-to-access-on-premise-odata-from-bas-in-capm-development","name":"How to Access On-premise OData from the Business Application Studio - CAPM Development","kind":"blog","short":"Reaching on-premise OData from BAS in CAP development","line":"A destination-naming constraint found the hard way and then corrected in public: the post carries its own update saying that with a CAPM app, a standard destination works through the studio's proxy as long as the name matches [a-z0-9-]. The update credits a comment on the post, so the correction and its source are both in the record.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"laszlo_kajan2, published 2020-06-02"},"content:how-to-access-sap-cloud-logging-service-dashboards-using-ias-saml-authentication":{"href":"/content/how-to-access-sap-cloud-logging-service-dashboards-using-ias-saml-authentication","name":"How to Access SAP Cloud Logging Service Dashboards Using IAS SAML Authentication","kind":"blog","short":"IAS SAML sign-on for SAP Cloud Logging dashboards","line":"Walks through wiring SAML 2.0 single sign-on between SAP Cloud Identity Services (IAS) and SAP Cloud Logging so its OpenSearch dashboards accept IAS logins instead of a service key: creating the SAML application in IAS, editing the instance's saml parameters (admin_group, idp.metadata_url, idp.entity_id, sp.entity_id), setting the matching entity ID and endpoints on the IAS side, and mapping an IAS group to the all_access role through a groups attribute. It also shows how to read a 403 on the dashboard as SAML login succeeding while the group-to-role mapping is still missing.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Umezuki, published 2025-12-30"},"content:how-to-add-odata-v2-adapter-proxy-to-your-cap-project":{"href":"/content/how-to-add-odata-v2-adapter-proxy-to-your-cap-project","name":"How to add OData v2 adapter proxy to your CAP project","kind":"blog","short":"OData v2 adapter proxy in front of a CAP v4 service","line":"The problem is stated in one line — a UI5 application that only speaks OData v2 in front of a CAP service that speaks v4 — and the answer is a proxy in the middle rather than a rewrite of either end. Written while v4 support in the UI5 stack was still patchy, which is the whole reason the adapter exists.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2020-06-30"},"content:how-to-approve-reject-task-via-api-in-sap-build-process-automation":{"href":"/content/how-to-approve-reject-task-via-api-in-sap-build-process-automation","name":"How to Approve/Reject Task via API in SAP Build Process Automation","kind":"blog","short":"Approving or rejecting Build Process Automation tasks via API","line":"Walks through the Workflow API's /task-instances PATCH call that SAP Build Process Automation exposes to approve or reject a user task from outside its Inbox, matching the instance ID from the Monitoring tab and the identifier of the button the approval form defines. Covers the permission split between an authenticated user, who needs the ProcessAutomationAdmin or ProcessAutomationParticipant role collection to appear as the one who completed the task, and Client Credentials, which completes it as a generic client identity, plus the error codes the API returns for a missing instance, an already-completed task or an invalid status.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Dan_Wroblewski, published 2025-02-10"},"content:how-to-build-reusable-plugin-components-for-cap-java-applications":{"href":"/content/how-to-build-reusable-plugin-components-for-cap-java-applications","name":"How to build reusable plugin components for CAP Java applications","kind":"blog","short":"Reusable CAP Java plugins as Maven artifacts","line":"A companion to Daniel Schlachter's Reusable components for CAP with cds-plugin, showing the same mechanism on CAP Java: a plugin ships as its own Maven artifact with an event handler and a CdsRuntimeConfiguration implementation, registered through the JDK's ServiceLoader rather than any CAP-specific wiring. The walkthrough builds a cds-emoji-plugin-java jar that decorates @emoji-annotated fields on read, installs it to the local Maven repository, and adds it as a runtime dependency to a cds init --add java bookshop application. It argues the plugin mechanism was not new to CAP Java, just previously undocumented.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"robinjayasinghe, published 2023-05-16"},"content:how-to-check-fiori-apps-related-authorization-object-mass":{"href":"/content/how-to-check-fiori-apps-related-authorization-object-mass","name":"How to Check Fiori Apps Related Authorization Object Mass","kind":"blog","short":"Mass-checking authorization objects behind Fiori apps","line":"A structured, table-driven method for mass-checking which authorization objects back a set of Fiori apps: map each Fiori App ID to its OData service, look up that service's hash in USOBHASH, then resolve the hash to its authorization objects (S_SERVICE, S_RFC, among others) in USOBTC. The author reports the method's limits in practice — apps built on a transaction code are already findable directly in USOBTC, and the same approach resolved only 5 of 300 Web Dynpro apps, which needed a manual catalog-and-hash workaround instead.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"MehmetSaidDemir, published 2025-10-07"},"content:how-to-configure-retry-mechanism-in-sap-btp-ci-is-to-handle-only-connectivity-er":{"href":"/content/how-to-configure-retry-mechanism-in-sap-btp-ci-is-to-handle-only-connectivity-er","name":"How to Configure Retry Mechanism in SAP BTP CI/IS to Handle Only Connectivity Errors when using AEM","kind":"blog","short":"Cloud Integration retries for connectivity errors only with AEM","line":"Shows how to configure a Cloud Integration iFlow with an AEM sender so only connectivity errors trigger a retry: a Groovy script reads the CamelHttpResponseCode header and looks it up in a value map, and a router then sends a transient failure such as a 408 timeout down the retry path, where the retry limit set in AEM applies, and an error needing manual intervention, such as a 401, down a path that ends the flow at once and emails the team. It applies only to receiver adapters that return CamelHttpResponseCode, among them HTTP, SOAP, IDoc and OData. It builds on an earlier post of the author's, which this one does not name, where an email goes out after the final retry attempt.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Jayabalaji_Sakthivel, published 2025-01-21"},"content:how-to-connect-claude-code-to-abap-with-zero-config-mcp":{"href":"/content/how-to-connect-claude-code-to-abap-with-zero-config-mcp","name":"How to Connect Claude Code to ABAP with Zero-Config MCP","kind":"blog","short":"Claude Code connected to ABAP through a VS Code extension's MCP","line":"Walks through wiring Claude Code, via its VS Code extension, to a live SAP system through an ABAP remote-filesystem extension built by Marcello Urbani and its built-in MCP server — a single toggle rather than a hand-rolled Node.js setup — so the agent searches, reads, writes, activates and assigns transports for ABAP objects over the same ADT REST API Eclipse uses, instead of guessing at tables and function modules it has never seen. The demo carries one plain-English prompt through to a real, activated ABAP program on a live S/4HANA system, including a transport-request dialog Claude worked through on its own.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Nibedita, published 2026-07-05"},"content:how-to-connect-to-remote-services-locally-in-a-cap-application":{"href":"/content/how-to-connect-to-remote-services-locally-in-a-cap-application","name":"BTP CAP : How to Connect to Remote Services Locally in CAP Application","kind":"blog","short":"Running a CAP app locally against a real remote service","line":"The same problem four years earlier: a CAP application that consumes a remote service, running locally against the real thing rather than against a mock.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"showkath_naseem, published 2022-12-12"},"content:how-to-consume-ui5-custom-libraries-in-bas-or-vs-code":{"href":"/content/how-to-consume-ui5-custom-libraries-in-bas-or-vs-code","name":"How to consume UI5 custom libraries in BAS or VS Code","kind":"blog","short":"Consuming UI5 custom libraries locally with yarn workspaces","line":"Consuming a custom UI5 library from a UI5 application locally, using yarn workspaces to resolve the dependency instead of adjusting the project before every deploy. The post is honest about its own history: the author had asked the question on SAP Community, found a workaround that needed a pre-deploy edit, and only later learned the workspace approach that removes it. Generator-based setup throughout, and 2021-vintage — yarn workspaces, generator-ui5-library and generator-easy-ui5.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2021-04-06"},"content:how-to-create-a-purchase-order-through-bapi-in-the-sap-through-program-se38-t-co":{"href":"/content/how-to-create-a-purchase-order-through-bapi-in-the-sap-through-program-se38-t-co","name":"How to create a Purchase Order through BAPI in the SAP through program ( SE38 ) T-CODE .","kind":"blog","short":"Creating a purchase order with BAPI_PO_CREATE1 from an ABAP report","line":"Walks through creating a purchase order from an ABAP report (SE38) by filling the BAPIMEPOHEADER/BAPIMEPOITEM structures and their X-indicator counterparts, then calling BAPI_PO_CREATE1 within the same session. Its error handling centres on the BAPIRET2 return table: looping over entries typed E or A, skipping BAPI_TRANSACTION_COMMIT when one is found, and displaying the returned message text rather than assuming success once the function module returns.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"chandu_kumar_badukuri, published 2025-12-18"},"content:how-to-create-an-application-job-apj-in-sap-s-4hana-abap-with-single-values-sele":{"href":"/content/how-to-create-an-application-job-apj-in-sap-s-4hana-abap-with-single-values-sele","name":"How to Create an Application Job (APJ) in SAP S/4HANA ABAP — With Single Values & Select Options","kind":"blog","short":"Application Job in S/4HANA ABAP with parameters and select options","line":"Walks through implementing an Application Job end to end on the ABAP door: a class implements IF_APJ_RT_EXEC_OBJECT for runtime execution and IF_APJ_DT_EXEC_OBJECT to define parameters, covering both single-value parameters and select options, then registers the class as a job catalog entry and template in ADT for scheduling through the Application Jobs Fiori app. Frames Application Jobs as the class-based, ADT-defined successor to the classic SM36/SM37 background job transactions.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"PM_iiits, published 2026-05-22"},"content:how-to-create-and-expose-odata-apis":{"href":"/content/how-to-create-and-expose-odata-apis","name":"how to create and expose OData APIs","kind":"blog","short":"Building and exposing an OData API in Cloud Integration","line":"A step-by-step walkthrough of building an OData API artifact in Cloud Integration: import a service's EDMX metadata, select an entity type, wire an ODATA receiver adapter into an integration flow with a response mapping, then deploy the artifact. The example targets the public Northwind service rather than an SAP backend, and the deployed ProductSet endpoint is tested in Postman with basic auth.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SaiPrudhviRajTaduva, published 2025-02-26"},"content:how-to-deploy-a-custom-fiori-app-to-s-4hana-public-cloud-and-add-a-tile-in-sap-b":{"href":"/content/how-to-deploy-a-custom-fiori-app-to-s-4hana-public-cloud-and-add-a-tile-in-sap-b","name":"How to Deploy a Custom Fiori App to S/4HANA Public Cloud and Add a Tile in SAP Build Work Zone","kind":"blog","short":"Custom Fiori app on S/4HANA Public Cloud with a Work Zone tile","line":"A step-by-step walkthrough of taking a RAP-based Fiori app from SAP Business Application Studio deployment to a working tile in SAP Build Work Zone, standard edition on SAP S/4HANA Cloud Public Edition: the crossNavigation/inbounds block in manifest.json that creates the Launchpad App Descriptor Item, the IAM App that links it to a Business Catalog and Business Role, and the semantic-object-and-action intent Work Zone resolves against. SSO between BTP and S/4 works because both trust the same Cloud Identity Services tenant.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"sushweta_bhattacharya, published 2026-05-28"},"content:how-to-enable-sap-audit-log-viewer-service-to-collect-all-audit-logs-from-btp-se":{"href":"/content/how-to-enable-sap-audit-log-viewer-service-to-collect-all-audit-logs-from-btp-se","name":"How to enable SAP Audit Log Viewer service to collect all Audit logs from BTP Services - Part 1","kind":"blog","short":"Setting up the SAP Audit Log Viewer for BTP services","line":"Walks through subscribing to the SAP Audit Log service's viewer app from the SAP BTP cockpit and creating a RoleCollection from the auditlog-management and auditlog-viewer role templates, assigned to a user or by a rule on the IDP's SAML assertion, to read audit logging events in a subaccount. The post's own update notes that a BTP release from 19 February 2026 removed the need for that role-assignment step. It also lists which Cloud Foundry services write audit log events, pointing to each service's own auditing page rather than detailing them here.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Yogananda, published 2025-03-07"},"content:how-to-extend-abap-test-cockpit-on-sap-btp-for-custom-use-cases":{"href":"/content/how-to-extend-abap-test-cockpit-on-sap-btp-for-custom-use-cases","name":"How to extend ABAP Test Cockpit on SAP BTP for custom use cases","kind":"blog","short":"Released APIs for extending ABAP Test Cockpit on SAP BTP","line":"Walks through the released, C1-contract APIs and CDS views for extending ABAP Test Cockpit on SAP BTP: the single entry point CL_SATC_API=>CREATE_API_FACTORY, reading a run's findings and headers through SATC_API_FINDINGS and SATC_API_RESULT_HEADERS, starting synchronous local ATC runs for a transport, approving or rejecting exemptions programmatically, configuring approver responsibility areas without a UI, and implementing a custom check through IF_CI_ATC_CHECK. Code snippets show each API in use, including the CDS views that join ATC results to the Custom Code Migration app's own findings.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"OlgaDolinskaja, published 2026-05-20"},"content:how-to-handle-usernames-global-user-ids-and-external-ids-in-your-landscape":{"href":"/content/how-to-handle-usernames-global-user-ids-and-external-ids-in-your-landscape","name":"How to handle “usernames”, “Global User IDs” and “external IDs” in your landscape?","kind":"blog","short":"Usernames, Global User IDs and external IDs across a landscape","line":"Explains what a username, a Global User ID and a SCIM2 external ID each are and when to use them: the username is the mutable attribute a person authenticates with, the Global User ID is the correlation attribute SAP uses when the same user must be identified between the applications they are provisioned into, and the external ID is mutable, defined by the client and optional within SCIM2. Argues against deriving any of the three from personal data, because they appear in read-only log files and other traces, some applications do not allow an ID change at all, and DevOps staff with access to those logs would otherwise see personal data they are not allowed to see. Recommends generating values without personal data, in uuid format, for technical integrations such as SAML or OIDC flows and SCIM-based replication, and keeping attributes like an email or display name for logon aliases and for what a user interface shows; notes that Cloud Identity Services already generates the SCIM ID and Global User ID in uuid format for each record.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"1Gunnar, published 2023-09-12"},"content:how-to-implement-alert-notification-service-in-cap":{"href":"/content/how-to-implement-alert-notification-service-in-cap","name":"How To Implement Alert Notification Service in Cloud Application Programming","kind":"blog","short":"Alert Notification service set up for a CAP application","line":"A click-by-click setup of BTP's Alert Notification service against a CAP application. Operational alerting rather than business notification — the audience is whoever is on call, not the user — which is the distinction the Work Zone plugin here does not cover.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Aditya12, published 2025-05-27"},"content:how-to-implement-sap-btp-audit-log-service-in-a-cap-application":{"href":"/content/how-to-implement-sap-btp-audit-log-service-in-a-cap-application","name":"How to implement SAP BTP Audit log service in a CAP Application","kind":"blog","short":"Binding the BTP Audit Log service to a CAP application","line":"The setup half: binding the BTP Audit Log service to a CAP application and getting the annotated path working, which is the step before anything custom becomes a question.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"KrishnaSharma7, published 2025-01-01"},"content:how-to-implement-sap-change-document":{"href":"/content/how-to-implement-sap-change-document","name":"How to Implement SAP Change Document","kind":"blog","short":"Change Document framework on custom ABAP tables","line":"Builds SAP's Change Document framework on two custom tables, ZZCUSTOMER and ZZCUSTOMER_BANK: creating the Change Document Object in transaction SCDO, then wrapping each INSERT, MODIFY and DELETE on the Z-tables together with a call to the generated WRITE method inside one ABAP class, so both commit in the same Logical Unit of Work. Because the generated method cannot read old values back from the database itself, the class reads them before the update and holds them in memory; a Managed RAP application skips this step by specifying the Change Document Object directly in its Behaviour Definition instead. This is the ABAP side of change tracking: a change document object logs who changed a field, and when, into CDHDR and CDPOS.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Subhasree1, published 2026-07-09"},"content:how-to-mass-upload-from-a-spreadsheet-file-into-an-sap-fiori-app-in-sap-btp-abap":{"href":"/content/how-to-mass-upload-from-a-spreadsheet-file-into-an-sap-fiori-app-in-sap-btp-abap","name":"How to mass upload from a spreadsheet file into an SAP Fiori app in SAP BTP ABAP Environment Part 1","kind":"blog","short":"Spreadsheet mass upload into RAP with XCO XLSX, part 1","line":"Part 1 of a three-part series on mass-uploading records from a spreadsheet into a RAP business object in the SAP BTP ABAP environment, using the XCO XLSX module to parse an uploaded Excel file without any open-source library. It reads a named worksheet by its column-and-row coordinates into an internal table through the row-stream operation, then creates or updates records with the EML MODIFY ENTITIES statement, and reserves the Fiori elements custom-action wiring and the download/template generation for Parts 2 and 3.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"DebrajManna87, published 2024-08-08"},"content:how-to-merge-two-separate-smart-forms-into-a-single-pdf-in-sap":{"href":"/content/how-to-merge-two-separate-smart-forms-into-a-single-pdf-in-sap","name":"How to Merge Two Separate Smart Forms into a Single PDF in SAP","kind":"blog","short":"Merging two Smart Forms into one PDF in ABAP","line":"Walks through generating two separate Smart Forms as OTF, converting each to PDF with CONVERT_OTF, then combining them into one file with cl_rspo_pdf_merge before downloading the result to the frontend. The whole flow runs inside the ABAP system that holds the data, from SMARTFORMS-built forms to a single merged PDF on the local device.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"chandu_kumar_badukuri, published 2025-12-17"},"content:how-to-perform-initial-loads-from-s-4hana-to-advanced-event-mesh-with-odata-poll":{"href":"/content/how-to-perform-initial-loads-from-s-4hana-to-advanced-event-mesh-with-odata-poll","name":"How to Perform Initial Loads from S/4HANA to Advanced Event Mesh with Odata Poll","kind":"blog","short":"Initial loads from S/4HANA to Advanced Event Mesh by OData polling","line":"Walks through building a Cloud Integration flow that polls the S/4HANA Business Partner OData API on a timer, splits the response into individual records, and publishes each as an event to Advanced Event Mesh through its adapter, with the topic set dynamically from a grouping property. Selects fields and expands associations with $select/$expand against an EDMX from the API Business Hub, and works around the OData V2 adapter's lack of JSON support by falling back to the HTTP adapter with an XML-to-JSON converter. Flags the trade-off: the pattern needs no backend change beyond activating the API, but the polled payload has to stay aligned with whatever event format the ERP pushes on change.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"AlexPfeil, published 2025-04-04"},"content:how-to-reduce-prompt-token-costs-using-toon":{"href":"/content/how-to-reduce-prompt-token-costs-using-toon","name":"How to Reduce Prompt Token Costs Using Toon = Save Money","kind":"blog","short":"TOON as a format to cut prompt token costs","line":"Token spend treated as a running cost rather than a detail, and TOON as the lever. Companion reading to the CAP adapter for the same format that is indexed here.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Yogananda, published 2025-11-12"},"content:how-to-rename-an-odata-v4-service":{"href":"/content/how-to-rename-an-odata-v4-service","name":"How to rename an OData V4 service?","kind":"blog","short":"Renaming an OData V4 service binding in the BTP ABAP environment","line":"Renaming an OData V4 service binding changes its Service Alias and the resulting service URL, breaking any app already deployed against the old one — shown on a /DMO/TRAVEL-based example in the SAP BTP ABAP environment by unpublishing, renaming and republishing the binding, then reading the new URL back from the OData V4 service catalog's ServiceGroups entry. It weighs that against two alternatives: adding a second service definition and publishing it as a new service version under the same binding, or creating an entirely new service definition and binding, which keeps the original URL live during the cutover.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-07-04"},"content:how-to-scan-custom-abap-for-security-issues-in-eclipse-step-by-step":{"href":"/content/how-to-scan-custom-abap-for-security-issues-in-eclipse-step-by-step","name":"How to Scan Custom ABAP for Security Issues in Eclipse (Step-by-Step)","kind":"blog","short":"RedRays ABAP Scanner plugin setup in Eclipse","line":"Written by someone who works on the tool, this is a setup walkthrough for the RedRays ABAP Scanner Eclipse plugin: get a demo API key, install the plugin via an update site, point it at a backend, and scan an ABAP object from the Project Explorer. Findings for SQL/ADBC injection, OS command execution, path traversal, missing AUTHORITY-CHECK and similar are grouped by severity with a CVSS score and an automated exploitability check, and a REST API extends the same scan to a CI/CD allow/block gate on a transport.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"vahagn, published 2026-07-03"},"content:how-to-share-tables-across-different-cap-projects":{"href":"/content/how-to-share-tables-across-different-cap-projects","name":"How to share tables across different CAP projects","kind":"blog","short":"Four scenarios for sharing tables across CAP projects","line":"Four scenarios for reading one CAP project's table from another, worked out as a matrix of what each one needs: the same HDI container and namespace, the same container under a different namespace, a different container, and a different Cloud Foundry space. The mechanics change with each step — @cds.persistence.exists on the reused entity throughout, an .hdbsynonym once namespaces diverge, .hdbrole and .hdbgrants once containers do, and a user-provided service built from the grantor's credentials once spaces do. The author flags the caveat themselves: these are learning scenarios, and consuming the OData service is often the better answer than reaching into another project's database. Dated corrections from twelve days after publication sit inline — synonyms need only the name because the configuration comes from .hdbsynonymconfig, SERVICE_REPLACEMENTS in mta.yaml removes the hard-coded service name, and the reused container need not be bound to the srv module.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2021-10-03"},"content:how-to-subscribe-or-fetch-data-from-solace-to-cpi-using-aem-adapter-part-5":{"href":"/content/how-to-subscribe-or-fetch-data-from-solace-to-cpi-using-aem-adapter-part-5","name":"How to subscribe or fetch data from solace to CPI using AEM Adapter : part-5","kind":"blog","short":"Subscribing to Solace events in Cloud Integration with the AEM adapter","line":"Closes a series on event-driven architecture with Solace by detailing the subscriber side of an iFlow in Cloud Integration: an advanced event mesh adapter feeds an exception subprocess, and a Groovy step classifies each failure as recoverable, left to Solace's own retry, or non-recoverable, answered with a custom property that tells Solace to stop retrying before the message reaches an escalation layer. The escalation layer names email, ServiceNow and Loggly as destinations without explaining any of them.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"pavanKolla, published 2025-08-03"},"content:how-to-transfer-a-file-from-the-cap-backend":{"href":"/content/how-to-transfer-a-file-from-the-cap-backend","name":"How to transfer file from CAP backside","kind":"blog","short":"Storing a PDF in CAP and sending it on to an external service","line":"A PDF arriving from the front end, stored against the record with @Core.MediaType, and then sent on to an external service for parsing. Short, and the second half is the part that is not in the plugin documentation: getting the bytes back out of the model to forward them somewhere else.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-09-14"},"content:how-to-use-npm-modules-like-crypto-js-in-sapui5-using-ui5-tooling-modules":{"href":"/content/how-to-use-npm-modules-like-crypto-js-in-sapui5-using-ui5-tooling-modules","name":"How to Use NPM Modules Like crypto-js in SAPUI5 Using UI5 Tooling Modules","kind":"blog","line":"Walks through adding ui5-tooling-modules to a SAPUI5 project on UI5 Tooling v3: installing the npm package crypto-js alongside it, then wiring a ui5-tooling-modules-task builder task and a ui5-tooling-modules-middleware dev-server middleware into ui5.yaml so the UI5 module loader can resolve it. A controller then loads crypto-js/sha256 through sap.ui.define and calls it like any other AMD dependency, with the stated limit that the pattern works only inside a controller or other AMD-style module, not through a top-level import or require().","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"DakshKumarSingh, published 2025-09-04"},"content:how-to-use-reserved-words-as-property-names-in-your-odata-service":{"href":"/content/how-to-use-reserved-words-as-property-names-in-your-odata-service","name":"How to use reserved words as property names in your OData service?","kind":"blog","short":"Reserved words as OData property names with @odata.property.name","line":"Setting a CDS view alias to a reserved OData word, such as Number, fails compilation with 'NUMBER is a reserved word'. The fix for a RAP-based OData service is the @odata.property.name annotation: it lets the underlying CDS view keep a compiler-safe name (NumberInStock) while the $metadata EntityType still exposes the field as Number, shown against a products view and its generated EDMX.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Andre_Fischer, published 2025-11-10"},"content:how-to-use-sap-data-intelligence-with-sap-cloud-connector":{"href":"/content/how-to-use-sap-data-intelligence-with-sap-cloud-connector","name":"How to use SAP Data Intelligence with SAP Cloud Connector","kind":"blog","short":"SAP Data Intelligence reaching on-premise through Cloud Connector","line":"Walks through reaching an on-premise network from SAP Data Intelligence Cloud with Cloud Connector: installing the client, assigning the Cloud_Connector_Administrator role, registering the subaccount, and mapping on-premise systems as ABAP, HANA or HTTP back-ends in Data Intelligence's Connection Manager. For an ABAP back-end it names the function-module whitelist and the gateway port format RFC access needs, per SAP Note 2835207.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Former Member, published 2021-03-16"},"content:how-we-could-potentially-have-nestjs-as-runtime-for-sap-cap":{"href":"/content/how-we-could-potentially-have-nestjs-as-runtime-for-sap-cap","name":"How we could potentially have nestjs as runtime for SAP CAP","kind":"blog","short":"Proof of concept running CAP dispatch through NestJS","line":"A proof-of-concept that swaps @sap/cds's ApplicationService and ODataAdapter dispatch for NestJS controllers, providers and interceptors, built by the author to learn NestJS rather than to ship a runtime. It works through CAP's run-dispatch-handle loop and AsyncLocalStorage-based transaction boundaries in detail before mapping them onto NestJS dependency injection and interceptors — one community answer to the controller-service-repository layering question core TypeScript support leaves open. The author's own conclusion is that the result reimplements CAP Java in Node.js, and they do not plan to take it further.","chip":{"label":"Compatibility","tier":"poor","evidence":"cds 8, line ended"},"ai":true,"meta":"alex_myakinkii, published 2024-09-19"},"content:html5-timeout-for-cap-destinations-in-mta-yaml":{"href":"/content/html5-timeout-for-cap-destinations-in-mta-yaml","name":"HTML5.Timeout for CAP destinations in mta.yaml longer than default","kind":"blog","short":"Raising the timeout for slow CAP destinations in mta.yaml","line":"A page and a half about one property that has to be raised when a CAP destination is slower than the default allows — and it now opens with its own correction, dated October 2025, that the property is called timeout rather than HTML5.Timeout, credited to a commenter. The correction is why it is worth keeping.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"NilsJanen, published 2022-11-09"},"content:hybrid-testing-using-postgresql-on-btp-hyperscaler-option":{"href":"/content/hybrid-testing-using-postgresql-on-btp-hyperscaler-option","name":"Hybrid testing using PostgreSQL on SAP BTP, hyperscaler option","kind":"blog","short":"Hybrid testing against PostgreSQL on SAP BTP, hyperscaler option","line":"A short note rather than a guide — the author says they came across the feature reading someone else's post on PostgreSQL with Kyma. Hybrid testing against a real PostgreSQL instance, which until then people assumed meant HANA.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"martinfrick, published 2023-08-08"},"content:identity-and-access-management-in-sap-navigating-sso-across-web-and-on-prem-land":{"href":"/content/identity-and-access-management-in-sap-navigating-sso-across-web-and-on-prem-land","name":"Identity and Access Management in SAP: Navigating SSO Across Web and On-Prem Landscapes","kind":"blog","short":"SSO across web and on-premise landscapes with Cloud Identity Services","line":"SAP Cloud Identity Services is the central identity interface for single sign-on across an SAP landscape: browser-based applications authenticate through SAML 2.0 or OpenID Connect, while applications reached over RFC rather than HTTP use Secure Login Client and Secure Login Service instead, since those web protocols do not apply there. That RFC path issues short-lived X.509 certificates from SCI-authenticated identities, carrying the same multi-factor authentication into on-premise access, with Kerberos tokens or local client certificates as alternatives.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"OxanaJ, published 2025-07-25"},"content:implementation-of-observability-using-opentelemetry-in-sap-btp":{"href":"/content/implementation-of-observability-using-opentelemetry-in-sap-btp","name":"Implementation of Observability using OpenTelemetry in SAP BTP","kind":"blog","short":"OpenTelemetry tracing across BTP apps and non-SAP services","line":"Tracing across a landscape rather than inside one service — BTP applications, integrations, workflows and automations that also call non-SAP microservices the customer runs. That span is where correlation stops being a nice-to-have, and it is the half @cap-js/telemetry's automatic instrumentation does not reach on its own.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Deepankar, published 2025-02-05"},"content:implementing-b2b-advisory-in-sap-integration-suite-for-custom-xml-edifact-scenar":{"href":"/content/implementing-b2b-advisory-in-sap-integration-suite-for-custom-xml-edifact-scenar","name":"Implementing B2B Advisory in SAP Integration Suite for Custom XML EDIFACT Scenario Part - 3","kind":"blog","short":"Inbound EDIFACT-to-IDoc scenario on Trading Partner Management","line":"Builds the inbound side of a custom EDIFACT-to-IDoc scenario on Trading Partner Management: an iFlow picks a file from SFTP and sets headers for adapter type, document standard, namespace, version and sender and receiver IDs, and a second iFlow assembles them into the agreement's plain partner ID and matches it in the Partner Directory. A Groovy script then calls PartnerDirectoryService.getParameter to read a partner's custom activity parameters and general value-mapping data stored under the agreement, so dynamic field mapping comes from the agreement rather than a flow per partner. Third of a series on setting up trading partner agreements in SAP Integration Suite, after the TPM foundation and the agreement itself in parts 1 and 2.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"amysh95, published 2026-03-10"},"content:implementing-custom-audit-logging-in-cap-applications":{"href":"/content/implementing-custom-audit-logging-in-cap-applications","name":"Implementing Custom Audit Logging in SAP CAP Applications","kind":"blog","short":"Custom audit log events in CAP beyond the annotations","line":"Where the annotations stop. CAP logs personal-data operations automatically once a model is annotated; this is about the events that are not that — an unauthorised access attempt, a business action somebody wants a trail for — and what writing those yourself involves.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"gopalanand, published 2025-10-09"},"content:implementing-dynamic-subaccount-based-routing-in-sap-cap":{"href":"/content/implementing-dynamic-subaccount-based-routing-in-sap-cap","name":"Implementing Dynamic Subaccount-Based Routing in SAP CAP with SAP BTP Destinations","kind":"blog","short":"Runtime destination routing by subaccount in CAP","line":"Why environment variables are the wrong place for backend endpoints in a CAP application, and what replaces them: cockpit destinations resolved at runtime, with the subaccount or instance identified as the request is handled. The argument is about redeployment — an endpoint kept in the environment means a deploy every time it moves — and the shape it produces is one codebase serving several landscapes without a build per landscape.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Dnyaneshwar Salve, published 2026-03-18"},"content:implementing-event-driven-architecture-in-cap-java-using-sap-event-mesh":{"href":"/content/implementing-event-driven-architecture-in-cap-java-using-sap-event-mesh","name":"Implementing Event-Driven Architecture in CAP Java using SAP Event Mesh","kind":"blog","short":"Publishing and consuming SAP Event Mesh events in CAP Java","line":"Publish and consume from the Java stack, which most of the Event Mesh writing on the community does not cover. The MTA declaration and the credentials come first, then the emit and the handler, then the two sections that make it worth keeping: error handling with retries, and securing the events with OAuth.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Soumya-Pirlamarla, published 2025-11-26"},"content:importing-an-external-data-model-using-cds-graphical-modeler-for-visual-studio-c":{"href":"/content/importing-an-external-data-model-using-cds-graphical-modeler-for-visual-studio-c","name":"Importing an external data model using CDS Graphical Modeler for Visual Studio Code","kind":"blog","short":"Importing an external OData model in the CDS Graphical Modeler","line":"Walks through the CDS Graphical Modeler for Visual Studio Code: creating a \"Customers\" entity, importing an external OData model from an edmx file into the CDS model, and drawing a managed association from the new entity to an entity from the imported namespace. The import happens through the modeler's GUI rather than the cds import command, and the imported edmx becomes a CDS file the modeler can open directly.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Xiao-fei_Song, published 2022-05-09"},"content:importing-external-edmx-files-using-the-cds-graphical-modeler":{"href":"/content/importing-external-edmx-files-using-the-cds-graphical-modeler","name":"Importing external edmx files to your CAP project using the CDS Graphical Modeler","kind":"blog","short":"Importing an API hub EDMX through the CDS Graphical Modeler","line":"An EDMX downloaded from the API hub — API_BUSINESS_PARTNER in the example — imported into the CDS model and its entities exposed as projections, done through the graphical modeller rather than cds import. Barely a page long.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Xiao-fei_Song, published 2021-05-19"},"content:importing-sap-cds-common-cds-using-the-cds-graphical-modeler":{"href":"/content/importing-sap-cds-common-cds-using-the-cds-graphical-modeler","name":"Importing @sap/cds common.cds to your CAP project using the CDS Graphical Modeler","kind":"blog","short":"Importing @sap/cds common.cds through the CDS Graphical Modeler","line":"Pulling the common aspects and code lists from @sap/cds into a model through the modeller, so the reuse types appear in the diagram rather than only in the file.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Xiao-fei_Song, published 2021-05-06"},"content:improved-search-performance-in-sap-btp-core-sap-cloud-application-programming-mo":{"href":"/content/improved-search-performance-in-sap-btp-core-sap-cloud-application-programming-mo","name":"Improved Search Performance in SAP BTP Core, SAP Cloud Application Programming Model, Node.js Runtime","kind":"blog","short":"@cds.search and search performance in CAP Node.js","line":"Explains CDS version 5's @cds.search annotation, which lets a service declare which elements a search query covers, and states that only String-typed elements are searched by default so the generated SQL stays simple. Covers two further changes to @sap/cds's Node.js runtime: metadata about which elements are searchable is now cached, and search over localized text can resolve at query time instead of through a compiled view, avoiding a coalesce function that blocks filter push-down on SAP HANA. Also describes an experimental toggle, cds.env.features.optimized_search, that lets the runtime choose the CONTAINS predicate over LIKE for large data sets.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2021-08-18"},"content:improving-exception-handling-using-generative-ai-in-sap-cloud-integration-sap-ci":{"href":"/content/improving-exception-handling-using-generative-ai-in-sap-cloud-integration-sap-ci","name":"Improving Exception Handling using Generative AI in SAP Cloud Integration (SAP CI/CPI)","kind":"blog","short":"Explaining Cloud Integration exceptions with Google Gemini","line":"Wires an Exception Subprocess in Cloud Integration to send a failed iFlow's caught exception text to Google Gemini's generateContent endpoint over the HTTP adapter, then parses the response in Groovy for a user-friendly error message, the likely causes, the steps to try and an HTTP status code to return to the sender. A Content Modifier holds the API key and the prompt as externalised properties, which the post says is what lets another model be put in their place, and a closing Groovy script writes the extracted fields to custom headers and log attachments and rebuilds them as an XML error response. The exception-subprocess wiring is given step by step and so is the Gemini call with its request format, which is why the piece sits on integration flows and on LLM integration.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"AdarshRao, published 2025-07-20"},"content:information-map-introduction-series-graph-in-sap-integration-suite":{"href":"/content/information-map-introduction-series-graph-in-sap-integration-suite","name":"Information Map – Introduction Series: Graph in SAP Integration Suite","kind":"series","short":"Introduction series on Graph in SAP Integration Suite","line":"Introduces Graph, an enhancement to API Management within SAP Integration Suite that gives developers a single API onto an organisation's business systems, modelled as one semantically connected business data graph, later renamed API Composition. Splits the work between an administrator, who enables SAP BTP destinations to the backend systems and builds the business data graph, and a developer, who explores it in the Graph Navigator tool and builds an application against the resulting Graph API.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-02-21"},"content:insights-of-cloud-sdk-cap-xsuaa-ssh-and-other-btp-topics-from-2021":{"href":"/content/insights-of-cloud-sdk-cap-xsuaa-ssh-and-other-btp-topics-from-2021","name":"Insights of Cloud SDK, CAP, XSUAA, SSH and other BTP topics from 2021","kind":"blog","short":"2021 review of Cloud SDK, CAP, XSUAA and other BTP topics","line":"A year in review, and one section in it is the reason it is here: \"CAP isn't the solution for everything\" — the author's point being that a pure UI5 or Fiori application does not need a CAP service wrapped around it, and that an approuter or the HTML5 Application Repository may be the better answer. The XSUAA section is a complaint about complexity rather than a guide, which is also worth having on the record.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"dr_vup, published 2021-12-30"},"content:instance-sharing-sap-cloud-logging":{"href":"/content/instance-sharing-sap-cloud-logging","name":"Instance Sharing - SAP Cloud Logging","kind":"blog","short":"Sharing one SAP Cloud Logging instance across spaces and regions","line":"Explains how to share one SAP Cloud Logging instance across Cloud Foundry spaces, subaccounts and regions instead of provisioning one per space, contrasting built-in platform sharing, where credentials are transferred automatically but the scope stays narrow, within a single subaccount in the post's own example, with reusing a service key through a Cloud Foundry User-Provided Service, which applies across regions, subaccounts and environments but leaves credential transport and rotation to the customer. Walks through a cf share-service example and the cost, legal and ingestion-throughput tradeoffs against dedicated instances.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Hariharan-Gandhi, published 2025-08-13"},"content:integrate-cap-as-outbound-channel-for-sap-document-ai":{"href":"/content/integrate-cap-as-outbound-channel-for-sap-document-ai","name":"Integrate CAP application as outbound channel for SAP Document AI","kind":"blog","short":"CAP endpoint receiving SAP Document AI callbacks","line":"Document AI will call you back when extraction finishes, and the callback is where this goes wrong: the CAP application has to accept an unauthenticated POST from outside without dropping CSRF protection for everything else. The answer is a middleware hooked into the CAP bootstrap, and the post spends its length on the token lifecycle rather than on the extraction.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"sdeissenboeck, published 2026-04-22"},"content:integrate-document-information-extraction-into-ui5-application":{"href":"/content/integrate-document-information-extraction-into-ui5-application","name":"Integrate Document Information Extraction into UI5 application","kind":"blog","short":"Document Information Extraction from a UI5 application","line":"Uploading an invoice from a UI5 application and getting the extracted fields back on screen, with a destination pointing at the Document Information Extraction API and a Refresh button polling until the job finishes. The polling is the honest part: extraction is asynchronous, and the post does not pretend otherwise. From 2022, so the service has since been renamed and the API moved, but the shape — upload, poll, map the result — is the shape it still is.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2022-05-31"},"content:integrate-sap-business-technology-platform-audit-logs-with-ibm-security-qradar":{"href":"/content/integrate-sap-business-technology-platform-audit-logs-with-ibm-security-qradar","name":"Integrate SAP Business Technology Platform audit logs with IBM Security QRadar","kind":"blog","short":"SAP Audit Log entries pulled into IBM Security QRadar","line":"Walks through pulling entries from the SAP Audit Log service for a Cloud Foundry subaccount, via its retrieval API and a service key downloaded from the SAP Authorization and Trust Management service, into IBM Security QRadar as a Universal Cloud REST API log source. A sample audit event, a data read event under audit.data-access, drives a custom QRadar DSM mapping event ID and category, then the walkthrough deletes a user from a Kyma role collection and shows the matching audit logging entry arrive in QRadar as an offense.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"TusharTrivedi12, published 2024-01-03"},"content:integrating-a-custom-ai-model-into-cap-using-ai-launchpad":{"href":"/content/integrating-a-custom-ai-model-into-cap-using-ai-launchpad","name":"Integrating a Custom AI Model into SAP CAP Using AI Launchpad","kind":"blog","short":"Custom AI model on AI Core called from CAP via AI Launchpad","line":"Your own model rather than a hosted one: deployed to AI Core, made callable through AI Launchpad, then reached from CAP. The case a lot of companies ask about and few posts cover.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"egeAksoyek, published 2026-03-20"},"content:integrating-s4hana-invoicing-with-ksef-using-event-mesh-and-cap":{"href":"/content/integrating-s4hana-invoicing-with-ksef-using-event-mesh-and-cap","name":"Integrating SAP S/4HANA Invoicing with KSeF Using SAP Event Mesh and CAP","kind":"blog","short":"S/4HANA invoices to KSeF through Event Mesh and CAP","line":"A concrete regulatory deadline rather than a demo topic: every Polish invoice has to pass through KSeF, the national e-invoice platform, and this proposes the route — S/4HANA business events onto Event Mesh, a CAP application consuming them and talking to KSeF. Short, and offered as an example to argue with.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Yahor, published 2024-08-29"},"content:integrating-sap-cloud-identity-services-identity-authentication-ias-with-sap-aud":{"href":"/content/integrating-sap-cloud-identity-services-identity-authentication-ias-with-sap-aud","name":"Integrating SAP Cloud Identity Services (Identity Authentication - IAS) with SAP Audit Log Viewer","kind":"blog","short":"Identity Authentication audit logs in the SAP Audit Log Viewer","line":"Walks through wiring an Identity Authentication tenant of Cloud Identity Services into the SAP Audit Log service on SAP BTP, Cloud Foundry: from the tenant's Monitoring & Reporting tile, adding the target BTP subaccount's tenant ID and subdomain ties the two together, and after a 15-20 minute wait the resulting Audit Log Viewer link surfaces logs of personal-data changes and of successful and failed authentications. Logs are then filtered by date and keyword, each entry carrying its event category, event and object type, timestamp, and the user who performed the action.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Yogananda, published 2025-03-23"},"content:integrating-sap-cpi-with-microsoft-sharepoint-part-2-creating-an-api-to-upload-f":{"href":"/content/integrating-sap-cpi-with-microsoft-sharepoint-part-2-creating-an-api-to-upload-f","name":"Integrating SAP CPI with Microsoft SharePoint: Part 2- Creating an API to Upload Files to SharePoint","kind":"blog","short":"Cloud Integration API uploading files to SharePoint, part 2","line":"Part two of a three-part series builds a custom HTTP API in Cloud Integration: an HTTP adapter receives the upload, an exchange property derives a folder path from header values, and the SharePoint receiver adapter writes the file with OAuth2 authorization code authentication. It also covers exposing that flow through API Management and enabling streaming so larger files bypass its default 10 MB payload limit.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"siddhartha_routh, published 2024-11-05"},"content:integrating-sap-document-information-extraction-with-cap":{"href":"/content/integrating-sap-document-information-extraction-with-cap","name":"Integrating SAP Document Information Extraction (Document AI) with SAP CAP – Step by Step","kind":"blog","short":"Document Information Extraction called from a CAP service","line":"The forward direction, in full: a PDF or scan arriving at a CAP service, sent to Document Information Extraction, and the fields coming back into the model. Long, and step-by-step in the literal sense — the service binding and the request shapes are all written out.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"furkan5, published 2025-10-09"},"content:integrating-using-google-cloud-storage-adapter-gcp-authentication-adapter-config":{"href":"/content/integrating-using-google-cloud-storage-adapter-gcp-authentication-adapter-config","name":"Integrating Using Google Cloud Storage Adapter (GCP Authentication & adapter config)","kind":"blog","short":"Google Cloud Storage adapter setup in SAP Integration Suite","line":"Walks through connecting SAP Integration Suite's Google Cloud Storage adapter to a bucket: creating a GCP service account with the Storage Object Admin role, generating its JSON or P12 key, converting it into a key-pair alias, and using that alias and the service account email in the adapter's authentication. It covers configuring the receiver adapter's upload operation (directory, object name, content type, and override, ignore or fail handling for an existing file) and the sender adapter's read, including post-processing to archive, delete or keep the object after an iFlow fetches it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"MirunaliniV, published 2026-02-20"},"content:integration-suite-automating-email-alerts-for-failed-interfaces-in-sap-cpi":{"href":"/content/integration-suite-automating-email-alerts-for-failed-interfaces-in-sap-cpi","name":"Integration Suite: Automating Email Alerts for Failed Interfaces in SAP CPI","kind":"blog","short":"Email alerts for failed interfaces in Cloud Integration","line":"Walks through building a Cloud Integration iFlow on SAP Integration Suite that polls the Message Processing Logs OData V2 API for failed messages on a timer, groups them by interface with value mapping, and batches the results into one scheduled email per interface instead of an alert per failure. Covers routing recipients per interface, splitting a batch once it passes a configured record count, and excluding interfaces flagged with a custom status so they raise their own real-time alert outside the consolidated flow.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Daggolu_PremSai, published 2025-02-18"},"content:integration-suite-building-an-mcp-server-for-a-sap-ci-monitoring-assistant":{"href":"/content/integration-suite-building-an-mcp-server-for-a-sap-ci-monitoring-assistant","name":"Integration Suite: Building an MCP Server for a SAP CI Monitoring Assistant","kind":"blog","line":"A step-by-step walkthrough of building an MCP Server artifact on SAP Integration Suite's Integration Cell runtime that wraps the Cloud Integration OData Message Processing Logs API, so a client such as Claude Desktop or VS Code can query failed interfaces in natural language instead of clicking through Monitor. It covers importing an OpenAPI 3.0 specification so each operationId becomes a discoverable tool, selecting tools/resources/prompts, and wiring two separate OAuth service keys — one read-only credential the HTTPS adapter uses against the monitoring API, another the MCP client uses to reach the deployed endpoint. The server is deliberately read-only and ships with no rate limiting or audit logging, which the author flags as missing before any write operation or production use.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Daggolu_PremSai, published 2026-07-17"},"content:integration-suite-mcp-http-configuration":{"href":"/content/integration-suite-mcp-http-configuration","name":"Configure an MCP Server Created from an HTTP Endpoint","kind":"doc","short":"Configuring MCP servers created from HTTP endpoints in API Management","line":"Documents configuring API Management’s HTTP-source MCP server tools, resources, prompts and policies. Resources are selected from GET operations and have URI templates/content types; prompts define User/Assistant messages with optional arguments, alongside MCP policy configuration.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:integration-suite-mcp-server":{"href":"/content/integration-suite-mcp-server","name":"MCP Server — SAP Integration Suite","kind":"doc","short":"SAP documentation of the MCP Server artifact in Integration Suite","line":"SAP's own page for the MCP Server artifact in SAP Integration Suite, and where the gateway that runs it is described: MCP clients and API clients reach the same backends through two gateways that share security, traffic management and multi-protocol connectivity. Sets out the three primitives a server may expose — tools derived from API operations with an input and output schema, resources addressed by URI for context rather than action, and prompts as reusable interaction patterns. Says availability depends on the Integration Suite service plan, and points at the three creation paths as separate pages.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:integration-tests-in-a-cloud-foundry-java-app-using-cap":{"href":"/content/integration-tests-in-a-cloud-foundry-java-app-using-cap","name":"Integration Tests in a Cloud Foundry Java App using SAP Cloud Application Programming Model","kind":"blog","short":"Integration tests for a CAP Java app on Cloud Foundry","line":"Integration rather than unit tests, and from 2020 — the earliest testing entry here, and a reminder of what had to be assembled by hand before the framework had an answer.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"former_member428487, published 2020-02-23"},"content:intelligent-error-handling-in-sap-cpi-using-ai-adapter":{"href":"/content/intelligent-error-handling-in-sap-cpi-using-ai-adapter","name":"Intelligent Error Handling in SAP CPI Using AI Adapter","kind":"blog","short":"AI Adapter summarising Cloud Integration errors","line":"Adds an AI Receiver Adapter to an Exception Subprocess in Cloud Integration, so a failed iFlow sends its captured exception text to an LLM over a chat-completions endpoint and gets back an error summary, cause and resolution for the sender. The walkthrough is concrete about the flow's own mechanics — Security Material for the API key, the adapter's address and request body, a Content Modifier to extract and return the response — which is why it explains Integration flows rather than only the AI feature riding on top of them.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Jayesh8909, published 2026-05-21"},"content:introducing-arc-1-a-secure-adt-mcp-server-for-enterprise-sap-development":{"href":"/content/introducing-arc-1-a-secure-adt-mcp-server-for-enterprise-sap-development","name":"Introducing ARC-1: A Secure ADT MCP Server for Enterprise SAP Development","kind":"blog","short":"Centrally deployed ADT MCP server with security controls","line":"Why ARC-1 exists beside earlier ADT MCP servers such as vibing-steampunk, fr0ster/mcp-abap-adt and dassian-adt: one centrally deployed instance per SAP system instead of a server on each developer laptop, with the MCP client to ARC-1 hop and the ARC-1 to SAP hop authenticated separately. It sets out the restrictive defaults (read-only, no free SQL or named table preview, writes confined to $TMP), the layering in which ARC-1's configuration, the user's role and SAP's own authorisation must all allow an action, Principal Propagation so SAP sees the real user, and audit events to the SAP Audit Log service; that is tool governance as much as agent access to your code. It leaves the BTP setup to the next part, and places ARC-1 beside SAP's ADT MCP Server, which SAP's configuration guide describes as a local HTTP server hosted by the IDE, and beside SAP API Policy 4.2026a, where ARC-1's stated position is to stay close to documented ADT behaviour and ask SAP before production use.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-04-27"},"content:introducing-eslint-plugin-better-cap-config":{"href":"/content/introducing-eslint-plugin-better-cap-config","name":"Introducing eslint-plugin-better-cap-config an ESLint plugin to improve CAP configuration","kind":"blog","short":"ESLint plugin flagging deprecated CAP configuration","line":"The author's own announcement, and precise about scope: today it catches deprecated key/value entries in CAP's JSON configuration, and the ambition is that it grows into best practices, suggestions and autofixes the way any ESLint plugin does. The implementation detail worth knowing is that it uses modern ESLint's JSON language support rather than a generic parser, which is what makes linting a configuration file rather than source code work at all.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-09-08"},"content:introducing-open-rfc-calling-sap-rfc-from-nodejs-without-the-sdk":{"href":"/content/introducing-open-rfc-calling-sap-rfc-from-nodejs-without-the-sdk","name":"Introducing open-rfc: Calling SAP RFC from Node.js Without the SDK","kind":"blog","short":"Node.js RFC client without the SAP NetWeaver RFC SDK","line":"open-rfc is a TypeScript and JavaScript RFC client for Node.js with no runtime dependencies and no SAP NetWeaver RFC SDK, written after SAP archived node-rfc and PyRFC and while the connector below @sap/cds-rfc needs an S-user, an SAP Build Code licence and a private registry. The history of RFC connectivity from Node.js is the first half; the second shows the package on its own, as an npm alias for node-rfc, and through an npm override as the connector below an unchanged @sap/cds-rfc. The 0.2.3 beta stops at direct application-server connections with password authentication and classic Unicode RFC: no message-server load balancing, SNC, tRFC, qRFC, bgRFC or server mode.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-08-10"},"content:introducing-scim-api-for-sap-sales-service-cloud-v2-seamless-user-sync-between-s":{"href":"/content/introducing-scim-api-for-sap-sales-service-cloud-v2-seamless-user-sync-between-s","name":"🚀 Introducing SCIM API for SAP Sales & Service Cloud v2: Seamless User Sync between Source & Target","kind":"blog","short":"SCIM API for user sync into Sales and Service Cloud v2","line":"SAP Sales & Service Cloud v2's SCIM API is now generally available by default, having moved out from behind a feature toggle before 1 November 2025. It runs on SAP Identity Provisioning Service, which pushes user records from SAP Identity Authentication Service into the target system over SCIM 2.0's GET/PUT/PATCH /scim/v2/Users endpoints, gated on an employee record already replicated from S/4HANA, SuccessFactors or ERP. This version adds PATCH operations, provisioning of application-specific groups as business roles, and cursor-based pagination beside the existing startIndex/count scheme, and no longer needs SAP Cloud Integration in the path.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Yogananda, published 2025-08-30"},"content:introducing-the-cloud-application-programming-model-cap":{"href":"/content/introducing-the-cloud-application-programming-model-cap","name":"Introducing the Cloud Application Programming Model (CAP)","kind":"blog","short":"SAP's general-availability announcement for CAP","line":"SAP's own general-availability announcement for CAP, laid out as a Golden Path: a data model and service defined in CDS gets a generated service provider that serves metadata publishing and CRUD requests, fills in primary keys and audit data, and writes trace and audit logs without application code. The same CDS model carries annotations that translate to OData vocabularies and generate a Fiori elements app skeleton, which is how Fiori annotations work in CAP.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Daniel7, published 2018-06-05"},"content:introducing-the-mcp-server-for-cap":{"href":"/content/introducing-the-mcp-server-for-cap","name":"Boost your CAP Development with AI: Introducing the MCP Server for CAP","kind":"blog","short":"MCP server giving coding agents CAP project context","line":"The announcement of the development-tool half of the two things called MCP here: a server that gives an agent context about the project in front of it and relevant CAP examples, so Claude Code or Copilot steers better. Names the agents it was tried with, which is more than most announcements do.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-09-03"},"content:invoke-openapi-documented-apis-remotely-with-cap":{"href":"/content/invoke-openapi-documented-apis-remotely-with-cap","name":"Invoke OpenAPI-documented APIs remotely with SAP Cloud Application Programming Model","kind":"blog","short":"Consuming OpenAPI-described APIs from CAP","line":"The other direction: consuming an API described by an OpenAPI document from CAP, rather than publishing one. Worth pairing with the plugin entries here, which all serve the outbound half.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"wittro, published 2022-08-30"},"content:invoking-business-agent-foundation-agents-from-abap-a-step-by-step-guide":{"href":"/content/invoking-business-agent-foundation-agents-from-abap-a-step-by-step-guide","name":"Invoking Business Agent Foundation Agents from ABAP: A Step-by-Step Guide","kind":"blog","short":"Calling Business Agent Foundation agents from on-premise ABAP","line":"Walks through calling a Business Agent Foundation agent's chat endpoint from an on-premise ABAP report: an OAuth 2.0 client profile configured in SE80/SOAUTH2_CLIENT with client-credentials grant against the service key, an HTTP (type G) RFC destination in SM59 bound to that profile, and an ABAP report using CL_HTTP_CLIENT=>CREATE_BY_DESTINATION to POST a JSON message to the agent's sendMessage endpoint and extract the reply by splitting the response string. The destination and client code are the same shape as any outbound REST call from ABAP; nothing here is specific to the agent service beyond the request body and URL.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"tanmay_0117, published 2025-11-26"},"content:ips-provisioning-to-abap-cloud-developer-trial":{"href":"/content/ips-provisioning-to-abap-cloud-developer-trial","name":"IPS provisioning to ABAP Cloud Developer Trial","kind":"blog","short":"Identity Provisioning into an ABAP Cloud Developer Trial","line":"Walks through provisioning users and groups from SAP Cloud Identity Services' Identity Provisioning into an ABAP Cloud Developer Trial system on Docker, reached through a Cloud Connector and an RFC destination in the BTP subaccount. The author's lessons learned tie the setup to the identity service's own constraints: the subaccount needs a Connectivity Plan and must share the Cloud Identity Service tenant's region, and on the ABAP side an IAS group lands as a Business Role rather than in SUGR, with the Login Name mapped to SU01's user field.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Laurence, published 2025-09-04"},"content:is-it-time-to-switch-to-odata-v4":{"href":"/content/is-it-time-to-switch-to-odata-v4","name":"Is it time to switch to OData v4?","kind":"blog","short":"Case for OData v4 on new projects with its caveats","line":"A recommendation with its caveat attached: use v4 on new projects, and be aware it is less mature than v2 in terms of what the SAP stack around it supports. Written after using it on a real extension project, which is what makes the caveat credible.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"MikeDoyle, published 2021-02-05"},"content:iso-content-for-common-cap-types":{"href":"/content/iso-content-for-common-cap-types","name":"ISO content for common CAP types","kind":"blog","short":"npm package with ISO content for CAP common types","line":"The npm package that supplies ISO-standard content — countries, languages, currencies, timezones — for CAP's common types, and how it works underneath. The author flags the length and the reason for it up front, having followed the mechanism further than the question required, which is what makes it worth reading rather than a package announcement.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-03-14"},"content:joule-for-developers-with-sap-btp-abap-environment-setup-guide":{"href":"/content/joule-for-developers-with-sap-btp-abap-environment-setup-guide","name":"Joule for Developers with SAP BTP ABAP Environment-Setup Guide","kind":"blog","line":"A step-by-step setup guide for SAP Joule for Developers, ABAP AI capabilities under its Q2 2026 limited-promotion licence: creating a BTP subaccount, adding ABAP environment and HANA compute-unit entitlements, enabling Cloud Foundry, configuring trust to Cloud Identity Services, creating the ABAP environment instance and assigning the developer role, then pointing ABAP Development Tools for Eclipse at the new system. It walks through the resulting Joule chat, predictive code completion, explain, ABAP Unit and CDS test-generation features inside a newly created ABAP Cloud project.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"YASHLAL, published 2025-09-11"},"content:joule-studio-cap":{"href":"/content/joule-studio-cap","name":"Joule Studioがリリースされたので早速CAPアプリを自然言語で操作するカスタムスキルを構築してみた","kind":"blog","line":"A walkthrough of building a custom Joule Studio skill on a CAP bookshop app: cds add sample and cds add mta scaffold the project and its deployment descriptor, cds compile srv/ --to xsuaa generates the role template behind the @requires: 'admin' check on AdminService from the SAP Authorization and Trust Management service (XSUAA), and mbt build packages the app for deployment to the SAP BTP, Cloud Foundry Runtime. The skill reaches the deployed OData API through the SAP Destination service, configured with the OAuth2 Client Credentials grant using the client ID, secret and token endpoint from the app's XSUAA service key, so Joule answers a natural-language question about a book by its ID.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"takayuki_tanaka, published 2025-07-30"},"content:keep-the-core-clean-with-rizing-cdsx":{"href":"/content/keep-the-core-clean-with-rizing-cdsx","name":"Keep the Core Clean with Rizing CDSX","kind":"blog","line":"Jhodel Cailan recounts hitting a wall where neither RAP nor CAP supported more than a non-draft OData V2 service for the side-by-side extensibility scenario he wanted, and built Rizing CDSX (@rizing/cds-extension) to add draft handling over a shadow persistence entity that mirrors a remote, cds import-ed service. He walks through the @cdsx.api annotation that proxies the entity, bootstrapping the module from cds.on('bootstrap') in server.js, and testing the result through a generated Fiori elements app backed by an OData V4 draft service.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-05-07"},"content:kyma-evolution-transforming-kyma-into-a-tailor-made-saas-platform":{"href":"/content/kyma-evolution-transforming-kyma-into-a-tailor-made-saas-platform","name":"Kyma Evolution: Transforming SAP Kyma into a tailor-made SaaS Platform for sbs extensions","kind":"blog","short":"Shaping Kyma into a SaaS platform for CAP extensions","line":"Written by an extensibility expert building against Cloud ERP under clean core, and it treats Kyma as something to shape rather than to adopt — what has to be added to the runtime before it is a SaaS platform for CAP extensions. The Partner Reference Application post is the hands-on sequel.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ChristianWeiss, published 2026-02-03"},"content:kyma-integration-with-sap-cloud-logging-part-1-introduction-and-shipping-logs":{"href":"/content/kyma-integration-with-sap-cloud-logging-part-1-introduction-and-shipping-logs","name":"Kyma Integration with SAP Cloud Logging. Part 1: Introduction and shipping Logs","kind":"blog","short":"Shipping Kyma logs to SAP Cloud Logging, part 1","line":"Provisions an SAP Cloud Logging instance for SAP BTP, Kyma runtime and ships application and Istio access logs to it through Kyma's Telemetry module, using LogPipeline custom resources that name the source namespaces and the target instance's credentials. Walks through the kubectl commands and example LogPipeline configuration for both an application's own logs and Istio's access logs, then how to browse the result in OpenSearch and the built-in Four Golden Signals dashboard. First of a three-part series; traces and metrics are left to the posts that follow.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"gabbi, published 2024-03-25"},"content:kyma-integration-with-sap-cloud-logging-part-2-let-s-ship-some-traces":{"href":"/content/kyma-integration-with-sap-cloud-logging-part-2-let-s-ship-some-traces","name":"Kyma Integration with SAP Cloud Logging. Part 2: Let's ship some traces","kind":"blog","short":"Shipping Kyma traces to SAP Cloud Logging, part 2","line":"Walks through shipping traces from SAP BTP, Kyma runtime to SAP Cloud Logging: a Kyma TracePipeline resource pointed at the service binding's OTLP endpoint, an Istio Telemetry resource that sets the mesh-wide sampling percentage, and Cloud Logging's Trace Analytics view to filter the resulting spans by service name or request ID. For a multitenant JavaScript CAP application it instruments with @cap-js/telemetry, naming the npm packages to add, and covers Cloud Native Buildpacks and manual Istio header propagation for services outside CAP.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"gabbi, published 2024-04-19"},"content:leanix-adapter-for-sap-integration-suite":{"href":"/content/leanix-adapter-for-sap-integration-suite","name":"LeanIX Adapter for SAP Integration Suite","kind":"blog","short":"LeanIX Adapter configured in Cloud Integration","line":"A walkthrough configures the LeanIX Adapter for SAP Integration Suite's Cloud Integration runtime, wiring its Receiver Adapter with an Address, API Token Alias and LeanIX OAuth authentication inside an integration flow. It demonstrates a REST scenario that creates a FactSheet and fetches one by ID, and a GraphQL scenario that updates a FactSheet through the adapter's Advanced Query operation.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Swati_Singh1, published 2025-04-29"},"content:lessons-learned-fetching-learning-history-from-successfactors-lms-using-odata-ap":{"href":"/content/lessons-learned-fetching-learning-history-from-successfactors-lms-using-odata-ap","name":"Lessons Learned: Fetching Learning History from SuccessFactors LMS Using OData APIs","kind":"blog","short":"SuccessFactors LMS Learning History through its OData V4 API","line":"A walkthrough of pulling SuccessFactors LMS Learning History records through its OData V4 API: the mandatory criteria/targetUserID filter, the errors that appear without it, and the $metadata endpoint used to confirm entity names, since the API returns one student at a time and never in bulk. Builds the integration flow in Cloud Integration as a Groovy script that loops over a list of student IDs, calls the API with a bearer token per student and aggregates the JSON responses into one payload.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"aayushaggarwal, published 2025-09-17"},"content:lets-deep-dive-into-capm-and-hana-cloud":{"href":"/content/lets-deep-dive-into-capm-and-hana-cloud","name":"Lets Deep dive into CAPM and HANA Cloud --> HANACap","kind":"blog","short":"Working notes on CAPM with HANA Cloud","line":"Short, and framed as what the author does day to day on BTP rather than as a tutorial: where CAPM meets HANA Cloud and which pieces have to agree.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"shivamshukla12, published 2023-07-16"},"content:major-updates-to-the-attachments-plugin":{"href":"/content/major-updates-to-the-attachments-plugin","name":"Major updates to the Attachments plugin – multi-cloud support, malware scanning and more","kind":"blog","short":"Multi-cloud storage and malware scanning in the Attachments plugin","line":"Multi-cloud storage and malware scanning added to the official plugin, framed through CAP's Calesi pattern — the argument being that a service interface is what lets the storage underneath change without the application noticing. The post that a triage bug hid: \"attachment\" had stopped matching \"Attachments\".","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-12-02"},"content:making-cap-development-easier-with-storyboard-in-bas":{"href":"/content/making-cap-development-easier-with-storyboard-in-bas","name":"Making CAP Application Development Easier and Faster with the Help of Storyboard in SAP Business Application Studio","kind":"blog","short":"Storyboard in BAS across a CAP project","line":"The Storyboard from the other side — someone who came across it while learning the high-productivity tools, rather than someone who shipped it. It follows the whole arc a CAP project takes through the tool: entities, relationships, services, sample data, a UI, roles, and external resources, each as a thing the diagram can add rather than a file you open.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Aryan_Raj_Sinha, published 2023-09-20"},"content:making-the-case-for-enhanced-rest-adapter-in-sap-integration-suite":{"href":"/content/making-the-case-for-enhanced-rest-adapter-in-sap-integration-suite","name":"Making the Case for Enhanced REST Adapter in SAP Integration Suite","kind":"blog","short":"Authentication gaps in Integration Suite's HTTP adapter","line":"Catalogues what SAP Integration Suite's native HTTP adapter supports for authentication (Basic, OAuth 2.0 client credentials and client certificates on the sender; OAuth 2.0 client credentials and SAML bearer assertion on the receiver) and for error handling (retry on HTTP failure only, with no pattern-based retry, failure queues or dead-letter queues), and that it has no OpenAPI import or export. Three worked scenarios, FedEx shipment tracking, Avalara AvaTax and SAP Ariba's operational reporting API, name what that leaves to Groovy scripting: the other OAuth 2.0 flows, gzip and multipart payloads, and pagination that chains a nextPageToken by JSONPath, which is the case the piece makes for the third-party Advantco REST Adapter.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"peter_ha3, published 2025-07-14"},"content:making-the-ias-based-pkce-flow-great-again-mobile-first":{"href":"/content/making-the-ias-based-pkce-flow-great-again-mobile-first","name":"Mobile First - Making the SAP IAS-based Proof Key for Code Exchange (PKCE) great again! 🎉","kind":"blog","short":"PKCE flow against Identity Authentication for mobile clients","line":"Proof Key for Code Exchange against Identity Authentication, revisited by the author after an earlier post on the same subject — the flow that lets a mobile or single-page client authenticate without a secret it cannot keep. Sample repository under SAP-samples.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"martinfrick, published 2023-09-21"},"content:manage-dmq-messages-on-advanced-event-mesh-with-a-cap-application":{"href":"/content/manage-dmq-messages-on-advanced-event-mesh-with-a-cap-application","name":"How to use a CAP application to manage DMQ messages on SAP Advanced Event Mesh","kind":"blog","short":"CAP app quarantining dead message queue messages from AEM","line":"A CAP application built for the failure path rather than the happy one. Messages that land in a Dead Message Queue are deleted for good when their TTL expires, so this pulls them out first and holds them in quarantine, where a Fiori elements UI lets someone inspect a payload, correct it and reinject it. An operations tool, and a rare write-up of what to do after delivery has already failed.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"stefan-keuker, published 2025-12-31"},"content:managing-jms-queues-programmatically-with-the-new-sap-cloud-integration-jms-odat":{"href":"/content/managing-jms-queues-programmatically-with-the-new-sap-cloud-integration-jms-odat","name":"Managing JMS Queues Programmatically with the new SAP Cloud Integration JMS OData API","kind":"blog","short":"JMS OData API for managing Cloud Integration queues","line":"The new JMS OData API on Cloud Integration exposes MessagingQueues and MessagingMessages entities, letting a client list, inspect, retry and move JMS messages without opening the monitoring UI, from Cloud Integration 7.52.x on Cloud Foundry and 8.41 on the Edge Integration Cell runtime. It works through OAuth 2.0 client-credentials authentication against a Process Integration Runtime service instance, a fixed row cap with time-window slicing used in place of offset paging because queues change between requests, and a consistent OData error envelope for the codes the surface returns.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"MarcoKoch, published 2026-06-01"},"content:mastering-internal-actions-in-sap-rap-automatic-header-calculation-in-abap-cloud":{"href":"/content/mastering-internal-actions-in-sap-rap-automatic-header-calculation-in-abap-cloud","name":"Mastering Internal Actions in SAP RAP: Automatic Header Calculation in ABAP Cloud","kind":"blog","short":"RAP internal action recalculating an order header","line":"Walks through a sales-order BDEF where an item-level determination triggers a header-only internal action by EML in local mode, so a quantity or price change recalculates the order total and applies a 10% discount above $10,000 without a UI button or external OData call reaching the logic directly. Argues for an internal action over inline determination code on reusability and separation of concerns: a determination decides when logic runs, the action decides what runs, and marking it internal keeps Fiori Elements and external OData clients from invoking it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"sharathtm, published 2026-08-06"},"content:mcp-server-for-sap-incentive-management":{"href":"/content/mcp-server-for-sap-incentive-management","name":"MCP Server for SAP Incentive Management","kind":"blog","short":"Proof of concept MCP server for SAP Incentive Management","line":"A proof of concept putting SAP Incentive Management behind MCP so an agent can reach it, spanning the server, the backing APIs and SAP Advanced Workflow. The post opens with an unusually explicit disclaimer — personal capacity, no organisation's architecture or policies represented, and any real implementation needing customer and SAP review first — which is itself the useful part of reading it: it is a shape to think with, not a design to deploy.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-07-16"},"content:mcp-servers-are-the-new-z-tables":{"href":"/content/mcp-servers-are-the-new-z-tables","name":"MCP Servers are the New Z-Tables","kind":"blog","short":"How agents pick between overlapping MCP tools on a CAP service","line":"A single CAP service exposed as three overlapping MCP servers tools, queried by the same prompt nineteen times, returned the same tool every time — evidence, the author argues, that tool selection rests on the resemblance between a prompt and a tool's description rather than on any binding a where-used list could enumerate before retiring it. It contrasts that setup with @cap-js/mcp, which exposes a whole service as three generic tools instead of one per operation, and quotes the adapter's own beta documentation admitting no rate limiting, audit logging, input validation or approval workflow, and no use as a gateway to SAP Application APIs. From there it names four small Tool governance practices it has adopted: an owner recorded in the tool's own metadata, logging every invocation, deprecating inside the description, and exposing fewer tools.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-08-21"},"content:mcp-servers-on-sap-integration-suite-build-your-first-mcp-server-from-an-api":{"href":"/content/mcp-servers-on-sap-integration-suite-build-your-first-mcp-server-from-an-api","name":"MCP Servers on SAP Integration Suite : Build Your First MCP Server from an API","kind":"blog","short":"MCP server on Integration Suite from a managed S/4HANA API","line":"Walks through building an MCP server on SAP Integration Suite from an existing managed API — SAP S/4HANA's Purchase Order API — rather than from an HTTP endpoint or an RFC, which the same creation wizard supports but a later post in the series is left to cover. Selected API operations become MCP Tools with generated input and output schemas, the server inherits its Authentication policy from the source API, and a Process Integration Runtime service instance supplies the OAuth credentials an external client needs to invoke it. Ends by connecting the deployed server to Cline in VS Code and having it chain tool calls to answer a natural-language purchase-order query.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-07-15"},"content:media-handling-in-sap-capm-backend-and-frontend":{"href":"/content/media-handling-in-sap-capm-backend-and-frontend","name":"Media Handling in SAP CAPM – Backend and Frontend Implementation","kind":"blog","short":"Media handling in CAPM with a UI5 front end","line":"Files against a record with the front end included, which most of the attachments writing here leaves out — the entity that stores the content, the custom logic around it, and then the UI5 side that uploads and retrieves. End to end rather than one half.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-03-02"},"content:merge-multiple-pdf-forms-into-a-single-document-for-download-or-printing":{"href":"/content/merge-multiple-pdf-forms-into-a-single-document-for-download-or-printing","name":"Merge multiple PDF forms into a single document for download or printing.","kind":"blog","short":"Merging several Adobe Forms PDFs into one document","line":"Faced with bundling several Adobe-Forms-generated PDFs into one file, where FP_JOB_OPEN could not handle the parameters a bundled FP_GET_PDF_TABLE output needed and the forms themselves could not be changed, the author merges the individual PDFs at runtime with the CL_RSPO_PDF_MERGE class instead. Walks through opening the spool job with FP_JOB_OPEN, generating each form via its FP_FUNCTION_MODULE_NAME-resolved function module, adding each result's xstring to the merger with add_document, then calling merge_documents and converting the result for GUI_DOWNLOAD or printing.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"MiljanDjuric, published 2025-06-17"},"content:message-mapping-in-sap-integration-suite-custom-scripts-and-conditional-mapping":{"href":"/content/message-mapping-in-sap-integration-suite-custom-scripts-and-conditional-mapping","name":"Message Mapping in SAP Integration Suite - Custom Scripts and Conditional Mapping","kind":"blog","line":"Walks through two ways to extend a message mapping step in SAP Integration Suite's Cloud Integration: a custom Groovy function added in the Mapping Expression editor's Scripts section, and a graphical equals/if node pair built from the standard function library, each suited to logic the other cannot express cleanly. Shows the Simulate tool's Generate button building a test payload from the source structure, then editing individual field values to exercise both the true and false branch of a condition before deployment.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"jirifridrich, published 2026-04-03"},"content:messaging-system-for-odata-error-warning-and-information-messages":{"href":"/content/messaging-system-for-odata-error-warning-and-information-messages","name":"Messaging System for Transferring Error, Warning, and Information Messages from OData V4 Services to HTTP Client Applications","kind":"blog","short":"OData V4 messages from CAP to Fiori elements in draft","line":"Getting a message out of a CAP service and onto a Fiori elements object page in a draft scenario — errors, warnings and information, each of which the UI treats differently. Co-written with one of the people on the OData side, and it spends its length on the message container rather than on the handler that fills it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"arley-triana-morin, published 2022-08-11"},"content:microsoft-graph-api-read-and-extract-attachments-of-outlook-email-from-cloud-int":{"href":"/content/microsoft-graph-api-read-and-extract-attachments-of-outlook-email-from-cloud-int","name":"Microsoft GRAPH API - Read and extract attachments of Outlook email from Cloud Integration","kind":"blog","short":"Reading Outlook attachments via Microsoft Graph in Cloud Integration","line":"Builds an integration flow in Cloud Integration that authenticates to the Microsoft Graph API with an OAuth2 Client Credentials credential and an HTTP Receiver Adapter, then calls the Outlook inbox by MessageID to retrieve an email's attachment. A Groovy script using the pdfbox and fontbox libraries extracts the text from a PDF attachment, as an alternative to placing the attachment on SFTP unchanged or fetching the whole message with its attachment through the $value query.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ChaithraShanmugam, published 2025-12-09"},"content:microsoft-sentinel-for-sap-goes-agentless":{"href":"/content/microsoft-sentinel-for-sap-goes-agentless","name":"Microsoft Sentinel for SAP goes agentless","kind":"blog","short":"Agentless Microsoft Sentinel connector for SAP systems","line":"Explains how Microsoft Sentinel for SAP's new agentless data connector drops its Docker-based collector agent by reusing an existing SAP Cloud Connector setup together with SAP Integration Suite: on SAP NetWeaver 750 and later, a small set of RFC function modules must be reachable from Integration Suite, added as an RFC connection in the subaccount's Destinations maintenance view, with a user authorised to call them (RFC connectivity). It also covers calling the audit log API remotely, which on older releases needs SAP note 3054326 and a different integration-package configuration.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-12-17"},"content:migrate-your-code-with-ui5-linter-autofix-has-landed":{"href":"/content/migrate-your-code-with-ui5-linter-autofix-has-landed","name":"Migrate your code with UI5 linter – Autofix has landed","kind":"blog","short":"Autofix in UI5 linter v1.12.0 with ui5lint --fix","line":"UI5 linter v1.12.0 adds an initial autofix, reached with ui5lint --fix, and the post walks through it end to end: the tool first reports a deprecated global reference (sap.ui.model.json.JSONModel), then the fix rewrites it into the equivalent module import and local variable. This first version only handles that one class of deprecation — replacing deprecated globals with imports — with more fix types left for later releases tracked on the tool's GitHub roadmap.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-03-19"},"content:migrating-an-on-prem-xsa-cds3-solution-to-cds6-and-sqlite":{"href":"/content/migrating-an-on-prem-xsa-cds3-solution-to-cds6-and-sqlite","name":"How I migrated my on-prem xsa cds3+hana solution to cds6+sqlite","kind":"blog","short":"Migrating an XSA cds3 and HANA app to cds6 and SQLite","line":"Three major CDS versions and a database swap in one move, done to get an old on-premise XSA application running somewhere cheap. The repository is linked, and the interest is in what broke between cds3 and cds6 rather than in the destination.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"alex_myakinkii, published 2022-08-07"},"content:migrating-from-application-logging-service-to-cloud-logging":{"href":"/content/migrating-from-application-logging-service-to-cloud-logging","name":"Migrating from Application Logging Service to Cloud Logging","kind":"blog","short":"Moving from Application Logging to SAP Cloud Logging on Cloud Foundry","line":"Walks through migrating from SAP Application Logging service for SAP BTP to SAP Cloud Logging on Cloud Foundry: sizing instances against the two services' quota and retention differences, running both bound in parallel for a week so no logs are lost, adjusting the Java and Node.js logging libraries' custom-field configuration so entries reach both, setting up SAML sign-on through IAS, and deprovisioning the old instance once Cloud Logging is confirmed to receive everything. Superseded by a newer version of this post; the quota math, custom-field steps and deprovisioning sequence here still hold.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"bill_keyes, published 2023-12-19"},"content:migrating-from-asanwee-to-asaaemee-from-sap-event-mesh-to-sap-advanced-event-mes":{"href":"/content/migrating-from-asanwee-to-asaaemee-from-sap-event-mesh-to-sap-advanced-event-mes","name":"Migrating from ASANWEE to ASAAEMEE: From SAP Event Mesh to SAP Advanced Event Mesh","kind":"blog","short":"Switching from SAP Event Mesh to SAP Advanced Event Mesh","line":"A migration walkthrough for switching an SAP ERP or S/4HANA on-premise system from classic SAP Event Mesh to SAP Advanced Event Mesh: new RFC destinations to the broker's REST, handshake and token endpoints, trusting its certificate, activating the AEM business configuration set, and re-pointing the NetWeaver Add-On for Event Enablement's outbound object and dynamic topic mapping at the new instance. It assumes the Event Add-On for ERP (ASAAEMEE) is already installed and covers only the technical cut-over, not setting up event publishing from scratch.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Benedikt_Sprung, published 2026-02-13"},"content:migrating-your-cap-applications-from-web-ide-to-bas":{"href":"/content/migrating-your-cap-applications-from-web-ide-to-bas","name":"Migrating Your CAP Applications from SAP Web IDE to SAP Business Application Studio","kind":"blog","short":"Moving CAP projects from SAP Web IDE to Business Application Studio","line":"A migration checklist, and a reminder of how much of a CAP project used to be editor-specific: Web IDE configuration files to delete, a build to move to the Cloud MTA Build Tool, a CAP Java version to raise. Historical — Web IDE is gone — but it is the clearest list of what the tooling boundary used to include.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"liat_b, published 2020-07-09"},"content:migration-journey-from-mulesoft-to-sap-integration-suite-ci":{"href":"/content/migration-journey-from-mulesoft-to-sap-integration-suite-ci","name":"Migration Journey from MuleSoft to SAP Integration Suite (CI)","kind":"blog","short":"MuleSoft error handling mapped onto SAP Integration Suite","line":"Maps MuleSoft Anypoint's error handling onto SAP Integration Suite: the Global Error Handler and MuleSoft's built-in retries become Exception Subprocesses with scripted Groovy retry logic or JMS-based retry, since Cloud Integration has no automatic equivalent. MuleSoft's searchable logger text becomes Content Modifier headers and Groovy-scripted Message Log entries, correlated by application message ID and correlation ID for traceability across complex interfaces. The mapping is drawn from the author's own migration project across assessment, development and validation phases, and is explicitly flagged as not an SAP- or MuleSoft-approved design.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Shailaja, published 2025-09-21"},"content:mj-live-an-ai-cognitive-pipeline-on-cap-hana-and-solace":{"href":"/content/mj-live-an-ai-cognitive-pipeline-on-cap-hana-and-solace","name":"Michael Jackson: AI Cognitive Pipeline on SAP BTP, SAP CAP, ElevenLabs, Claude, HANA DB, Solace","kind":"blog","short":"AI pipeline on CAP, HANA and Solace analysing song references","line":"A pipeline that listens to a song, identifies the historical events it references, retrieves knowledge about each and builds an emotional arc across the whole track. Not an enterprise use case, and useful precisely for that: the plumbing — CAP, HANA, Solace, Claude, ElevenLabs — is doing something the vendor demos never ask of it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Shahid, published 2026-05-18"},"content:modernizing-rfc-bapi-based-integrations-for-a-clean-core-with-sap-integration-su":{"href":"/content/modernizing-rfc-bapi-based-integrations-for-a-clean-core-with-sap-integration-su","name":"Modernizing RFC/BAPI-based Integrations for a Clean Core with SAP Integration Suite","kind":"blog","short":"Three paths for RFC and BAPI integrations onto Integration Suite","line":"Walks a BAPI-based interface from SAP PO through three paths to SAP Integration Suite: lift-and-shift, which keeps the RFC connection to the ABAP system as-is and calls it through Integration Suite's RFC adapter; protocol modernization, which re-exposes the same BAPI as a SOAP web service; and clean core modernization, which replaces it with an SAP-managed API surfaced by the migration assessment report. Follows a BAPI_MATERIAL_AVAILABILITY interface through the first and third paths, showing the generated RFC-adapter iFlow against the OData API found for it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"arunmaarirajha_kv, published 2025-10-10"},"content:monitoring-cap-container-metrics-with-sap-cloud-logging-service":{"href":"/content/monitoring-cap-container-metrics-with-sap-cloud-logging-service","name":"SAP Cloud Logging Serviceでコンテナメトリクスを監視する","kind":"blog","short":"CAP Node.js container metrics in SAP Cloud Logging, in Japanese","line":"In Japanese. Container metrics for a CAP Node.js application into SAP Cloud Logging Service, and the reason it exists is that the obvious route does not apply: Spring Boot Actuator covers the Java side, and Node has no equivalent, so the author reaches for Telegraf instead. The procedure is deliberately independent of application logic — bind the instance, add a startup script and a config file — so it works against an application you already have.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"kyoneo, published 2024-03-26"},"content:moving-from-hub-gateway-to-direct-s-4hana-odata-v4-a-customized-reusable-rap-pro":{"href":"/content/moving-from-hub-gateway-to-direct-s-4hana-odata-v4-a-customized-reusable-rap-pro","name":"Moving from Hub Gateway to Direct S/4HANA OData V4: A Customized Reusable RAP Processing Framework","kind":"blog","short":"Reusable RAP query provider for direct S/4HANA OData V4","line":"A generic base class for RAP custom-entity query providers — one implementation of IF_RAP_QUERY_PROVIDER~SELECT, subclassed per entity — lets a service expose OData V4 directly from S/4HANA instead of through a separate Gateway Hub. The framework loads entity configuration, extracts the request context, fetches and transforms backend data into the target entity shape, and returns it through the RAP response object, with field mapping and conversion exits left for each subclass to fill in.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"AnslemArnolda, published 2026-04-07"},"content:multi-modal-rag-proof-of-concept-facilitating-tech-support":{"href":"/content/multi-modal-rag-proof-of-concept-facilitating-tech-support","name":"Multi-modal RAG Proof of Concept: facilitating tech support","kind":"blog","short":"Multi-modal RAG proof of concept for tech support on CAP","line":"A report on a customer proof of concept rather than an implementation guide — there is no code in it. The reason it is here is the architecture paragraph: CAP holds the backend and the use-case logic, the LLM plugins and the SAP Cloud SDK for AI sit inside it, and gpt-4o is one of two nodes in a small langgraph. It opens with a disclaimer that SAP's own Grounding service is due to gain multi-modal features, which dates the whole thing on purpose.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"maxlienhardt, published 2025-06-03"},"content:multi-origin-service-testing-and-troubleshooting-in-sap-gateway":{"href":"/content/multi-origin-service-testing-and-troubleshooting-in-sap-gateway","name":"Multi-Origin Service Testing and Troubleshooting in SAP Gateway","kind":"blog","short":"Testing multi-origin OData services in SAP Gateway","line":"Walks through testing a multi-origin OData service in SAP Gateway by passing the $system parameter against a System Alias defined in /IWFND/MAINT_SERVICE, verified with the SAP Gateway Client (/IWFND/GW_CLIENT) and from outside the system with a browser or Postman. Covers three recurring failures — an ignored $system, a 500 from an unconfigured RFC destination or inactive backend service, and a 403 from a missing backend authorization — and how to confirm which alias and backend a request actually hit with /IWFND/TRACES.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Ravikumar_H1, published 2025-08-19"},"content:multitenant-application-using-cap-java-sdk-and-mtx-sidecar":{"href":"/content/multitenant-application-using-cap-java-sdk-and-mtx-sidecar","name":"Multitenant application using Cloud Application Programming Model (CAP)","kind":"blog","short":"Multitenant CAP Java app with the mtx sidecar","line":"A worked multitenant application on the Java SDK with the mtx sidecar beside it — the arrangement where provisioning lives in a separate Node process even when the application is Java. Includes the UI module, so the subscription is visible end to end.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"former_member733211, published 2021-05-19"},"content:multitenant-business-applications-with-cap-hands-on-video-tutorials":{"href":"/content/multitenant-business-applications-with-cap-hands-on-video-tutorials","name":"Multitenant Business Applications with CAP | Hands-on Video Tutorials","kind":"blog","short":"SAP HANA Academy video series on multitenant CAP apps","line":"A hands-on video series from the SAP HANA Academy on building multitenant applications with CAP, with the written post as its index. Referenced by other posts here as the more current alternative to their own text.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"dvankempen, published 2021-06-03"},"content:multitenant-mta-providing-a-cloud-portal-with-fiori-apps-to-subscribers":{"href":"/content/multitenant-mta-providing-a-cloud-portal-with-fiori-apps-to-subscribers","name":"Multitenant MTA: providing a Cloud Portal Service with FIORI apps to subscriber accounts","kind":"blog","short":"Fiori apps reaching subscriber launchpads in a multitenant MTA","line":"Fiori applications reaching a subscriber's own launchpad, which is the part of multitenancy the runtime does not do for you. The author's motivation is that the information exists but is scattered across documentation, and this puts it in one place.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"former_member1760, published 2022-01-03"},"content:multitenant-saas-applications-on-btp-using-cap-kyma-runtime":{"href":"/content/multitenant-saas-applications-on-btp-using-cap-kyma-runtime","name":"Multitenant SaaS applications on SAP BTP using CAP? SAP BTP, Kyma Runtime!","kind":"blog","short":"Multitenant CAP SaaS sample on the Kyma runtime","line":"The Kyma counterpart to the Cloud Foundry Tried-and-True series — the same SaaS application, the same requirements, a Kubernetes runtime underneath. The two code lines were later merged, which the Reloaded post announces.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"martinfrick, published 2023-04-05"},"content:multitenant-saas-on-btp-using-cap-the-reloaded-version":{"href":"/content/multitenant-saas-on-btp-using-cap-the-reloaded-version","name":"Multitenant SaaS applications on SAP BTP using CAP - The Reloaded Version!","kind":"blog","short":"Cloud Foundry and Kyma multitenant CAP samples merged","line":"An announcement rather than a tutorial, and it is the one that changes how the rest of the series should be read: the Cloud Foundry and Kyma code lines and their documentation were merged into a single sample, so the runtime becomes a choice inside one repository instead of a fork in the reading path.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"martinfrick, published 2023-08-09"},"content:multitenant-saas-on-btp-using-cap-tried-and-true-advanced":{"href":"/content/multitenant-saas-on-btp-using-cap-tried-and-true-advanced","name":"Multitenant SaaS apps on SAP BTP using CAP? Tried-and-True! – The Advanced Version","kind":"blog","short":"Advanced version of the multitenant CAP SaaS sample","line":"What the basic version leaves out and production needs: central user management, and reaching an on-premise S/4HANA from a subscribed tenant. Framed as a step towards production readiness rather than as production itself, which is the honest reading — the Expert Features post is where the rest of that distance is covered.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2022-11-21"},"content:multitenant-saas-on-btp-using-cap-tried-and-true-basic":{"href":"/content/multitenant-saas-on-btp-using-cap-tried-and-true-basic","name":"Multitenant SaaS apps on SAP BTP using CAP? Tried-and-True! – The Basic Version","kind":"blog","short":"Basic version of the multitenant CAP SaaS sample","line":"The version deliberately bounded by what a trial or pay-as-you-go account can hold — the authors point out a PAYG owner can run it for nothing on free-tier services. Scenario first, then the architecture diagram, then a component-by-component walk through what each service in it is for.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2022-10-24"},"content:multitenant-saas-on-btp-using-cap-tried-and-true-expert-features":{"href":"/content/multitenant-saas-on-btp-using-cap-tried-and-true-expert-features","name":"Multitenant SaaS apps on SAP BTP using CAP? Tried-and-True! – The Expert Features","kind":"blog","short":"Expert features of the multitenant CAP SaaS sample","line":"The last of the four, and the one carrying the features that are optional until they are not. Each is written up as a self-contained tutorial in the sample repository rather than inline, so the post is a guide to which of them applies to your landscape.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"martinfrick, published 2022-11-29"},"content:multitenant-saas-on-btp-using-cap-tried-and-true-overview":{"href":"/content/multitenant-saas-on-btp-using-cap-tried-and-true-overview","name":"Multitenant SaaS applications on SAP BTP using CAP? Tried-and-True!","kind":"blog","short":"Overview of the multitenant CAP SaaS series on Cloud Foundry","line":"The opening post of the Cloud Foundry series, and the one that states the shape of the whole thing: a sample built out of a partner co-innovation project with BCG, then delivered in three graded versions — Basic, Advanced, Expert Features — against a fictional partner's requirements. Read it for the motivation and the map; the implementation is in the three that follow.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"martinfrick, published 2022-10-19"},"content:my-cap-projects-toolbox":{"href":"/content/my-cap-projects-toolbox","name":"My CAP Projects Toolbox","kind":"blog","line":"A working inventory of daily CAP tooling: scaffolding a project with cds init and growing it facet by facet through cds add (TypeScript, seed data, an .http test file, a handler stub), then running it with cds watch and setting a breakpoint in a custom handler from SAP Business Application Studio's JavaScript Debug Terminal. It also walks through an @open entity that accepts properties the model never declared, and reading temporal data defined with CAP's temporal aspect, where a plain read returns only what is valid now and a custom handler is needed to retrieve every time slice.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"vvdries, published 2024-12-23"},"content:named-user-attribution-across-btp-subaccounts-a-two-hop-ias-token-exchange-for-c":{"href":"/content/named-user-attribution-across-btp-subaccounts-a-two-hop-ias-token-exchange-for-c","name":"Named-User Attribution Across BTP Subaccounts: A Two-Hop IAS Token Exchange for Cloud Integration","kind":"blog","short":"Two-hop IAS token exchange for named users in Cloud Integration","line":"A central BTP application that manages Cloud Integration across subaccounts with client_credentials collapses every user into one technical service principal: target subaccounts' role collections are bypassed and the audit log names a service key instead of a person. The post works through a two-hop exchange — an IAS app-to-app hop, then the target subaccount's XSUAA jwt-bearer hop — that carries the calling user's own identity across the subaccount boundary through a shared Cloud Identity Services tenant, so the target subaccount enforces the user's own role collection and records their identity in the audit log. It walks through the IAS app-dependency setup, the AppRouter and SAP Destination service configuration the exchange needs, and states the pattern applies to any XSUAA-protected service in a separate subaccount, not only Cloud Integration.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"agnissh, published 2026-08-24"},"content:natural-language-queries-for-sap-cap-via-mcp":{"href":"/content/natural-language-queries-for-sap-cap-via-mcp","name":"Natural Language Queries for SAP CAP via MCP: The LLM Translates, CDS Executes","kind":"blog","short":"Natural-language queries translated to CDS queries over MCP","line":"The division of labour is the argument, and it is in the subtitle: the model turns English into a CDS query and CDS runs it, so nothing generates SQL and nothing hallucinates a join. Schema annotations do the resolving. Long, with the package, the repository and the MCP registry entry all linked.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Shahid, published 2026-06-25"},"content:new-and-improved-change-tracking-plugin":{"href":"/content/new-and-improved-change-tracking-plugin","name":"New and improved: Change Tracking plugin","kind":"blog","short":"Change Tracking plugin 2.0 announcement","line":"The 2.0 announcement, and unusually candid about why there is a 2.0 at all: the plugin already existed and was, in the author's words, plagued by many issues. What it records is every insert, update and delete with the user and the timestamp, aimed at root-cause analysis and at detecting changes nobody authorised. Generally available as of this post, having been hinted at as beta in the April release notes.","chip":{"label":"Compatibility","tier":"poor","evidence":"cds 2, line ended"},"ai":true,"meta":"published 2026-06-12"},"content:new-ci-pipeline-restart-extension-features-supporting-new-pipeline-package-and-i":{"href":"/content/new-ci-pipeline-restart-extension-features-supporting-new-pipeline-package-and-i","name":"New CI Pipeline Restart Extension features: supporting new Pipeline package and improved Restart Job","kind":"blog","short":"Restart extension for Cloud Integration pipelines, version 1.0.1","line":"A restart extension for Cloud Integration pipelines, in version 1.0.1: a Value Mapping or a technical-ID prefix check resolves which pipeline stage a failed message belongs to, so a custom receiver IFlow copy can be linked to the right stage even when its ID does not follow the standard naming, and a Generic Job Profile restarts every scenario resolved through the Alternative Partner approach instead of only the interfaces named in a fixed list. A new RestartJobLog parameter stores each run's log as a Message Processing Log attachment, in the database, or via a custom IFlow, and a companion \"Pipeline API – Restart Job Log\" Integration Flow retrieves that log or the Restart Job's own MPL details. The walkthrough is concrete about the Integration Flows, Value Mapping and Script Collection that make up the package, which is why it explains Integration flows rather than only the restart feature riding on top of them.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"slava_kuzyakin, published 2025-10-02"},"content:new-pipeline-concept-features-integrated-runtimes-and-supporting-landscape-stage":{"href":"/content/new-pipeline-concept-features-integrated-runtimes-and-supporting-landscape-stage","name":"New Pipeline Concept features: integrated runtimes and supporting landscape stages","kind":"blog","short":"Pipeline Concept package 1.0.9 for Cloud Integration","line":"Describes version 1.0.9 of the Pipeline Concept package for Cloud Integration in SAP Integration Suite, which the post says can be taken from the SAP Business Accelerator Hub: a new integrated messaging runtime step merges inbound conversion with receiver and interface determination, cutting the JMS queues a scenario needs from four to two, or eight to four counting dead-letter queues, and a synchronous variant replaces queues with the ProcessDirect adapter for Content-Based-Router scenarios. It also maps a sender's actual business system name to an alias held in the Partner Directory, so the same XI and IDoc scenario definitions run across DEV, QA and PRD stages without converting names when transporting between them.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"alex_bundschuh, published 2025-01-29"},"content:new-pipeline-for-cloud-integration-features-with-version-1-0-11":{"href":"/content/new-pipeline-for-cloud-integration-features-with-version-1-0-11","name":"New Pipeline for Cloud Integration features with version 1.0.11","kind":"blog","short":"Pipeline package 1.0.11 for Cloud Integration and its new defaults","line":"Version 1.0.11 of the Process Integration Pipeline package for Cloud Integration changes two defaults the post says require attention. The \"tilde option\", which built a partner ID by joining the sender system and interface names, is now switched off: a message whose partner ID cannot be resolved through an alternative partner goes into an error that is resolved by fixing the Partner Directory entry and restarting the message, instead of being constructed under an ID that may not exist there and left on the first JMS queue with no way to correct its partner ID header. Keeping the old behaviour means setting the externalised parameter CustomXPid_SwitchOffTilde to false in the five generic flows that call the partner-ID script; the default inbound processing queue also moves from PIPQ01 to PIPX01 in the generic XI and IDoc inbound flows, so those messages go to the integrated messaging runtime rather than the fully decoupled pipeline.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"alex_bundschuh, published 2025-05-07"},"content:new-pod-2-0-framework-the-new-generation-of-sap-digital-manufacturing-worker-uis":{"href":"/content/new-pod-2-0-framework-the-new-generation-of-sap-digital-manufacturing-worker-uis","name":"New POD 2.0 Framework: The New Generation of SAP Digital Manufacturing Worker UIs","kind":"blog","short":"POD 2.0 framework for SAP Digital Manufacturing worker UIs","line":"The opening post of SAP's sixteen-part series on POD 2.0, the UI framework inside SAP Digital Manufacturing for building worker-facing execution screens: it replaces the architectural foundation of the existing POD model, drops the fixed POD types such as Work Center and Order in favour of POD templates, and exposes contextual execution data directly to the UI layer. The edge to POD plugins holds on what it states about plugins themselves: the large monolithic plugins of the old framework have been broken into smaller, focused components, and layout, dialogs, buttons and actions that previously required UI extensions or custom plugins are configured in a WYSIWYG designer instead. It stops at the direction, with no code, no API and no packaging steps: new execution features will target the new framework and the legacy POD architecture will gradually phase out, while the designer, custom dialogs, dynamic PODs and notifications are left to the fifteen later posts the series list names.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ManoelCosta, published 2026-02-10"},"content:new-sap-cloud-application-programming-model-sample-for-many-to-many-relationship":{"href":"/content/new-sap-cloud-application-programming-model-sample-for-many-to-many-relationship","name":"New SAP Cloud Application Programming Model Sample for Many-to-Many Relationships and Fiori Annotations","kind":"blog","line":"Introduces SAP-samples/cloud-cap-hana-swapi, a CAP sample rebuilding the abandoned Star Wars API as a six-entity data model (Films, People, Planets, Species, Starships, Vehicles) chosen for its many-to-many, bi-directional relationships and its use as a Fiori Draft deep-editing test case. The author used CAP's OpenAPI functionality to generate both the Swagger UI test tool and entity diagrams for the data model, alongside the OData services and Fiori preview UI.","chip":{"label":"Compatibility","tier":"poor","evidence":"cds 4, line ended"},"ai":true,"meta":"published 2020-12-21"},"content:new-tutorial-for-ui5-middleware-fe-mockserver":{"href":"/content/new-tutorial-for-ui5-middleware-fe-mockserver","name":"New tutorial for UI5 Middleware FE Mockserver","kind":"blog","short":"Tutorial for @sap-ux/ui5-middleware-fe-mockserver","line":"A step-by-step tutorial accompanying a Devtoberfest session walks through @sap-ux/ui5-middleware-fe-mockserver across nine exercises: zero-config mock data generated from OData metadata, custom JSON datasets with consistent IDs and referential keys, JavaScript actions, multi-service and cross-service scenarios, tenant isolation through sap-client, returning 400/404/422/500/501 responses for UI error-handling tests, and offline end-to-end tests run with wdi5. A companion tool, ui5-middleware-odata-recorder, captures real backend OData traffic to generate the mock datasets used for offline replay.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-10-14"},"content:nice-patch-sap-revisiting-your-sap-btp-security-measures-after-ai-core-vulnerabi":{"href":"/content/nice-patch-sap-revisiting-your-sap-btp-security-measures-after-ai-core-vulnerabi","name":"Nice patch SAP! Revisiting your SAP BTP security measures after AI Core vulnerability fix","kind":"blog","short":"BTP security hardening after the AI Core vulnerability fix","line":"Written after the SAPwned disclosure in SAP AI Core, it argues SAP BTP's shared-responsibility model still requires the customer's own hardening: scope SAP BTP, Cloud Foundry Runtime and SAP BTP, Kyma runtime app access, rotate OAuth2 client-credentials secrets, and enforce MFA and Conditional Access through a corporate identity provider rather than relying on SAP's patch alone. It then explains how the SAP Audit Log service writes standardized events for most Cloud Foundry BTP services, and walks through onboarding a BTP subaccount into Microsoft Sentinel for SAP BTP to query those logs with Kusto and build detection rules that flag unexpected login countries or known-bad IPs and trigger automatic user blocks.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-07-25"},"content:no-code-mcp-servers-with-sap-integration-suite-from-rest-api-to-ai-agent":{"href":"/content/no-code-mcp-servers-with-sap-integration-suite-from-rest-api-to-ai-agent","name":"No-Code MCP Servers with SAP Integration Suite: From REST API to AI Agent","kind":"blog","line":"Walks through turning a deployed API artifact into a no-code MCP server in SAP Integration Suite's MCP Gateway: the API artifact's OpenAPI spec must be version 3.0.0-3.0.3, since Swagger 2.0 is rejected, and its backend is reached through a BTP Destination using OAuth2ClientCredentials so the agent calling the server never sees the backend secret. The API artifact's own Authorization policy sets an OAuth scope and Trust Upstream MCP Authorization, and the gotcha list traces a 403 on a valid token to that policy rather than to authentication, before the finished MCP server is published through Developer Hub and connected to Claude Code.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"eddiedu, published 2026-09-15"},"content:object-release-state-in-cloudification-repository-viewer-for-clean-core-extensib":{"href":"/content/object-release-state-in-cloudification-repository-viewer-for-clean-core-extensib","name":"Object Release State in Cloudification Repository Viewer for Clean Core Extensibility","kind":"blog","short":"Release states in the Cloudification Repository Viewer","line":"Walks through the five release states the Cloudification Repository Viewer assigns to an object — Released, Deprecated, Classic API, Not to be Released, and No API — and what each means for ABAP Cloud readiness: the clean core level it maps to and the ATC check priority it triggers. Explains why the same object can carry two states at once, such as a Classic API that later also becomes Released, and why the check has to be run against the specific release being developed on rather than assumed to hold across releases.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"PrasanthPadmanabhan, published 2026-03-20"},"content:odata-batch-deleting-records-across-multiple-tables-in-single-transaction":{"href":"/content/odata-batch-deleting-records-across-multiple-tables-in-single-transaction","name":"OData $batch Deleting Records Across Multiple Tables in Single Transaction","kind":"blog","short":"Multi-table delete in one OData $batch changeset on SAP Gateway","line":"Walks through implementing a multi-table DELETE inside a single OData v2 $batch changeset on SAP Gateway: setting cv_defer_mode = abap_true in CHANGESET_BEGIN so more than one delete is collected per change set instead of being executed immediately, looping the collected operations in CHANGESET_PROCESS to delete from each backend table in turn, and issuing one COMMIT WORK in CHANGESET_END so all tables commit or roll back together. The example is a supplier master spread across basic, address, identification and purchasing-organisation tables, deleted as one logical unit of work instead of one HTTP call per table.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Abhi_0118, published 2026-04-17"},"content:odata-deep-insert-implementation-and-real-life-examples":{"href":"/content/odata-deep-insert-implementation-and-real-life-examples","name":"OData Deep Insert: Implementation and Real-Life Examples","kind":"blog","short":"OData deep insert on classic SAP Gateway","line":"Walks through implementing OData Deep Insert on classic SAP Gateway: two entity types joined by an association in SEGW, and a redefined CREATE_DEEP_ENTITY method in the DPC_EXT class that unpacks the header and item payload and calls BAPI_SALESORDER_CREATEFROMDAT2 to create a sales order with its line items in one request instead of separate calls per item. Gives a sample JSON payload to test with Postman or /IWFND/GW_CLIENT and names the usual failure points — an unmapped association, a method that was never redefined, or a commit left out after the BAPI call.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SRSATAPATHY, published 2025-09-15"},"content:on-the-fly-excel-download-in-a-rap-fiori-app-no-database-table-no-persistence-pu":{"href":"/content/on-the-fly-excel-download-in-a-rap-fiori-app-no-database-table-no-persistence-pu","name":"On‑the‑Fly Excel Download in a RAP Fiori App — No Database Table, No Persistence, Pure CDS + ABAP","kind":"blog","short":"Excel download from a RAP custom entity without persistence","line":"Builds a CDS custom entity backed by an ABAP class that implements IF_RAP_QUERY_PROVIDER and assembles an XLSX workbook at request time — hand-built from Open XML parts with cl_abap_zip for multiple sheets, or in one line via cl_salv_table=>to_xml for one — then streams it to the browser through the @Semantics.largeObject annotation. The same annotation makes Fiori annotations render the field as a download link with no backing database table, trading the usual persisted-blob approach to document output for a file rebuilt fresh on every click.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"hemanthmj, published 2026-06-18"},"content:open-source-ui5-form-validator":{"href":"/content/open-source-ui5-form-validator","name":"Open Source UI5 Form Validator","kind":"blog","line":"Walks through @learnin/ui5-validator, an open-source library the author built because UI5's standard constraints-based validation only fires on value change and cannot do batch validation on save, required-field checks across a whole view, or correlation checks between fields such as a start date against an end date. It coexists with UI5's own required attribute and message model rather than adding custom attributes, and the post shows the manifest.json wiring, a controller calling Validator#validate on save, and a registered cross-field validator comparing a fromDate and toDate DatePicker pair.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"actor:learnin, published 2025-02-04"},"content:open-sourcing-cap-how-to-learn-more-or-get-involved":{"href":"/content/open-sourcing-cap-how-to-learn-more-or-get-involved","name":"Open Sourcing CAP – how to learn more or get involved","kind":"blog","short":"Roundup of CAP's open-sourced components","line":"A roundup of CAP's open-sourcing, begun at TechEd the year before, pointing to a webinar recording, a podcast episode and reCAP 2023 talks for background. Among the components it names are a feature toggle library giving Node.js CAP apps live-updatable toggles backed by Redis, a new pluggable database layer with SQLite and PostgreSQL implementations plus a generic SQL layer, and a change tracking component that builds a change history for data from CDS models.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Fempel, published 2023-10-02"},"content:openapis-in-the-sap-ecosystem":{"href":"/content/openapis-in-the-sap-ecosystem","name":"OpenAPIs in the SAP ecosystem","kind":"blog","short":"Where OpenAPI turns up across SAP services","line":"Where OpenAPI actually turns up across SAP's own services, from somebody who spends their time in that ecosystem. Orientation rather than implementation.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ajmaradiaga, published 2022-10-10"},"content:optimize-your-mta-build-with-several-ui-apps":{"href":"/content/optimize-your-mta-build-with-several-ui-apps","name":"SAP CAP - Optimize your build MTA projects with several ui apps","kind":"blog","short":"Optimising MTA builds with many UI apps in CAP","line":"What the Business Application Studio wizard writes into mta.yaml stops scaling somewhere past a couple of dozen UI applications, because every one of them gets its own build step. The post is about the build phase specifically, and reads as a report from a project large enough to have hit the wall rather than as a general optimisation.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2022-04-28"},"content:optimized-idoc-routing-in-sap-ci-with-value-mapping-and-groovy-based-receiver-de":{"href":"/content/optimized-idoc-routing-in-sap-ci-with-value-mapping-and-groovy-based-receiver-de","name":"Optimized IDoc Routing in SAP CI with Value Mapping and Groovy-Based Receiver Determination","kind":"blog","short":"IDoc receiver determination in Cloud Integration with value mapping","line":"ShreyasShenoy07 replaces SAP PI/PO's single shared IDoc destination with a receiver-determination pattern built in Cloud Integration: a generic iFlow reads the IDoc's EDI_DC40 header, looks up the sender identifier and the receiver list in two Value Mapping tables keyed by sender system and IDoc type, and a Groovy script evaluates each receiver's XPath condition before routing the message to a receiver-specific iFlow over the ProcessDirect adapter. Adding or changing a receiver becomes a Value Mapping edit instead of an iFlow redeployment, and the same IDoc can fan out to several receivers when more than one condition matches.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ShreyasShenoy07, published 2025-08-08"},"content:out-of-the-box-document-grounding-in-sap-ai-core-rag-with-sap-help-portal":{"href":"/content/out-of-the-box-document-grounding-in-sap-ai-core-rag-with-sap-help-portal","name":"Out-of-the-Box Document Grounding in SAP AI Core: RAG with SAP Help Portal","kind":"blog","line":"Walks through SAP AI Core's document grounding: a default 'help.sap.com' data repository that is already grounded, queried either directly through /retrieval/search after labelling a resource group for grounding, or through the orchestration service's grounding_module_config paired with llm_module_config and templating_module_config to inject the retrieved chunks into a prompt. Shows the orchestration service as a unified interface for swapping LLM providers by changing a configuration parameter rather than application code.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Joni, published 2025-04-15"},"content:outbound-integration-from-sap-btp-abap-to-sap-s-4hana-cloud-via-service-consumpt":{"href":"/content/outbound-integration-from-sap-btp-abap-to-sap-s-4hana-cloud-via-service-consumpt","name":"Outbound Integration from SAP BTP, ABAP to SAP S/4HANA Cloud via Service Consumption Model","kind":"blog","short":"Calling S/4HANA Cloud from BTP ABAP via Service Consumption Model","line":"Walks through ABAP's Service Consumption Model for OData in ABAP Development Tools for Eclipse: generating a V4 client proxy from a remote service's EDMX metadata, then calling one of its bound actions by hand because the 2311 release's ADT tooling does not yet generate that code. The client itself is built the way HTTP clients describes for SAP BTP, ABAP Environment — a communication arrangement resolved through cl_http_destination_provider=>create_by_comm_arrangement, handed to cl_web_http_client_manager=>create_by_http_destination to create the client.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Pramathesh_t_s, published 2025-10-28"},"content:parallel-data-filtering-and-dropbox-integration-using-sap-cloud-integration":{"href":"/content/parallel-data-filtering-and-dropbox-integration-using-sap-cloud-integration","name":"Parallel Data Filtering and Dropbox Integration Using SAP Cloud Integration","kind":"blog","short":"Cloud Integration flow filtering records and uploading to Dropbox","line":"A step-by-step build of an integration flow in Cloud Integration: a Start Timer triggers the flow, a Parallel Multicast splits student records by gender through XPath filters, and each branch uploads its file to Dropbox over a Receiver Adapter authorized against a Dropbox app's OAuth2 credentials. An Exception Subprocess captures the error message and a Mail Adapter sends it over SMTP, centralizing error handling and an email notification for the whole flow.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Vurumind03, published 2025-12-10"},"content:part-1-enrich-cap-based-services-with-behaviors-using-annotations":{"href":"/content/part-1-enrich-cap-based-services-with-behaviors-using-annotations","name":"[Part - 1] Enrich CAP based Services with Behaviors using Annotations","kind":"blog","short":"CDS annotations adding behaviour to CAP services, part 1","line":"Walks through CDS annotations that add behaviour beyond CRUD: @readonly and @insertonly take away write, update or delete on an entity or element, each shown with the OData metadata it generates. @mandatory, @assert.unique, @assert.integrity, @assert.format and @assert.range then enforce input checks that @sap/cds runs on write, with the SQL or HANA constraint @assert.unique compiles to and the error code each rejection returns. It names @restrict and @requires but defers them, calling authorization too large a topic for this post.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-01-28"},"content:part-1-how-to-create-a-capm-project-in-bas":{"href":"/content/part-1-how-to-create-a-capm-project-in-bas","name":"Part 1: How to create CAPM project in BAS","kind":"blog","short":"Creating a CAPM project in BAS, part 1","line":"The claim in the opening is the interesting part — database, service and UI without switching technologies — and then the project that follows from it. Part one, and it stops at a project that runs.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Vennilla00, published 2026-03-05"},"content:part-2-empowering-sap-btp-cap-services-through-open-api-spec-and-annotations-for":{"href":"/content/part-2-empowering-sap-btp-cap-services-through-open-api-spec-and-annotations-for","name":"Part 2 – Empowering SAP BTP CAP Services through Open API Spec and Annotations for Effective Communication, Collaboration and Governance","kind":"blog","line":"Walks through generating an OpenAPI specification for a Node.js CAP service: installing cds-swagger-ui-express, bootstrapping it in server.js, a sample CDS data model with associations and compositions, and the YUML diagram and endpoint details the Open API Preview renders in Business Application Studio. Also shows gating the Swagger UI behind a user-defined environment variable so it is served in development and QA subaccounts but excluded from the production deployment on Cloud Foundry. Second of a three-part series; the first covers the concepts and the third goes deeper into annotations.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"mohit_bansal3, published 2023-05-24"},"content:part-2-enrich-cap-based-services-with-behaviors-using-annotations":{"href":"/content/part-2-enrich-cap-based-services-with-behaviors-using-annotations","name":"[Part – 2] Enrich CAP based Services with Behaviors using Annotations","kind":"blog","line":"The second half of a two-part walkthrough of CAP's behavioral annotations, following on from access control and input validation in the first part. This post works through @cds.autoexpose, @cds.api.ignore, @cds.persistence.exists/skip, @cds.on.insert/@cds.on.update and the @odata.Type/@odata.singleton mapping overrides, all shaping how a CDS model is projected into a service, which is data modelling. Alongside these it covers @cds.query.limit for default and maximum page sizes (pagination and streaming), @odata.etag with exclusive and shared locks for optimistic concurrency (concurrency control), and @cds.search for scoping $search to chosen elements (search), each with a CDS code example.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-01-29"},"content:part-3-empowering-sap-btp-cap-services-through-open-api-spec-and-annotations-for":{"href":"/content/part-3-empowering-sap-btp-cap-services-through-open-api-spec-and-annotations-for","name":"Part 3 – Empowering SAP BTP CAP Services through Open API Spec and Annotations for Effective Communication, Collaboration and Governance","kind":"blog","line":"The closing part of a three-post series applies OData @Capabilities annotations — TopSupported, SkipSupported, CountRestrictions, UpdateRestrictions, DeleteRestrictions, FilterRestrictions, SelectSupport, SortRestrictions, SearchRestrictions, InsertRestrictions, ReadRestrictions and NavigationRestrictions — to three sample CDS entities (Purchase Order, Business Partner, Product) and shows the generated OpenAPI document changing with each one. The point it builds toward: the spec is a direct readout of the model and its annotations, not something edited by hand afterward.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"mohit_bansal3, published 2023-05-24"},"content:pattern-function-for-rfc":{"href":"/content/pattern-function-for-rfc","name":"Pattern Function for RFC","kind":"blog","short":"ABAP Editor pattern generating RFC calls","line":"A custom ABAP Editor pattern, defined once under SE38 > Utilities > More Utilities > Edit Pattern as Z_RFC_FUNCTION, that generates a CALL FUNCTION ... DESTINATION block for a chosen remote-enabled function module: an EDITOR_EXIT function on the calling system reaches the target system over RFC to fetch that function's generated source, then inserts the DESTINATION clause before handing the pattern back to the editor. It automates writing the RFC call itself rather than explaining RFC destinations as a concept, and the destination name in the sample is hardcoded to the author's own system.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ykaldirim, published 2025-12-02"},"content:patterns-for-using-llms-in-abap-development":{"href":"/content/patterns-for-using-llms-in-abap-development","name":"Patterns for using LLMs in ABAP development","kind":"doc","short":"Eight setups for using LLMs in ABAP development","line":"Lars Hvam compares eight ABAP development setups: assistance in SE80 or Eclipse, virtual files and MCP over ADT, a centrally managed MCP service, sandboxes, local Git, Git with read-only system context, and temporary ABAP systems for development and CI. The overview describes where source changes, review and system access happen, including abapGit synchronization and abaplint checks. It is dated March 2026; its risk, cost and autonomy ratings are the writer’s assessments.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:perform-sap-principal-propagation-with-microsoft-entra-id-for-sap-successfactors":{"href":"/content/perform-sap-principal-propagation-with-microsoft-entra-id-for-sap-successfactors","name":"Perform SAP Principal Propagation with Microsoft Entra ID for SAP SuccessFactors!","kind":"blog","short":"Principal propagation to SuccessFactors with Entra ID via APIM","line":"Walks through SAP Principal Propagation for SAP SuccessFactors through SAP Integration Suite's API Management, using the OAuth2SAMLBearer flow with Microsoft Entra ID as the external identity provider. Covers the SuccessFactors-specific policy from the SAP Business Accelerator Hub, the API key and company id SuccessFactors uses in place of an OAuth2 client id, and the Entra ID app registration and key value map that exchange an Entra ID token for a SAP-authorized named user, so a consumer such as Power Automate runs under the mapped SAP user rather than a shared technical account.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-11-20"},"content:performance-boost-and-caching-strategy-with-cds-caching":{"href":"/content/performance-boost-and-caching-strategy-with-cds-caching","name":"Performance Boost and Caching Strategy for Faster Data Access using \"cds-caching\" in SAP CAP","kind":"blog","short":"Account of caching a million-row master-data entity with cds-caching","line":"Somebody else's account of using the plugin, which is the useful counterpart to its documentation. The case is specific: a master-data entity of more than a million rows, rarely written and constantly read, where the read-heavy shape is what makes caching worth the complexity rather than a general performance wish. Walks through integrating cds-caching into that application and what it changed.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"NaveenChandar, published 2025-03-04"},"content:performance-trace-node-js-app-on-btp-with-dynatrace":{"href":"/content/performance-trace-node-js-app-on-btp-with-dynatrace","name":"Performance Trace Node.js App on BTP with Dynatrace","kind":"blog","short":"Wiring Dynatrace as APM for a Node.js app on SAP BTP","line":"Walks through wiring Dynatrace as a third-party APM for a Node.js app on SAP BTP, as an alternative to the platform's own internal monitoring: creating an access token and a user-provided service instance, binding it in manifest.yaml, and adding the @dynatrace/oneagent-sdk package for distributed tracing across app router, IDP and connectivity-proxy hops. An appendix covers turning on @sap/approuter's debug-level log output through the XS_APP_LOG_LEVEL environment variable.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"jeremy_ma_usa, published 2024-09-04"},"content:postgresql-persistence-adapter-for-cap-nodejs":{"href":"/content/postgresql-persistence-adapter-for-cap-nodejs","name":"PostgreSQL persistence adapter for CAP (Node.js)","kind":"blog","short":"Introduction of cds-pg for running CAP on PostgreSQL","line":"The contradiction the adapter was built to resolve, stated plainly in 2020: CAP's core is open, non-intrusive and platform-agnostic, which is what would let it run outside SAP's world — except that HANA was the only officially supported production persistence and HANA exists only inside BTP. cds-pg is the answer to that, and this is the post that argues for it. Read now as the front end of a story whose other end is the 2023 post recording cds-pg's deprecation in favour of @cap-js/postgres.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2020-08-20"},"content:predictive-asset-insights-embedded-live-analytics-using-cap-and-sac":{"href":"/content/predictive-asset-insights-embedded-live-analytics-using-cap-and-sac","name":"Predictive Asset Insights embedded Live analytics using CAP and SAC","kind":"blog","short":"CAP between app data and an embedded live Analytics Cloud story","line":"CAP as the layer between a line-of-business application's data and a live Analytics Cloud story embedded back into it — master data and operational data both. Structured as ten steps, which keeps it honest about how much of this is configuration rather than modelling.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Saif, published 2021-07-18"},"content:presenting-sap-cap-sdm-plugin":{"href":"/content/presenting-sap-cap-sdm-plugin","name":"Presenting sap-cap-sdm-plugin: Effortless Integration Between CAP (Node.js) and DMS","kind":"blog","short":"Introduction of a CAP Node.js plugin for Document Management Service","line":"The author's introduction of the plugin, and unusually clear about its lineage: the idea came from a post about cds.plugins whose example did nothing more than append an emoji to annotated properties, and the groundwork was an earlier library, sap-cloud-cmis-client, that this builds on. Worth reading for how a plugin gets conceived as much as for what it does with Document Management Service.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-10-02"},"content:principal-propagation-from-btp-web-app-to-s-4hana-via-sap-integration-suite":{"href":"/content/principal-propagation-from-btp-web-app-to-s-4hana-via-sap-integration-suite","name":"Principal Propagation from BTP Web App to S/4HANA via SAP Integration Suite","kind":"blog","short":"Principal propagation from a BTP web app to on-premise S/4HANA","line":"Walks through configuring principal propagation from a BTP web app, through SAP Integration Suite and Cloud Connector, to an on-premise S/4HANA system, so the backend receives calls as the logged-in user rather than a shared service account. The BTP Destination service uses OAuth2JWTBearer to exchange the user's Cloud Identity Services JWT for an Integration Suite token, and the iFlow's OData V2 receiver adapter reaches S/4HANA through Cloud Connector with Principal Propagation authentication. The Cloud Connector Subject Pattern builds the outbound certificate's CN from the token's user_name claim, which is populated from the IAS email rather than the sub claim, so identity resolution on S/4HANA hinges on that email matching a resolvable logon name.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Joni, published 2026-07-10"},"content:principal-propagation-in-sbpa-actions-with-a-cap-nodejs-service":{"href":"/content/principal-propagation-in-sbpa-actions-with-a-cap-nodejs-service","name":"SAP Build Process Automation – Use Principal Propagation in Actions sample: CAP Node.js Service","kind":"blog","short":"Principal propagation into a CAP service from Process Automation","line":"The follow-up that carries the identity through. It takes the CAP service from the Actions tutorial and puts the calling user's identity behind it — an XSUAA instance, a trust configuration, an OAuthSAMLBearerAssertion destination, and the service changed to use that instance — so a step runs on behalf of a person rather than as the process.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"TJe, published 2023-06-22"},"content:print-preview-from-rap-action-with-v4-odata-and-multiple-selection":{"href":"/content/print-preview-from-rap-action-with-v4-odata-and-multiple-selection","name":"Print Preview from RAP Action with v4 OData and Multiple Selection","kind":"blog","short":"Merged PDF print preview from a RAP action over OData V4","line":"A RAP action's implementation calls SAP Interactive Forms by Adobe through cl_fp for each of several selected keys, merges the resulting PDFs into one file, and returns it as base64 from the action result. A Fiori elements list report invokes the action for the current selection through a controller extension's editFlow.invokeAction, grouped as a single ChangeSet so every selected document is generated and merged in one round trip before the merged file is offered back to the user.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Gxalmet, published 2026-01-10"},"content:process-integration-pipeline-extension-restart-via-data-store":{"href":"/content/process-integration-pipeline-extension-restart-via-data-store","name":"Process Integration Pipeline Extension - Restart via Data Store","kind":"blog","short":"Restarting Dead Letter Queue messages in the Pipeline via Data Store","line":"On SAP Cloud Integration's Process Integration Pipeline, a message that exhausts its JMS retries lands in a Dead Letter Queue with no API to query or move it, and the JMS broker carries a hard size limit. This package, published on SAP Business Accelerator Hub, replaces that path with Data Store entries written through the pipeline's custom exception-handling exit, a scheduled Restart Job Integration Flow, and two optional HTTP APIs for on-demand restarts and Data Store management. Entry names encode the partner ID, the pipeline stage, the message ID and a retry count, so messages can be filtered and restarted by scenario instead of moved one by one in the queue monitor.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"mate_moricz, published 2025-07-23"},"content:product-updates-for-sap-build-code-june-2025-edition":{"href":"/content/product-updates-for-sap-build-code-june-2025-edition","name":"Product Updates for SAP Build Code – June 2025 Edition","kind":"blog","short":"June 2025 SAP Build Code release notes, incl. XS migration assistant","line":"The Q2-2025 release of SAP Build Code adds a Joule-based SAP HANA Application Migration Assistant extension that automates converting XS Classic and XS Advanced service-layer artifacts — XSJSLIB, XSODATA and XSJS — into CAP service definitions and handlers on SAP HANA Cloud, extending the existing database migration assistant with generative AI. It walks through the \"XS Classic to CAP\" and \"XS Advanced to CAP\" templates that trigger the conversion.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-06-27"},"content:prompt-driven-development-building-full-stack-cap-apps-from-user-stories":{"href":"/content/prompt-driven-development-building-full-stack-cap-apps-from-user-stories","name":"Prompt-Driven Development: Building Full-Stack SAP CAP Apps from User Stories","kind":"blog","short":"Generating a full-stack CAP app from user stories with Joule","line":"A user story in, a scaffolded full-stack CAP application out, through SAP Build Code and Joule. The question it is actually asking is how much of the foundational code is worth generating, and it answers by generating all of it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"AnuradhaDhingan, published 2025-12-11"},"content:publish-events-from-cap-nodejs-to-integration-suite-event-mesh":{"href":"/content/publish-events-from-cap-nodejs-to-integration-suite-event-mesh","name":"Publish events from CAP Node.js applications to Event Mesh of Integration Suite","kind":"blog","short":"Minimal CAP Node.js example emitting events to Event Mesh","line":"The smallest complete example: cds init, a service with one function, cds.connect.to('messaging') and an emit to a topic. Deliberately scoped — the Event Mesh setup is skipped and the subaccount is assumed to be the same one — so what remains is the handful of lines on the CAP side and the binding that makes them reach the broker.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"KevinWang_ST_Consultancy, published 2026-02-13"},"content:qualtrics-integration-with-domain-based-authorization-in-a-cap-project":{"href":"/content/qualtrics-integration-with-domain-based-authorization-in-a-cap-project","name":"Qualtrics integration with domain based authorization in CAP project on HANA cloud","kind":"blog","short":"Qualtrics surveys in CAP with authorization by user domain","line":"Surveys pulled from Qualtrics into a CAP application in real time, with the twist in the title: authorisation decided by the user's domain rather than by a role collection. A pattern that comes up whenever the audience is wider than the tenant.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"former_member69893, published 2022-09-30"},"content:quickly-deploy-a-sample-cap-application-to-btp":{"href":"/content/quickly-deploy-a-sample-cap-application-to-btp","name":"Quickly Deploy a Sample CAP Application to BTP","kind":"blog","short":"Prerequisites and steps for a first CAP deployment to BTP","line":"Prerequisites first and at length — account, dev environment, CLI tools, MBT — because that is where a first deployment actually fails. The deploy itself is short once they are true.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"AminAlmarsafy, published 2025-11-15"},"content:rag-with-hana-cloud-vector-engine-genai-hub-and-cap":{"href":"/content/rag-with-hana-cloud-vector-engine-genai-hub-and-cap","name":"RAG with SAP HANA Cloud Vector Engine, GenAI Hub & CAP","kind":"blog","short":"RAG with a CAP service over HANA Cloud vector engine and AI hub","line":"The end-to-end version: a CAP service exposing the vector engine and the AI hub behind a couple of endpoints, answering where a CodeJam is on a given date. It has aged in a way the author has marked in the page itself — the section on the CAP LLM plugin now carries \"(Outdated)\" in its own heading — so read the embedding preparation and the retrieval shape, and check the plugin part against the package.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"KevinR, published 2024-05-21"},"content:random-collection-of-useful-code-fragments-for-cap-fiori-elements-and-sapui5":{"href":"/content/random-collection-of-useful-code-fragments-for-cap-fiori-elements-and-sapui5","name":"Random collection of useful code fragments for CAP Fiori Elements and SAPUI5","kind":"blog","short":"Collection of code fragments for CAP, Fiori elements and SAPUI5","line":"Exactly what it says, and the author gives the reason: none of these were easy to find in the documentation or the samples. A collection of fragments rather than an argument, and the kind of page people bookmark.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2020-11-18"},"content:random-numbers-and-probability-distributions-in-the-abap-environments-for-2508":{"href":"/content/random-numbers-and-probability-distributions-in-the-abap-environments-for-2508","name":"Random Numbers and Probability Distributions in the ABAP Environments for 2508","kind":"blog","line":"Introduces CL_ABAP_PROB_DISTRIBUTION and CL_ABAP_PROB_DISTRIBUTION_DF34, new ABAP system classes that generate random numbers from a distribution — normal, lognormal, exponential, gamma, chi-squared, Poisson, binomial, Student's t, hypergeometric, geometric — rather than only the uniform spread CL_ABAP_RANDOM gives. The worked example builds customer payment dates clustered around a due date instead of spread evenly across it, which is the shape seed data needs to look real rather than merely present; the same classes also compute CDFs and quantiles for statistical tests like a t-test on payment lateness. SAP plans this for on-premise and the private cloud with the 2025 major S/4HANA release, subject to change.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"kilian_kilger, published 2025-08-18"},"content:rap-feature-control-part-2":{"href":"/content/rap-feature-control-part-2","name":"RAP - Feature Control (Part 2)","kind":"blog","short":"Reusable AUTHORITY-CHECK wrapper in RAP feature control","line":"Implements a reusable AUTHORITY-CHECK wrapper class and wires it into a RAP behaviour implementation's Feature Control, both the static global check on Create and the instance-based, partner-scoped checks on Update and Delete, so that an authorization decision greys out an action in the Fiori UI rather than only rejecting it after the save. Part two of the author's Sales App series, it also flags a newer, more strictly typed Feature Control flag SAP introduced since the first article, since using the older type produces a warning and can leave a flag silently without effect.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Björn S., published 2026-08-14"},"content:rap-native-file-upload":{"href":"/content/rap-native-file-upload","name":"RAP - Native File Upload","kind":"blog","short":"Workaround for file upload in RAP with abstract root entities","line":"A workaround for uploading a file into a RAP application ahead of SAP's own upload and download solution, which is still pending: two abstract root entities — one holding the file's bytes, MIME type and filename, one for a popup dialog — joined by an association flagged with hierarchy, exposed through a static action declared with DEEP PARAMETER so the nested structure reaches the handler. The trade-offs are stated plainly: the popup takes no default values, only one file uploads at a time, and the UI annotation on the attachment field is ignored because its label is read from the sub-entity's own name.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Björn S., published 2026-08-18"},"content:rap-navigation-app-to-app":{"href":"/content/rap-navigation-app-to-app","name":"RAP - Navigation (App to App)","kind":"blog","short":"App-to-app navigation from a RAP list report and object page","line":"Walks through app-to-app navigation from a RAP list report and object page: the @Consumption.semanticObject annotation and its semanticObjectMapping.element and additionalBinding variants for links, against the inline @UI.lineItem WITH_INTENT_BASED_NAVIGATION and @UI.identification FOR_INTENT_BASED_NAVIGATION for buttons. Each variant is added through a CDS metadata extension and traced into the target app, showing which fields end up in the filter and how the two annotation styles differ in the list report's formatting. Annotation-driven navigation on a RAP service is part of what Fiori annotations covers on the ABAP door: CDS annotations, carried in a metadata extension, driving the Fiori elements UI.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Björn S., published 2026-09-01"},"content:rap-singleton-pattern":{"href":"/content/rap-singleton-pattern","name":"RAP - Singleton Pattern","kind":"blog","short":"Building the RAP singleton pattern with a one-row root entity","line":"Builds the RAP Singleton pattern: a root CDS view entity constrained to always return exactly one row, its composition child for line items, and a transactional model behaviour definition — managed with unmanaged save, a determination that fills the user ID, and an EML update inside SAVE_MODIFIED to write the saved data elsewhere. Generates the Fiori elements object-page app from that service and adjusts Component.js so preferredMode lands the user in edit mode against the fixed semantic key, since the app always has exactly one record to open.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Björn S., published 2026-08-25"},"content:reading-between-the-lines-under-documented-fiori-elements-capabilities-in-sapui5":{"href":"/content/reading-between-the-lines-under-documented-fiori-elements-capabilities-in-sapui5","name":"Reading Between the Lines: Under-Documented Fiori Elements Capabilities in SAPUI5 1.149","kind":"blog","short":"Fiori elements features in SAPUI5 1.149 read from framework source","line":"Reads SAPUI5 1.149's framework source, not its release notes, to show Fiori Elements shifting side-effect refresh, AI field placeholders and multi-user drafting from controller extensions into what the backing service annotates. Event-driven SideEffects push over a WebSocket channel through @cap-js-community/websocket, while Draft handling gains ABAP RAP's live field locking on CAP Node.js through Sören Leibach's own cap-collaborative-draft plugin. Both rest on Fiori annotations such as Common.SideEffects and CollaborativeDraft.enabled, which the frontend reads rather than requiring a manifest flag.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-07-09"},"content:real-time-architecture-in-cap-async-jobs-and-websockets":{"href":"/content/real-time-architecture-in-cap-async-jobs-and-websockets","name":"Real-Time Architecture in SAP CAP: Mastering Asynchronous Jobs, Gateways with WebSockets","kind":"blog","short":"Background jobs pushing progress to the UI over WebSockets in CAP","line":"The other half of the author's own industrial-data post: mass ingestion is only useful if the screen keeps up, so background jobs push progress to the UI over WebSockets instead of the user reloading. Written from a mission-critical case rather than a demo.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"rgadirov, published 2026-03-12"},"content:receive-events-from-event-mesh-of-integration-suite-to-cap-node-js-applications":{"href":"/content/receive-events-from-event-mesh-of-integration-suite-to-cap-node-js-applications","name":"Receive Events from Event Mesh of Integration Suite to CAP Node.js Applications","kind":"blog","line":"Walks a CAP Node.js application through consuming events from SAP Integration Suite, Event Mesh: adding the messaging and xsuaa services with cds add, writing messaging.on handlers for named topics, and building and deploying the service as an MTA to Cloud Foundry. Documents a mismatch between Cloud Foundry's automatic queue provisioning and Event Mesh's management API, worked around by pointing the service key's management URI at a mock endpoint that always returns 201.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"KevinWang_ST_Consultancy, published 2026-02-13"},"content:receive-notifications-from-amazon-sns-in-a-cap-s4hana-extension":{"href":"/content/receive-notifications-from-amazon-sns-in-a-cap-s4hana-extension","name":"Receive Notifications from Amazon Simple Notification Service for SAP S/4HANA BTP Extension App","kind":"blog","short":"Email notifications from a CAP extension via Amazon SNS","line":"Email notifications from a CAP application through Amazon SNS instead of anything SAP provides — a hyperscaler service used directly from the extension rather than through a BTP intermediary. The argument for it is stated as reach rather than cost: the extension gets the platform's services and the hyperscaler's at the same time.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"albertoliu1993, published 2022-10-14"},"content:recommendations-for-customers-on-using-the-direct-push-based-integration":{"href":"/content/recommendations-for-customers-on-using-the-direct-push-based-integration","name":"Recommendations for Customers on using the Direct Push-Based Integration","kind":"blog","short":"Direct push-based business events between ABAP systems over RFC","line":"Explains SAP's direct push-based integration, where two ABAP systems (SAP BTP ABAP environment, SAP S/4HANA Cloud or SAP S/4HANA on-premise) exchange business events by calling each other over RFC connectivity, carried over CPI-C or WebSocket depending on the release, through a sender channel on one side and a matching receiver channel on the other that lists which events it wants. It recommends the mechanism only between systems in the same location or subaccount, without public exposure, and for prototyping event-driven scenarios before moving to Event Mesh or SAP Integration Suite, Advanced Event Mesh at a larger scale.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"sandra_thimme, published 2024-08-09"},"content:recommendations-for-wrapper-interface-design":{"href":"/content/recommendations-for-wrapper-interface-design","name":"Recommendations for Wrapper Interface Design","kind":"blog","short":"Wrapping a classic BAPI behind a C1-released interface for ABAP Cloud","line":"Walks through designing a wrapper interface that encapsulates a classic BAPI (BAPI_USER_GET_DETAIL) behind a C1-released interface, so the code released for ABAP Cloud stays limited to types and structures ABAP Cloud can actually access. Covers when a non-released SAP structure can still be referenced safely, when it cannot, and how the API_CONSISTENCY and API_COMPATIBILITY ATC checks catch the difference before an upgrade breaks it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"kaidehmann, published 2026-06-25"},"content:remote-debugging-of-a-capm-nodejs-app":{"href":"/content/remote-debugging-of-a-capm-nodejs-app","name":"Remote Debugging of SAP CAPM App - Nodejs","kind":"blog","short":"Remote debugging a CAP Node.js app built from cds init","line":"Debugging a CAP Node.js application that is not on your machine, built up from cds init and a custom action so there is something to breakpoint. The part people need is at the end; the beginning is there so the end is reproducible.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"darshanv23, published 2025-06-05"},"content:resend-http-messages-with-configured-pause-and-fixed-max-iteration-followed-by-e":{"href":"/content/resend-http-messages-with-configured-pause-and-fixed-max-iteration-followed-by-e","name":"Resend HTTP messages with configured pause and fixed max iteration followed by error handling","kind":"blog","short":"Retry loop for Cloud Integration HTTP calls with pause and max count","line":"Builds a retry pattern for a Cloud Integration HTTP Receiver call by splitting the request-reply step into its own local sub-process, which loops on the response code — up to a fixed five iterations, each after a configured pause — and routes to an exception sub-process that attaches the message processing log through Groovy once the count is exceeded or another error occurs. The design is the author's own alternative to the platform's retry pattern and inbuilt HTTP Receiver Adapter retry option, built for cases where neither applies; SAP Event Mesh and SAP Advanced Event Mesh are named only as the queue-based alternative the author considered and set aside.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Aman_V, published 2024-01-03"},"content:resolving-date-serialization-issues-with-an-external-odata-v2-service":{"href":"/content/resolving-date-serialization-issues-with-an-external-odata-v2-service","name":"Resolving date serialization issues when using an external OData v2 service with CAP","kind":"blog","short":"Fixing date serialization from an external OData v2 service in CAP","line":"Dates coming out of an external OData v2 service in a shape CAP does not expect, and what to do about it. A narrow bug report with a fix, and the kind of thing that costs an afternoon if nobody has written it down.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"pieterjanssens, published 2020-07-09"},"content:restrict-crud-operations-in-capm-with-capabilities-and-readonly":{"href":"/content/restrict-crud-operations-in-capm-with-capabilities-and-readonly","name":"How to Restrict CRUD Operations in SAP CAPM Using @Capabilities, @readonly and Test APIs with .http","kind":"blog","short":"Restricting CRUD in CAP with @Capabilities and @readonly","line":"Entities are exposed with full CRUD by default, and this is how to take operations away again — @Capabilities for Insert, Update and Delete individually, @readonly for the blunt version. Tested with .http files rather than a UI, which keeps the check on the service.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"DeepaRagho, published 2026-05-22"},"content:reusable-components-for-cap-with-cds-plugin":{"href":"/content/reusable-components-for-cap-with-cds-plugin","name":"Reusable components for CAP with cds-plugin","kind":"blog","short":"Building a cds-plugin that appends an emoji to every string","line":"The post that taught the mechanism, and it teaches it by picking a requirement small enough to be absurd: every string a service returns should end in a random emoji. Working through that on the bookshop example leaves nothing to argue about except the plumbing, which is the point — what a cds-plugin is, where it hooks in, and why packaging it beats copying it into the next project. Vinícius Barrionuevo credits this post as the thing that gave him the idea for sap-cap-sdm-plugin, and it is hard to read the plugin ecosystem in this graph without it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-04-30"},"content:rfc-bapis-meet-ai-agents-why-sap-integration-suite-mcp-server-matters":{"href":"/content/rfc-bapis-meet-ai-agents-why-sap-integration-suite-mcp-server-matters","name":"RFC/BAPIs Meet AI Agents: Why SAP Integration Suite MCP Server Matters","kind":"blog","short":"Exposing RFC-enabled BAPIs as MCP tools via Integration Suite","line":"Explains that SAP Integration Suite's MCP Server artifact can expose RFC-enabled BAPIs, alongside API artifacts and HTTP endpoints, as MCP tools — letting BAPIs on SAP ECC or on-premise S/4HANA participate in agentic workflows without rewriting business logic or waiting for a full ERP transformation. Frames RFC support as a bridge for organisations still modernising rather than a recommendation to build new RFC-based integrations, and notes the exposed BAPIs inherit the server's existing authentication, rate limiting and IP filtering. A demo built against an SAP ECC backend shows an MCP client discovering and invoking several read-only BAPIs from natural-language prompts, with no custom wrapper code.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"arunmaarirajha_kv, published 2026-07-28"},"content:run-and-deploy-cap-java-with-postgresql-on-cloud-foundry-2023":{"href":"/content/run-and-deploy-cap-java-with-postgresql-on-cloud-foundry-2023","name":"Run and Deploy SAP CAP (Java) with PostgreSQL on SAP BTP Cloud Foundry","kind":"blog","short":"CAP Java on PostgreSQL on Cloud Foundry, superseded","line":"Superseded by its own author: the post now opens with a notice that @sap/cds 7.0.0 brought native PostgreSQL support and that @cap-js/postgres should be used instead of the packages described below. Kept because that notice is the record of when the community adapter stopped being the answer.","chip":{"label":"Compatibility","tier":"poor","evidence":"1 finding"},"ai":true,"meta":"shanthakumar_krishnaswamy, published 2023-04-04"},"content:run-and-deploy-cap-java-with-postgresql-using-cap-js-postgres":{"href":"/content/run-and-deploy-cap-java-with-postgresql-using-cap-js-postgres","name":"Run and Deploy SAP CAP (Java) with PostgreSQL using Official Database Adapter @cap-js/postgres","kind":"blog","short":"CAP Java with PostgreSQL through the official @cap-js/postgres adapter","line":"The post that records a handover. The author's earlier writing relied on the community projects cds-pg and cds-dbm; this one states that both were deprecated in favour of the official PostgreSQL support arriving with @sap/cds 7, and rewrites the path around @cap-js/postgres. For CAP Java it takes a different route to the initial schema.sql than the Node.js case, and it is candid that automatic schema deployment is convenient but not always what you want. Dated evidence for why two artifacts here went quiet.","chip":{"label":"Compatibility","tier":"poor","evidence":"cds 7, line ended"},"ai":true,"meta":"shanthakumar_krishnaswamy, published 2023-08-02"},"content:run-and-deploy-cap-nodejs-or-java-with-postgresql-on-cloud-foundry":{"href":"/content/run-and-deploy-cap-nodejs-or-java-with-postgresql-on-cloud-foundry","name":"Run and Deploy SAP CAP (Node.js or Java) with PostgreSQL on SAP BTP Cloud Foundry","kind":"blog","short":"CAP Node.js and Java on PostgreSQL on Cloud Foundry, schema evolution","line":"Both runtimes in one walkthrough, and it stops on schema evolution — which is the reason to read it rather than one of the several other PostgreSQL posts here, since that is where the PostgreSQL story diverges from HANA's and the deploy stops being automatic.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"TiaXu, published 2023-07-12"},"content:run-and-deploy-cap-with-postgresql-on-cloud-foundry":{"href":"/content/run-and-deploy-cap-with-postgresql-on-cloud-foundry","name":"Run and Deploy CAP with PostgreSQL on SAP BTP Cloud Foundry (Node.js)","kind":"blog","short":"Deploying CAP Node.js with PostgreSQL to Cloud Foundry, now superseded","line":"The deployment half of the pair, two weeks after the local one, and superseded the same way: it carries the same banner directing readers to @cap-js/postgres and the official documentation. The two together are the community PostgreSQL path as it stood before the core absorbed it.","chip":{"label":"Compatibility","tier":"poor","evidence":"1 finding"},"ai":true,"meta":"published 2020-11-30"},"content:running-ai-agents-against-sap-ecc-6-0-lessons-from-building-an-in-system-mcp-ser":{"href":"/content/running-ai-agents-against-sap-ecc-6-0-lessons-from-building-an-in-system-mcp-ser","name":"Running AI agents against SAP ECC 6.0: lessons from building an in-system MCP server","kind":"blog","short":"Lessons from an in-system ABAP MCP server for SAP ECC 6.0","line":"NicolasHernandez recounts building and running, over two years, an MCP server written in plain ABAP behind a single ICF node, for SAP ECC 6.0 and S/4HANA on-premise customers that the ADT MCP Server and SAP Joule for Developers, ABAP AI capabilities do not reach. Authorization runs as the calling user rather than a technical RFC user, a choice forced by a customer security team after an earlier version used a technical RFC user, and a later security review found a display-authority check applied uniformly across every write endpoint. The failure modes that cost the most time sat in RFC connectivity itself: RFC_READ_TABLE's empty-table exception collapsed into a false success, a where-used filter was applied only after the row limit, and BAPI calls treated an empty string and an absent parameter as different, silently wrong inputs.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"NicolasHernandez, published 2026-08-28"},"content:running-cap-node-applications-in-bas-run-configurations":{"href":"/content/running-cap-node-applications-in-bas-run-configurations","name":"Running CAP Node Applications in SAP Business Application Studio","kind":"blog","short":"Run Configurations for binding and mocking CAP apps in BAS","line":"The Run Configurations tool, which is where binding and mocking live in BAS rather than in a terminal. Three things it does: several named configurations per application in a tree, dependencies bound to real service instances, and OData dependencies mocked. The author notes the configurations are standard launch entries underneath, which is the detail that lets you leave the tool behind if you want to.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"liat_b, published 2020-10-22"},"content:s-4hana-abap":{"href":"/content/s-4hana-abap","name":"S/4HANA公有云版的内部ABAP拓展","kind":"blog","short":"In-app ABAP extensibility in S/4HANA Cloud public edition, in Chinese","line":"Argues that S/4HANA Cloud public edition's in-app ABAP extensibility is still real ABAP development, just under stricter rules: developer extensions require ABAP Development Tools rather than SAP GUI transactions, data models are defined as CDS views instead of SE11 tables, business logic is a RAP behavior definition instead of a function module, and service exposure is an auto-generated OData service from a Service Definition instead of a hand-built RFC/BAPI. The piece walks a worked example — a Fiori app that triggers the Purchase Requisition API — through CDS, RAP, OData activation on SAP Gateway, and authorization via business catalogues, and frames the whitelist of released APIs and CDS views as upgrade-safety rather than a restriction.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ArthurYang, published 2025-11-24"},"content:s-4hana-observability-streaming-sap-cloud-alm-logserv-telemetry-to-bigquery-vert":{"href":"/content/s-4hana-observability-streaming-sap-cloud-alm-logserv-telemetry-to-bigquery-vert","name":"S/4HANA Observability: Streaming SAP Cloud ALM & LogServ Telemetry to BigQuery & Vertex AI","kind":"blog","short":"Streaming SAP Cloud ALM telemetry to BigQuery and Vertex AI","line":"Walks through pulling SAP Cloud ALM's Outbound Logs, Metrics and Traces APIs — OAuth 2.0 client-credentials auth, protobuf-encoded OTLP payloads, and the guardrails needed against its rate limits and 24 GB/30-day retention baseline — plus SAP LogServ's infrastructure logs, into Google BigQuery for multi-year, cross-domain storage. A time-window SQL join then correlates ABAP exceptions, health metrics, infrastructure events and ITSM tickets, with the joined record passed to Vertex AI (Gemini) to draft a structured incident dossier.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Rudrapuneet, published 2026-07-22"},"content:saas-self-onboarding-and-one-domain-in-kyma-using-cap":{"href":"/content/saas-self-onboarding-and-one-domain-in-kyma-using-cap","name":"SaaS Self-Onboarding and One-Domain Concept in SAP BTP, Kyma Runtime using CAP","kind":"blog","short":"Tenant self-onboarding and one domain for CAP SaaS on Kyma","line":"Two requirements that only appear once a SaaS application has customers: subscribing a tenant end-to-end without the provider doing it by hand, and serving every tenant from one domain instead of one host per subscriber. Kyma runtime, and the post is a summary pointing at an Expert Feature tutorial in the sample repository — it says so itself, offering a one-minute read as the entry point.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"martinfrick, published 2023-06-01"},"content:sap-advanced-event-mesh-manage-advance-event-mesh-with-api-s":{"href":"/content/sap-advanced-event-mesh-manage-advance-event-mesh-with-api-s","name":"SAP Advanced Event Mesh – Manage Advance Event Mesh with API’s","kind":"blog","short":"Overview of the REST and SEMP APIs of SAP Advanced Event Mesh","line":"Maps the API surface of SAP Advanced Event Mesh: the REST API(v2) for administering the cloud environment and its event broker services (with legacy v0/v1 noted as discouraged), SEMP(v2) for provisioning and operating a single event broker, and the open protocols and standards it supports for consuming events, among them JMS, OpenMAMA, REST, AMQP 1.0, MQTT and WebSocket. Covers how each API authenticates — bearer tokens with scoped permissions for REST API(v2), username/password or OAuth2/certificate-based for SEMP(v2) — and where to find the connection details and reference documentation for each.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Nils_Lorenz, published 2024-08-28"},"content:sap-agentic-ai-in-practice-building-the-sap-exception-log-triage-agent-part-3-of":{"href":"/content/sap-agentic-ai-in-practice-building-the-sap-exception-log-triage-agent-part-3-of","name":"SAP Agentic AI in Practice: Building the SAP Exception Log Triage Agent (Part 3 of 6)","kind":"blog","short":"Router agent triaging SM21 and SM37 errors with LangGraph sub-agents","line":"Part 3 of a six-part series builds a router agent that classifies incoming SM21 system log errors and SM37 job failures, delegates each to a specialized sub-agent built with LangGraph's create_react_agent, and correlates findings across both logs into a single severity score and escalation list. State moves through a typed dict shared between the router and its sub-agents, with tools that query SAP HANA tables directly; a reactive on-demand mode sits alongside a scheduled monitoring loop that compares error counts to a baseline and escalates automatically past a threshold. The router-plus-sub-agent split carries forward to Part 6, where the same router coordinates the assessment agents built in the series' other parts.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"DEEPA_DORAIRAJ, published 2026-04-06"},"content:sap-ai-core-agent-part-8-cloudfoundry":{"href":"/content/sap-ai-core-agent-part-8-cloudfoundry","name":"🚀 秒速で学ぶ SAP AI Core Agent 開発 🚀 - Part 8 CloudFoundry にデプロイ","kind":"blog","line":"Part 8 of a Japanese-language series deploys the Python backend and SAPUI5 chat UI built in earlier parts to SAP BTP, Cloud Foundry Runtime: the backend's manifest.yaml declares its buildpack, memory and start command for cf push, while the UI's MTA project is built with mbt build and uploaded with cf deploy, then has its ENDPOINT constant repointed at the live API's route. It closes with adding the deployed HTML5 app to SAP Build Work Zone, standard edition through Channel Manager's content sync, Content Explorer and a new Site Directory site.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Ryota_Ito, published 2025-06-16"},"content:sap-ai-services-dox-gen-ai-with-sap-cap-plugin-part-3":{"href":"/content/sap-ai-services-dox-gen-ai-with-sap-cap-plugin-part-3","name":"SAP AI Services - DOX - Gen AI with SAP CAP Plugin - Part 3","kind":"blog","short":"Custom CAP plugin for Document Information Extraction","line":"Building on Reusable components for CAP with cds-plugin by Daniel Schlachter, this part walks through a custom CAP plugin — a cds-plugin.js plus a lib_cap_dox.js helper — that authenticates against SAP's Document Information Extraction (DOX) service and calls its schema and job-status APIs to fill an entity from extracted document fields. It covers reading the service key from Cloud Foundry (cf service-key) for the OAuth token endpoint, and dynamically mapping DOX's header and line-item output onto CAP entity properties.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"sabarna17, published 2024-06-11"},"content:sap-api-management-for-beginners-part-1-what-is-apim-a-complete-features-tour":{"href":"/content/sap-api-management-for-beginners-part-1-what-is-apim-a-complete-features-tour","name":"SAP API Management for Beginners – Part 1: What Is APIM & A Complete Features Tour","kind":"blog","short":"Beginner tour of API Management features in SAP Integration Suite","line":"A features tour of SAP Integration Suite's API Management capability, opening a five-part beginner series: what a governed API proxy adds over calling a backend directly, and a walkthrough of API Providers, Proxy and Target Endpoints, the Policy Editor and Policy Templates, Products, the Developer Hub, and Key Value Maps. It names rate limiting's two complementary policies as APIM implements them: Spike Arrest, which caps requests per second or minute against bursts, and Quota, which caps total calls per day, week or month against overuse.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Rudhra, published 2026-08-03"},"content:sap-api-management-for-beginners-part-4-oauth-2-0-kvm-traffic-policies-threat-pr":{"href":"/content/sap-api-management-for-beginners-part-4-oauth-2-0-kvm-traffic-policies-threat-pr","name":"SAP API Management for Beginners – Part 4: OAuth 2.0, KVM, Traffic Policies, Threat Protection&CORS","kind":"blog","short":"OAuth 2.0, KVM, traffic and threat policies in API Management","line":"Part 4 of a five-part beginner series on API Management within SAP Integration Suite builds out a Northwind proxy's policy set: an OAuth 2.0 token server assembled from API Management's own OAuthV2 policy, a Key Value Map for backend credentials, JSON Threat Protection and CORS headers. It places Spike Arrest and Quota on the ProxyEndpoint PreFlow, each with its policy XML and a Postman test, distinguishing per-second burst throttling from a daily call cap read from the API Product's own limit.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Rudhra, published 2026-08-24"},"content:sap-api-management-sap-cloud-logging":{"href":"/content/sap-api-management-sap-cloud-logging","name":"SAP API ManagementのアクセスログをSAP Cloud Loggingで可視化する方法","kind":"blog","short":"API Management access logs in SAP Cloud Logging, in Japanese","line":"In Japanese. API Management's own screens show call counts but not the individual request log — no audit trail, no header or IP detail, which leaves auth failures hard to diagnose. The author's fix is an API Policy that builds a structured log entry with AssignMessage and forwards it through a syslog drain to SAP Cloud Logging, and confirms the ingest endpoint works by PUTting a test message to it directly with Postman before wiring the policy.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"yasuyukiuno, published 2025-09-24"},"content:sap-btp-account-architecture-best-practices-a-practitioner-s-field-guide":{"href":"/content/sap-btp-account-architecture-best-practices-a-practitioner-s-field-guide","name":"SAP BTP Account Architecture Best Practices: A Practitioner's Field Guide","kind":"blog","short":"BTP account hierarchy conventions per business domain and environment","line":"Lays out BTP account-hierarchy conventions — one subaccount per business domain and environment, a naming pattern, and a service catalogue entry with a named owner and monthly budget — against the common failure of sharing one subaccount across Dev, Test and Production. It also sets out a four-stage CI/CD pipeline that builds, tests in a Dev subaccount, then stages through Test to Production, naming SAP Continuous Integration and Delivery or Jenkins/GitHub Actions with the BTP CLI as the tooling.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"basanireddy, published 2026-07-10"},"content:sap-btp-audit-log-access-just-got-easier-here-s-what-s-new":{"href":"/content/sap-btp-audit-log-access-just-got-easier-here-s-what-s-new","name":"SAP BTP Audit Log Access Just Got Easier - Here’s What’s New","kind":"blog","short":"Audit Log Viewer without per-subaccount subscription","line":"Announces that the Audit Log Viewer no longer needs a per-subaccount subscription: entitlement and setup now happen automatically in every subaccount of SAP Audit Log service. It also adds a viewer at the Global Account level, opened directly from the BTP cockpit rather than through a dedicated instance.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"AnisaTuscano, published 2026-03-10"},"content:sap-btp-audit-log-enable-and-retrieve-logs":{"href":"/content/sap-btp-audit-log-enable-and-retrieve-logs","name":"SAP BTP Audit log Enable and retrieve logs","kind":"blog","short":"Enabling and retrieving SAP Audit Log service records on Cloud Foundry","line":"Walks through enabling and retrieving records from the SAP Audit Log service on SAP BTP's Cloud Foundry environment: the default oAuth2 service plan retains audit data for 90 days at no cost, while the premium plan adds a configurable retention period and lets an application write its own audit data. Covers the three subscription plans (premium, default for a subaccount, central for a global account) and the CLI steps to create a service instance and key, then retrieve records as JSON through the Auditlog Management Service's REST API using an OAuth2 client-credentials token in Postman.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"anikesh_jyotishi2, published 2024-07-12"},"content:sap-btp-ci-building-open-source-custom-adapter-eventsmartkafka-from-zero-with-sa":{"href":"/content/sap-btp-ci-building-open-source-custom-adapter-eventsmartkafka-from-zero-with-sa","name":"SAP BTP - CI - Building Open-Source Custom Adapter EventSmartKafka from Zero with SAP ADK - Part II","kind":"blog","short":"Runtime of the EventSmartKafka custom adapter built with SAP ADK","line":"Part II of a series on EventSmartKafka, an open-source Kafka adapter for Cloud Integration in SAP Integration Suite built with the SAP Adapter Development Kit, walks through the runtime behind a custom adapter: how metadata.xml's fields map onto Java Endpoint properties, how the Component class creates the Endpoint, and how the Consumer's doStart() and doPoll() poll Apache Kafka, convert Avro payloads and dispatch the record into the iFlow pipeline. Its central point is that the Kafka offset must be committed only after the pipeline has processed the message successfully, with a worked table of which failure scenarios (missing Confluent magic byte, invalid schema ID, payload over the configured limit) withhold the commit versus let it through, to avoid poison-pill loops and silent message loss. The adapter is published as a community demo and not SAP-certified or production-validated; Part III covers building the SAP ADK project itself.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"rhviana, published 2026-06-03"},"content:sap-btp-ci-eventsmartkafka-custom-kafka-adapter-from-esa-v1-1-0-validated-runtim":{"href":"/content/sap-btp-ci-eventsmartkafka-custom-kafka-adapter-from-esa-v1-1-0-validated-runtim","name":"SAP BTP - CI - EventSmartKafka - Custom Kafka Adapter From .ESA v1.1.0 - Validated Runtime - Part IV","kind":"blog","short":"EventSmartKafka v1.1.0 adapter with mutual TLS for Cloud Integration","line":"Part IV of a series on EventSmartKafka, an open-source Kafka Consumer adapter for SAP Cloud Integration in SAP Integration Suite, built with the SAP Adapter Development Kit. The v1.1.0 release adds mutual TLS client-certificate authentication against the broker, fixes an OSGi classloader bug where a redeployed bundle's static registry lost track of a still-open relay socket from the previous classloader (fixed with a JVM-wide System-property registry instead), replaces infinite retry loops on fatal configuration errors with a fail-fast stop, corrects two offset-handling bugs in timestamp-based message recovery, adds a parallel-consumer option, and drops a planned OAuth2 strategy because no tier of the tested broker services (Confluent Cloud, Redpanda Cloud, Aiven) exposed it for testing on a free plan. The author reports the release validated across 3,000,000 messages over four simultaneous listeners (PLAINTEXT, SASL, SASL_SSL, mTLS) on an SAP BTP Trial tenant with zero failures, closing the adapter's Consumer side before a planned Producer adapter.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"rhviana, published 2026-06-29"},"content:sap-btp-ci-eventsmartkafka-custom-kafka-adapter-part-v-final":{"href":"/content/sap-btp-ci-eventsmartkafka-custom-kafka-adapter-part-v-final","name":"SAP BTP - CI - EventSmartKafka - Custom Kafka Adapter - Part V FINAL","kind":"blog","short":"Final part on the EventSmartKafka adapter for Cloud Integration","line":"EventSmartKafka is an open-source Kafka Consumer/Sender adapter for SAP Cloud Integration in SAP Integration Suite, built with the SAP Adapter Development Kit; it reaches Apache Kafka over SASL, SASL_SSL and mutual TLS, with on-premise brokers reached through Cloud Connector. This final release adds Avro-to-JSON/XML conversion, schema registry integration, message recovery by timestamp and Kafka producer support. The author reports the consumer validated past 6.5 million processed messages with zero failures and the producer run continuously for more than 20 hours, with deployment lifecycle testing — deleting, upgrading and redeploying the adapter — showing no runtime interruption.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"rhviana, published 2026-07-28"},"content:sap-btp-ci-how-i-built-an-open-source-enterprise-custom-kafka-adapter-from-scrat":{"href":"/content/sap-btp-ci-how-i-built-an-open-source-enterprise-custom-kafka-adapter-from-scrat","name":"SAP BTP - CI - How I Built an Open-Source Enterprise Custom Kafka Adapter from Scratch - Part I","kind":"blog","short":"Building EventSmartKafka, an open-source Cloud Integration adapter","line":"Part I of a series on EventSmartKafka, an open-source Apache Kafka adapter the author built with the SAP Adapter Development Kit to extend SAP Cloud Integration in SAP Integration Suite past the standard adapter's offset management, security options and Avro handling. It covers the architecture: granular offset control via seek(), a security UI that switches between SASL, mutual TLS and OAuth profiles, native Avro-to-JSON/XML conversion against a Schema Registry, configurable resilience policies, and on-premise reach through Cloud Connector. The adapter already runs against a live Confluent Cloud Kafka topic in a real tenant; the source code follows from Part II onward.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"rhviana, published 2026-05-29"},"content:sap-btp-ci-immutable-event-routing-per-domain-with-metadata-driven-consumer-orch":{"href":"/content/sap-btp-ci-immutable-event-routing-per-domain-with-metadata-driven-consumer-orch","name":"SAP BTP - CI - Immutable Event Routing per Domain with Metadata-Driven Consumer Orchestration","kind":"blog","short":"Metadata-driven Smart Router for Kafka events in Cloud Integration","line":"Describes a metadata-driven \"Smart Router\" pattern for Cloud Integration in SAP Integration Suite: one Kafka Sender Adapter per domain reads a wildcard topic, and a single immutable router iFlow resolves single, multiple or both consumers at runtime from Value Mapping entries and a Groovy script, instead of one adapter and iFlow per consumer added. It compares three candidate architectures — a two-layer router/dispatcher split, the recommended single-layer router, and a rejected global cross-domain router — and covers AVRO payload handling through Base64 and an externalized schema parameter, and consolidating the routing logic into one cached Groovy class to limit JVM class-loading overhead. The piece continues the author's earlier immutable Kafka topic routing post and names SAP Event Mesh as one of several broker-agnostic alternatives to the Kafka adapter used here.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"rhviana, published 2026-05-25"},"content:sap-btp-cloud-foundry-job-scheduling-for-cap-based-project":{"href":"/content/sap-btp-cloud-foundry-job-scheduling-for-cap-based-project","name":"SAP BTP Cloud foundry Job Scheduling for CAP based project","kind":"blog","short":"Calling a CAP action on a schedule with SAP Job Scheduling service","line":"Walks through binding the SAP Job Scheduling service's trial instance to a CAP application's own custom action endpoint, so the service calls it on a configured interval and keeps a log of each run. The action itself is ordinary application code — here, sending an email through a third-party library — and the trial subaccount the author used could only run the job once, not on a repeating schedule.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"sunojmichael1, published 2021-03-15"},"content:sap-btp-destinations-in-a-nutshell-part-1-motivation-noauthentication-destinatio":{"href":"/content/sap-btp-destinations-in-a-nutshell-part-1-motivation-noauthentication-destinatio","name":"SAP BTP Destinations in a Nutshell Part 1 - Motivation & NoAuthentication Destinations","kind":"blog","short":"NoAuthentication destinations between two CAP Node.js apps","line":"Opens a series on SAP BTP Destinations by walking through the simplest case, a NoAuthentication destination from one CAP Node.js app to another on Cloud Foundry, shown two ways: executeHttpRequest from @sap-cloud-sdk/http-client, and a manual sequence that reads the destination service's credentials from VCAP_SERVICES, fetches an OAuth token, and requests the destination by name before calling its URL. The manual path is written deliberately verbose to show what the Cloud SDK call does behind the scenes; later parts of the series cover the other destination types.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"JakobFra, published 2023-05-23"},"content:sap-btp-kyma-service-mesh":{"href":"/content/sap-btp-kyma-service-mesh","name":"SAP BTP - KYMA - SERVICE MESH","kind":"blog","short":"Service mesh for side-by-side extensions on Kyma","line":"The service mesh as it applies to side-by-side extensions — what it gives you between services once more than one of them is deployed. Definitional in places, and it quotes the official documentation for the concept before showing the use.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"maxi1555, published 2023-09-15"},"content:sap-btp-platform-technical-user-for-ctms-integration":{"href":"/content/sap-btp-platform-technical-user-for-ctms-integration","name":"SAP BTP Platform Technical User for CTMS Integration","kind":"blog","short":"Technical user in Cloud Identity Services for CTMS destinations","line":"Walks through creating a technical user in Cloud Identity Services (IAS) as a custom identity provider, adding it to a subaccount's org, space and role collections, and switching a Destinations entry's authentication to OAuth2Password with the Cloud Foundry login endpoint as token service URL and an origin property naming the custom IDP. The technical user lets CI/CD pipelines, API calls and transport automation authenticate without human credentials, keeping service accounts separate from people for audit and access control.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Marudhu999, published 2026-03-09"},"content:sap-btp-sdk-for-ios-and-cap-with-odata-v4-support":{"href":"/content/sap-btp-sdk-for-ios-and-cap-with-odata-v4-support","name":"SAP BTP SDK for iOS & CAP with OData V4 support","kind":"blog","short":"OData V4 support in the BTP SDK for iOS for CAP services","line":"The iOS SDK gaining OData V4, which until then made connecting a native app to a CAP service awkward — CAP defaults to v4 and the SDK did not speak it. Short, and it marks the date that stopped being a problem.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"KRiedelsheimer, published 2021-04-21"},"content:sap-build-process-automation":{"href":"/content/sap-build-process-automation","name":"SAP Build Process Automationで「グループ宛て承認ワークフロー」を構築する","kind":"blog","short":"Group approval workflow in Build Process Automation, in Japanese","line":"Walks through building a group-addressed approval workflow in SAP Build Process Automation: a user group created in SAP Cloud Identity Services is bound to the app so an approval step can send one request to every group member's inbox at once, closing as soon as any one of them acts. The approval form shown in that inbox carries a Claim button that hides a claimed task from the other members, and the workflow's approval step binds its group recipients to the field the requester chose on the start form.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"takayuki_tanaka, published 2025-07-25"},"content:sap-business-technology-platform-authorization-and-trust-management-service":{"href":"/content/sap-business-technology-platform-authorization-and-trust-management-service","name":"SAP Business Technology Platform: Authorization and Trust Management Service","kind":"blog","short":"Scopes, role templates and OAuth flows of XSUAA on BTP","line":"Walks through how the SAP Authorization and Trust Management service secures a BTP application: scopes, attributes and role templates in the security descriptor, and the OAuth 2.0 resource-owner, client and resource-server roles it builds on. Covers the XSUAA microservice as the OAuth 2.0 authorization server bound to each application through its service broker, the signed JSON Web Token it issues after authentication, and the App Router's place in front of the resource apps as the gateway that starts authentication and checks for cross-site request forgery.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SekhuteTK, published 2022-09-09"},"content:sap-cap-adapter-to-expose-odata-as-custom-rest-service":{"href":"/content/sap-cap-adapter-to-expose-odata-as-custom-rest-service","name":"SAP CAP Adapter to expose OData as custom REST Service","kind":"blog","short":"Re-exposing an imported OData V2 service as REST in CAP","line":"Walks through consuming an external OData V2 service in a CAP project — cds import converts the Northwind service's EDMX into a CSN and cds.connect.to wires up the remote proxy — then re-exposing it as plain REST with the @protocol:'rest' annotation instead of OData's own envelope. Shows two ways to reshape the response, renaming and dropping fields in a CDS projection or rewriting the returned objects in a custom service handler, and remaps ?pageSize and ?offset onto OData's $top and $skip in that same handler.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Former Member, published 2021-09-15"},"content:sap-cap-best-vscode-extensions-for-typescript-development":{"href":"/content/sap-cap-best-vscode-extensions-for-typescript-development","name":"SAP CAP: Best VSCode extensions for TypeScript development (UI5 & NodeJS)","kind":"blog","short":"VS Code extensions for CAP with TypeScript, Node.js and UI5","line":"A working editor setup for CAP with TypeScript, listed extension by extension across the Node.js and UI5 halves. The kind of post that ages by attrition rather than by being wrong — the reasoning about what an editor needs to know about a CDS project outlives any particular extension in the list.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-04-29"},"content:sap-cap-cloud-application-programming":{"href":"/content/sap-cap-cloud-application-programming","name":"SAP CAP(Cloud Application Programming)开发框架概述","kind":"blog","short":"Overview of CAP built from capire's About CAP page, in Chinese","line":"A Chinese-language walkthrough of CAP built mainly from CAPire's own \"About CAP\" page: CDS entities, associations, compositions and aspects for data modelling, with an extend Books with @restrict: [{ grant:'WRITE', to:'admin' }] aspect as its authorization example; CQL and CQN queries shown against both a local service and OData's $select/$expand; and the service-and-event model — this.on, this.emit, srv.on — that carries CAP's async processing. It closes with the author's own setup: installing @sap/cds-dk, scaffolding a bookshop project with cds init, and running it with cds watch against local SQLite, mocked authentication and file-based messaging standing in for HANA Cloud, IAS and Kafka.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ArthurYang, published 2024-01-07"},"content:sap-cap-consume-sap-api-hub-sandbox-data-as-an-external-service-part-1":{"href":"/content/sap-cap-consume-sap-api-hub-sandbox-data-as-an-external-service-part-1","name":"SAP CAP: Consume SAP API Hub Sandbox Data as an external service Part- 1","kind":"blog","short":"Consuming the API Hub Business Partner sandbox from CAP Node.js","line":"Walks through consuming SAP API Business Hub's Business Partner sandbox API from a CAP Node.js project: @sap/cds-dk's cds import turns the downloaded EDMX into a CSN model and a cds.requires entry, a projection service exposes it, and a custom handler forwards reads to the proxy through @sap/cds's cds.connect.to and bp.run(req.query). Reaching the sandbox needs the API key added as a header on that same credentials block, since the destination service that would carry it is left for a promised part two.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"DebashishDas, published 2022-03-17"},"content:sap-cap-controller-service-repository-architecture":{"href":"/content/sap-cap-controller-service-repository-architecture","name":"SAP CAP: Controller - Service - Repository architecture","kind":"blog","short":"Controller, service and repository layers in a CAP application","line":"The pattern the author's two libraries exist to support, set out as a whole rather than one package at a time: a controller layer receiving the request, a service layer holding business logic, and a repository layer owning persistence — the separation CAP leaves to the developer once a model has produced an OData service. Read after the dispatcher and repository posts, or before them as the argument for both.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-04-22"},"content:sap-cap-function-and-action-with-unstructured-dynamic-type-input-output":{"href":"/content/sap-cap-function-and-action-with-unstructured-dynamic-type-input-output","name":"SAP CAP function and action with Unstructured/Dynamic Type Input/Output","kind":"blog","short":"CAP actions and functions with open, unstructured types","line":"A CAP action or function can take or return an unstructured type: annotate the service @protocol: 'rest', declare the parameter or return value as @open type object {}, and a handler shapes the payload however a given request needs, shown here with a bound action and a function that returns a different structure per input. The text states plainly that OData V4 and GraphQL services require a fixed structure for action and function parameters, so the dynamic type works only over CAP's REST protocol.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2022-12-08"},"content:sap-cap-jwt-token-flow-in-code":{"href":"/content/sap-cap-jwt-token-flow-in-code","name":"SAP CAP JWT Token Flow in code","kind":"blog","short":"How the JWT reaches req.headers.authorization in a CAP handler","line":"One question, answered precisely: at what point does the JWT exist and how does it end up on req.headers.authorization in a CAP handler. XSUAA issues it and the approuter carries it, and the post follows it through both.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"sandeepmalhotra, published 2023-04-03"},"content:sap-cap-lessons-learned-quick-deployment-with-manifest-and-cf-push":{"href":"/content/sap-cap-lessons-learned-quick-deployment-with-manifest-and-cf-push","name":"SAP CAP Lessons Learned: Quick deployment with manifest and cf push","kind":"blog","line":"Shows a shortcut for testing CAP behaviour that only shows up on SAP BTP: a manifest.yml scoped to the service module (path: gen/srv, the service's bound BTP services), generated quickly with cds add cf-manifest, then cds build -- production followed by cf push to send just that module. This partial deployment skips the database and UI, so the author notes it can skip usual build tasks and any other change still needs a full MTA build and deploy.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"LucasMagriniRigo, published 2025-01-07"},"content:sap-cap-on-hana-xsa-scaling-industrial-data-applications":{"href":"/content/sap-cap-on-hana-xsa-scaling-industrial-data-applications","name":"SAP CAP on HANA XSA: Scaling Industrial Data Applications Beyond the Cloud","kind":"blog","short":"CAP on HANA 2.0 XSA on-premise for mass industrial data ingestion","line":"CAP on HANA 2.0 XSA rather than on BTP — on-premise, and chosen for throughput. Mass ingestion through native stored procedures, which is the point at which CDS stops being the right tool and the post says so.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"rgadirov, published 2026-03-09"},"content:sap-cap-recent-enhancements-the-hana-dev-should-know-about":{"href":"/content/sap-cap-recent-enhancements-the-hana-dev-should-know-about","name":"SAP CAP Recent Enhancements the HANA Dev Should Know About","kind":"blog","short":"CAP features for HANA developers up to late 2021","line":"Thomas Jung walks through CAP features for HANA database developers that landed through late 2021: doc comments in the data model (CDL comments propagated into generated database objects via the package.json cdsc.docs compiler option), and schema evolution reaching general availability in the November 2021 release, using the @cds.persistence.journal annotation and cds.hana.journal settings to generate incremental hdbmigrationtable migration scripts instead of dropping and recreating tables. It also walks through two features outside those two: window functions in view column definitions, added in the December 2021 release, and a beta assert_integrity setting that generates database foreign-key constraints from 1:1 associations and compositions.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2022-02-15"},"content:sap-cap-remote-services-and-sap-fiori-elements":{"href":"/content/sap-cap-remote-services-and-sap-fiori-elements","name":"SAP CAP Remote Services & SAP Fiori Elements","kind":"blog","short":"Fiori elements over a CAP service projecting a remote service","line":"What happens to a generated UI when the data is not local: a CAP service projecting a remote one, with Fiori elements on top. The author explored it to find out where the abstraction holds, which is the useful register for this.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Former Member, published 2021-05-20"},"content:sap-cap-with-prostgres-serice-in-btp":{"href":"/content/sap-cap-with-prostgres-serice-in-btp","name":"SAP CAP With Prostgres Serice in BTP","kind":"blog","line":"A step-by-step walkthrough of a CAP bookshop project on @cap-js/postgres, provisioning PostgreSQL on SAP BTP, hyperscaler option's trial plan through mta.yaml, building the MTA archive and deploying it to Cloud Foundry by hand, then inspecting the deployed database with pgAdmin over an SSH tunnel. It updates an earlier post by Mike Zaschka on the same topic to the package CAP now ships by default, though the manual build-and-deploy sequence it shows predates cds up folding those steps into one command by a day.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"satya-dev, published 2025-03-30"},"content:sap-capv7-node-js-highlights-and-experiences":{"href":"/content/sap-capv7-node-js-highlights-and-experiences","name":"SAP CAPv7 - Node.js Highlights and Experiences","kind":"blog","short":"Upgrading a 100+ table CAP Node.js project from v6 to v7","line":"An account of upgrading a 100+ table CAP Node.js project from v6 to v7, working through breaking changes in @sap/cds 7: event handlers now always receive an array, service paths move under /odata/v4/... unless serve_on_root is set, and cds-serve replaces cds run. It goes deepest on the GraphQL plugin, @cap-js/graphql: the /graphql endpoint it serves, Composition results wrapped in a nodes connection, and offset-based pagination reached through OData's top and skip rather than GraphQL's own limit and offset.","chip":{"label":"Compatibility","tier":"poor","evidence":"cds 7, line ended"},"ai":true,"meta":"published 2023-08-03"},"content:sap-ci-to-abap-integration-seamless-xml-to-internal-table-mapping":{"href":"/content/sap-ci-to-abap-integration-seamless-xml-to-internal-table-mapping","name":"SAP CI to ABAP Integration: Seamless XML to Internal Table Mapping","kind":"blog","short":"Shaping Cloud Integration XML for an ABAP internal table","line":"Shapes an XML payload in SAP Cloud Integration with the mandatory abap/values wrapper tags so ABAP can deserialise it straight into an internal table with CALL TRANSFORMATION id, the same identity transformation ABAP uses for asJSON. Derives the XSD for that shape from an RFC-enabled function module's WSDL instead of writing it by hand, then exchanges the XML over a plain HTTP client call to a destination.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Ravi_Bharti08, published 2026-02-26"},"content:sap-cloud-application-programming-model-cap-part-1":{"href":"/content/sap-cloud-application-programming-model-cap-part-1","name":"SAP Cloud Application Programming Model（CAP）：概要およびデモ - Part 1","kind":"blog","short":"CAP overview and bookshop demo, in Japanese","line":"Introduces SAP Cloud Application Programming Model as an open, opinionated framework that shoulders OData plumbing and database-specific code so a domain is modelled once in CDS, then builds a small bookshop project to show it: @sap/cds-dk's cds init scaffolds the project, cds watch serves it locally with live reload against an in-memory SQLite database, and a CatalogService projects a CDS domain model seeded from CSV files. The result is read as an OData service in the browser and exercised further through a Postman collection, with the optional @sap/vscode-cds extension noted for CDS syntax highlighting and completion in VS Code.","chip":{"label":"Compatibility","tier":"poor","evidence":"cds 4, line ended"},"ai":true,"meta":"rasai, published 2020-12-31"},"content:sap-cloud-application-programming-model-cap-part-2":{"href":"/content/sap-cloud-application-programming-model-cap-part-2","name":"SAP Cloud Application Programming Model（CAP）：カスタムロジックの実装 – Part 2","kind":"blog","short":"Before, on and after handlers in a CAP bookshop, in Japanese","line":"A walkthrough of implementing custom logic in a CAP Node.js service for the capire bookshop sample, registering before, on and after handlers around the generated CRUD service for its Books and Orders entities. The before handler validates an incoming order's amount and runs a transactional CQN UPDATE to decrement stock, raising a 400 or 409 through req.error when the amount is invalid or no rows match; an after handler on READ appends a discount note to overstocked books.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"rasai, published 2021-01-01"},"content:sap-cloud-application-programming-model-start-here":{"href":"/content/sap-cloud-application-programming-model-start-here","name":"SAP Cloud Application Programming Model (CAP) - start here","kind":"blog","short":"Orientation index for CAP, maintained from 2018 to 2021","line":"The orientation post for CAP, published in 2018 and revised in 2020 and again in 2021 with help credited to Iwona Hahn — which is the unusual part: a starting-point index that was maintained rather than left to rot, and says so at the top. Read as the shape of what a newcomer was pointed at, and as a marker of how much of that changed inside three years.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2018-10-10"},"content:sap-cloud-integration-ci-cpi-reusable-script-collection-pattern-for-sensitive-da":{"href":"/content/sap-cloud-integration-ci-cpi-reusable-script-collection-pattern-for-sensitive-da","name":"SAP Cloud Integration (CI/CPI) - Reusable Script Collection Pattern for Sensitive Data Masking","kind":"blog","short":"Reusable scripts for masking sensitive data in Cloud Integration","line":"Opens with the question compliance teams ask about Cloud Integration, whether an integration team based outside Europe with Message Monitoring access can read the personal data in a logged payload, and answers that in most standard configurations it can. The pattern against it is a reusable Groovy script collection plus one global variable holding the masking rules: a script near the start of an iFlow AES-encrypts the original payload into a header or property and replaces values in the body by value pattern first and field-name keyword second, a second script restores the original just before the sender, so a Log Payload step anywhere in the flow captures the masked body while the target system still receives the real data. The post names its own limits, that pattern-based masking is heuristic and that CPI trace can capture the payload before the scripts run, and grounds the pattern in GDPR Articles 5(1)(f), 25, 32 and 44-49, reading the EDPB's Guidelines 05/2021 to mean that access from a country without an EU adequacy decision, uncovered by Standard Contractual Clauses or another valid transfer mechanism, can itself constitute a cross-border transfer.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"AdarshRao, published 2026-05-25"},"content:sap-cloud-integration":{"href":"/content/sap-cloud-integration","name":"SAP集成套件中的Cloud Integration云集成功能概况介绍","kind":"blog","short":"Overview of Cloud Integration in SAP Integration Suite, in Chinese","line":"An overview of Cloud Integration within SAP Integration Suite: it positions Cloud Integration as the execution engine that processes and moves messages between systems, working alongside Integration Advisor, Trading Partner Management and API Management. It walks through building an integration flow in the low-code editor — connecting over HTTP/OData or RFC with built-in connectors and prebuilt content, transforming and mapping messages, then deploying and monitoring the flow — and closes by naming PI/PO Move, SAP's tooling to assess and migrate existing PI/PO integration content into the suite.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ArthurYang, published 2025-10-28"},"content:sap-cloud-platform-backend-service-tutorial-11-cds-magic-key-generation":{"href":"/content/sap-cloud-platform-backend-service-tutorial-11-cds-magic-key-generation","name":"SAP Cloud Platform Backend service: Tutorial [11]: CDS : magic: key: generation","kind":"blog","short":"Generated UUID keys in CDS for SAP Cloud Platform Backend service","line":"Explains CDS's UUID key type: giving a key property UUID gets its value generated automatically instead of a hand-picked unused number, as data modelling lets an element's type do, at the cost of a 36-character value unfit for a user-facing display. It then works out how that generated value is addressed in a single-entity read URL — bare brackets in OData V4 against the guid'...' literal V2 requires — citing the OData specification for the difference.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"CarlosRoggan, published 2019-03-15"},"content:sap-cloud-platform-backend-service-tutorial-12-cds-local-build":{"href":"/content/sap-cloud-platform-backend-service-tutorial-12-cds-local-build","name":"SAP Cloud Platform Backend service: Tutorial [12]: CDS : local: build","kind":"blog","short":"Compiling a CDS model locally with the cds CLI","line":"Compiling a CDS model locally with the cds command-line tool, installed from @sap/cds via SAP's own npm registry, before uploading it to SAP Cloud Platform Backend service: cds compile converts the model to CSN by default, --to edmx or --to edm produces the OData V2 or V4 metadata document, and --to hana or --to sql produces the database-specific definition files. It shows the local build catching an error the CDS editor's own validation misses — an entity with no key, valid CSN but invalid OData — before the same model reaches the server's compiler.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"CarlosRoggan, published 2019-04-15"},"content:sap-codejam-on-event-driven-build-process":{"href":"/content/sap-codejam-on-event-driven-build-process","name":"SAP Codejam on Event Driven Build Process","kind":"blog","short":"CodeJam on Business Partner events through Advanced Event Mesh","line":"A hands-on CodeJam walkthrough of an event-driven flow: a Business Partner creation event from a simulated S/4HANA Cloud system is published to SAP Advanced Event Mesh, where the author configures topics, queues and subscriptions and forwards it through a REST Delivery Point to SAP Build Process Automation, which runs a business process with a human approval step and an asynchronous callback to a third-party system. The event producer stays unaware of its consumers, with SAP Build acting purely as an orchestrator reacting to events.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Sharathmg, published 2026-02-03"},"content:sap-data-and-analytics-showcase-cap-machine-learning-application":{"href":"/content/sap-data-and-analytics-showcase-cap-machine-learning-application","name":"SAP Data and Analytics Showcase – Use SAP Cloud Application Programming Model to Develop a Machine Learning Application on SAP BTP","kind":"blog","short":"CAP machine learning application built in Business Application Studio","line":"The instalment where the showcase becomes code: the CAP application built in Business Application Studio, and the sub-scenario it covers implemented step by step. The overview post is the one that says why this piece exists at all.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"former_member10846, published 2022-08-12"},"content:sap-data-and-analytics-showcase-machine-learning-on-btp":{"href":"/content/sap-data-and-analytics-showcase-machine-learning-on-btp","name":"SAP Data and Analytics Showcase - Develop a Machine Learning Application on SAP BTP","kind":"blog","short":"Overview of a data and analytics machine learning showcase on BTP","line":"The overview post of a showcase written by three authors, setting out the dataset, the scenario and the solution map before any of it is built. Its job is to say which piece goes where across the SAP data and analytics portfolio; the CAP application is one station on that map rather than the subject.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"former_member10846, published 2022-08-12"},"content:sap-datasphere-integration-patterns-lessons-learned-from-two-years-of-implementa":{"href":"/content/sap-datasphere-integration-patterns-lessons-learned-from-two-years-of-implementa","name":"SAP Datasphere Integration Patterns: Lessons Learned from Two Years of Implementations","kind":"blog","short":"Datasphere integration patterns from two years of projects","line":"Two years of production SAP Datasphere integrations across SAP and non-SAP sources, settling on Replication Flows over remote access for high-volume Finance analytics because remote queries added latency at query time, then tuning the copy with Datasphere-side partitioning, source-side CDS view optimisation and Cloud Connector sizing. For file-based and Kafka sources, SAP Integration Suite iFlows did work a direct connection could not — flattening nested JSON, PGP decryption and orchestrating the SAP Ariba extraction built on SAP's own BTP Procurement Data Extractor content.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"saikrishna_kalivarapu2, published 2026-08-17"},"content:sap-developer-new-july-3rd-2026":{"href":"/content/sap-developer-new-july-3rd-2026","name":"SAP Developer New, July 3rd 2026","kind":"video","short":"Developer news with a segment on CAP schema evolution","line":"A \"Did You Know\" segment in this SAP Developer News video walks through schema evolution: CAP's ability to add a new field to an entity, or make a compatible change to an existing one, then redeploy the model with no data loss or manual migration. The rest of the July 2026 episode covers that month's Developer Challenge, a SAP HANA Cloud Q2 release announcement and a UI5 survey call, none explained in substance here.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-07-02"},"content:sap-ehs-public-cloud-extending-your-existing-landscape-side-by-side-guidebook-pa":{"href":"/content/sap-ehs-public-cloud-extending-your-existing-landscape-side-by-side-guidebook-pa","name":"SAP EHS Public Cloud: Extending Your Existing Landscape Side-by-Side - Guidebook (Part 4)","kind":"blog","short":"iFlows consuming S/4HANA equipment events from Event Mesh for EHS","line":"Two custom iFlows in SAP Integration Suite subscribe over AMQP to Event Mesh queues, triggered by SAP S/4HANA On-Premise's Enterprise Event Enablement channels publishing Equipment and Functional Location changes; each flow calls the on-premise OData API, maps the result, and pushes it into SAP S/4HANA Cloud Public Edition through the SAP_COM_0395 communication scenario. The synchronized Plant Maintenance data feeds SAP EHS Public Cloud's risk management, incident management and emissions management processes, which otherwise have no asset master data of their own.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"duynguyendeloitte, published 2025-11-28"},"content:sap-email-functionality-in-sap-with-a-custom-function-module":{"href":"/content/sap-email-functionality-in-sap-with-a-custom-function-module","name":"SAP: Email Functionality in SAP with a Custom Function Module","kind":"blog","short":"ABAP function module sending email with attachments through BCS","line":"A custom ABAP function module, ZFM_SEND_EMAIL, sends mail through Business Communication Services' CL_BCS and CL_DOCUMENT_BCS classes, adding TO/CC/BCC recipients and multiple attachments by building the HTML document in application code on top of what CL_BCS delivers, which is how ABAP's notifications capability describes mail going out. The send sits in a TRY structure whose three CATCH blocks for CL_BCS's class-based exceptions are empty, so what reaches the caller is a BAPIRET2 table that BAPI_MESSAGE_GETDETAIL fills on the paths without an exception: no recipients given, sent to all, or not sent. That conversion into a caller-facing message table is what ABAP's error handling capability leaves to the application.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Surendra_Karma, published 2024-12-16"},"content:sap-event-mesh-architecture-patterns":{"href":"/content/sap-event-mesh-architecture-patterns","name":"SAP Event Mesh Architecture Patterns","kind":"blog","short":"Nine patterns for queues, topics and webhooks in Event Mesh","line":"Nine architectural patterns for wiring producers and consumers through queues, topics and webhooks: single-subscriber point-to-point delivery, fan-out to multiple subscribers, filtering several event types into one subscriber, domain-scoped topic subscriptions, an aggregator that bundles related events, a multi-stage enrichment pipeline, scatter-gather over parallel requests, a dead-letter queue for poison messages, and pushing events to an HTTP webhook. Each pattern states its motivation, a pros-and-cons pair, when to use it and example queue or topic names.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"vbalko-claimate, published 2025-05-16"},"content:sap-event-mesh-cap-based-implementation-single-tenant":{"href":"/content/sap-event-mesh-cap-based-implementation-single-tenant","name":"[Blog Post] SAP Event Mesh – CAP based implementation of SAP Event Mesh in a Single-Tenant Scenario","kind":"blog","short":"Event Mesh through CAP messaging in a single-tenant scenario","line":"The instalment of the Deep Dive series where the framework arrives. The earlier posts consumed Event Mesh over its REST API, so this one is explicitly a comparison: the same thing through CAP's messaging abstraction, with the three flavours — local, file-based and a real broker — named before the broker one is built.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"AyushKumar and vipul.khullar, published 2022-06-06"},"content:sap-event-mesh-consuming-s4-events-in-cap-and-integration-suite":{"href":"/content/sap-event-mesh-consuming-s4-events-in-cap-and-integration-suite","name":"[Blog Post] SAP Event Mesh - Consuming S4 events simultaneously in CAP-based applications and SAP Integration Suite","kind":"blog","short":"One S/4HANA event consumed by CAP Java and Integration Suite","line":"One S/4HANA event, two consumers at once: a CAP Java application and SAP Integration Suite. Late in a long Deep Dive series and written as such — the queues, the S/4HANA connection and the Integration Suite side were all established in earlier posts, so this is the part where they meet.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"AyushKumar and vipul.khullar, published 2023-03-24"},"content:sap-event-mesh-s4-hana-on-prem-and-sap-ci-btp-is-through-websocket-and-webhooks":{"href":"/content/sap-event-mesh-s4-hana-on-prem-and-sap-ci-btp-is-through-websocket-and-webhooks","name":"SAP Event Mesh: S4 HANA On-Prem and SAP CI(BTP IS) through WebSocket and Webhooks","kind":"blog","short":"Event Mesh between on-premise S/4HANA and Cloud Integration","line":"A step-by-step walkthrough of wiring Event Mesh to publish and consume events between an on-premise S/4HANA system and Cloud Integration, contrasting persistent queues (one subscriber, kept until consumed) against unpersisted topics, and WebSocket's AMQP transport against webhook delivery for the same queue. Two tested findings support it: a queue consumer running in continuous consumption mode receives a message ahead of a webhook on the same topic, and a message stays queued and is retried (almost 8770 times in under a minute, in the author's test) until the consumer processes it successfully.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"FarooqAhmed, published 2023-10-03"},"content:sap-fiori-application-generator-available-in-open-source":{"href":"/content/sap-fiori-application-generator-available-in-open-source","name":"SAP Fiori Application Generator Available in Open Source","kind":"blog","line":"The SAP Fiori tools team announces that the code behind @sap/generator-fiori has moved entirely to open source, and names the packages it is built from: writers that output SAP Fiori elements and freestyle SAPUI5 application files, inquirer prompts for picking a back end, and ABAP deploy tasks, coordinated by a sub-generator. Before publishing, the team broke up what had been a monolith, added TypeScript typings and raised test coverage.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"jlong, published 2025-05-27"},"content:sap-fiori-elements-using-cap-model-introduction":{"href":"/content/sap-fiori-elements-using-cap-model-introduction","name":"SAP Fiori Elements using CAP Model - Introduction","kind":"blog","short":"Introduction to a Fiori elements demo project on a CAP model","line":"The introduction to a demo project, and it says where the project came from — exploring what the then-new Fiori tools could do. Context rather than code; the List Report post is the one that builds.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"jhodel18, published 2020-09-29"},"content:sap-fiori-elements-using-cap-model-list-report-app":{"href":"/content/sap-fiori-elements-using-cap-model-list-report-app","name":"SAP Fiori Element using CAP Model – List Report App","kind":"blog","short":"List Report app over a CAP model","line":"The build half of the same author's pair: the List Report application over the CAP model introduced in the previous post.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"jhodel18, published 2020-10-19"},"content:sap-graphql-in-capm-nodejs":{"href":"/content/sap-graphql-in-capm-nodejs","name":"SAP GraphQL in CAPm (node.js)","kind":"blog","short":"Early look at the GraphQL adapter in a CAP project","line":"Adding the GraphQL protocol adapter to a CAP project when it was new — an entity, some data, the feature switched on, and a check that it answers. Short, and it is the earliest account here of CAP speaking something other than OData.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"enric101, published 2021-11-29"},"content:sap-group-consume-remote-services-in-a-full-stack-cap-application":{"href":"/content/sap-group-consume-remote-services-in-a-full-stack-cap-application","name":"Consume Remote Services in a Full-Stack CAP Application","kind":"workshop","short":"Extending the Developer's Guide app with a remote S/4HANA service","line":"Extending the Developer's Guide application with a remote S/4HANA service — connectivity, importing the Business Partner API, and running against it. SAP publishes this as four separate paths: mock server or real S/4HANA Cloud, times Cloud Foundry or Kyma. One entry covers all four, because the difference between them is which backend and which runtime, not what you learn.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP"},"content:sap-group-create-a-simple-cap-application-and-explore-the-defaults":{"href":"/content/sap-group-create-a-simple-cap-application-and-explore-the-defaults","name":"Create a Simple CAP Application and Explore the Defaults","kind":"workshop","short":"First CAP project from the wizard and the defaults it assumes","line":"The shortest way in: a project from the wizard, then a look at what CAP assumed on your behalf. The defaults are the subject rather than the application — which is the right first lesson in a framework whose whole argument is convention over configuration.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP"},"content:sap-group-deploy-a-full-stack-cap-application":{"href":"/content/sap-group-deploy-a-full-stack-cap-application","name":"Deploy a Full-Stack CAP Application in SAP BTP","kind":"workshop","short":"Deploying the Developer's Guide CAP app to SAP BTP","line":"Five tutorials taking the Developer's Guide application from running locally to running on BTP — preparation, the deployment itself, role assignment, and integration with Build Work Zone. Published twice, once for Cloud Foundry and once for Kyma, with the same shape and different descriptors; indexed once, because the second is the first with the runtime swapped.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP"},"content:sap-group-develop-full-stack-cap-application":{"href":"/content/sap-group-develop-full-stack-cap-application","name":"Develop a Full-Stack CAP Application Following SAP BTP Developer's Guide","kind":"workshop","short":"Eight-part Developer's Guide path for a full-stack CAP app","line":"The eight-part path SAP's own Developer's Guide prescribes: a CAP service, Fiori Elements over it, custom logic, authorization, tests, and the preparation deployment needs. It is the closest thing to an official answer to 'what does a whole CAP application look like', which is why it sits under reference applications rather than under any one of the capabilities it touches.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP"},"content:sap-hana-xsa-part-2-smart-variants-and-odata-v4-to-v2":{"href":"/content/sap-hana-xsa-part-2-smart-variants-and-odata-v4-to-v2","name":"SAP HANA XSA pt. 2 – Smart variants, OData v4 -> v2","kind":"blog","short":"Smart variants over OData v4 with v4-to-v2 conversion on XSA","line":"Smart tables and smart variants against an OData v4 service, with the v4-to-v2 conversion that the smart controls needed at the time. The second part of an XSA series, written from Tokyo in a summer the author mentions.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Gunter, published 2020-08-27"},"content:sap-integration-suite-intelligent-integration-with-ai-adapter":{"href":"/content/sap-integration-suite-intelligent-integration-with-ai-adapter","name":"SAP Integration Suite: Intelligent Integration with AI Adapter","kind":"blog","short":"AI Adapter adding generative AI steps to Cloud Integration flows","line":"The AI Adapter adds generative AI as a receiver step inside a Cloud Integration flow, connecting through either AICore-GenAIHub — a single API onto SAP AI Core's Generative AI Hub and its foundation models — or Custom-OpenAI-Rest, a plain REST call out to a provider such as OpenAI. SAP Integration Suite starts the call from the iFlow and feeds the model's response into the next step, which is the mechanics behind the sentiment-analysis, summarisation and routing use cases the piece lists without walking through any one of them.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"meena_choudhary, published 2026-01-28"},"content:sap-integration-suite-mcp-a-practical-architecture-for-ai-agents-and-sap":{"href":"/content/sap-integration-suite-mcp-a-practical-architecture-for-ai-agents-and-sap","name":"SAP Integration Suite + MCP: A Practical Architecture for AI Agents and SAP","kind":"blog","short":"Runtime chain from AI agent to S/4HANA via Integration Suite MCP","line":"Lays out the runtime chain for exposing S/4HANA APIs to an AI agent through SAP Integration Suite: the agent calls a tool on the MCP Gateway, which is built from a governed API Artifact, which still runs on Cloud Integration for mapping, routing and error handling before reaching the backend. It states that the API-artifact approach requires the Integration Cell runtime rather than the normal CPI message-processing runtime, an OAuth-secured REST or OData artifact on OpenAPI 3.0.0-3.0.3, and an entitlement that is service-plan dependent (citing SAP Note 2903776) — so the architecture question is whether the landscape already has the right MCP entitlement, runtime and API foundation.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"aayushaggarwal, published 2026-09-02"},"content:sap-job-scheduling-service-generate-your-own-client-library-from-openapi-spec":{"href":"/content/sap-job-scheduling-service-generate-your-own-client-library-from-openapi-spec","name":"SAP Job Scheduling Service: 🔧 Generate Your Own Client Library from OpenAPI Spec","kind":"blog","short":"Generating a Job Scheduling service client from its OpenAPI spec","line":"A tutorial on generating a type-safe client library for the SAP Job Scheduling service's REST API from its OpenAPI specification, using the OpenAPI Generator CLI to target Node.js, TypeScript, Java, Python, Go or C#. It walks through OAuth 2.0 client-credentials authentication and the generated client's Jobs API, listing, creating and reading jobs with their cron schedules, and lists what the service's error statuses (400, 401, 404, 409, 429, 503) mean to a caller. It states that the official @sap/jobs-client will be deprecated and tells readers to use a generated client for now.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"DenisDuev, published 2026-05-04"},"content:sap-job-scheduling-service-set-job-run-status-with-the-rest-api-and-node-js":{"href":"/content/sap-job-scheduling-service-set-job-run-status-with-the-rest-api-and-node-js","name":"SAP Job Scheduling Service: Set Job Run Status with the REST API and Node.js","kind":"blog","short":"Recovering stuck job runs in SAP Job Scheduling service via REST","line":"Walks through recovering a stuck asynchronous job run in SAP Job Scheduling service: when a triggered app fails to call back, the run stays at ACK_RECEIVED and eventually UNKNOWN, since the scheduler never assumes success or failure on its own. The fix is a Node.js script that reads a downloaded service key, gets an OAuth2 client-credentials token, and calls PUT /scheduler/jobs/{jobId}/schedules/{scheduleId}/runs/{runId} with a success/message body to set the run to FAILURE or SUCCESS by hand.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"DenisDuev, published 2025-08-11"},"content:sap-joule-implementation-in-an-s-4hana-private-cloud-3-system-landscape":{"href":"/content/sap-joule-implementation-in-an-s-4hana-private-cloud-3-system-landscape","name":"SAP Joule implementation in an S/4HANA private cloud 3 system landscape","kind":"blog","short":"SAP Joule across a three-system S/4HANA private cloud landscape","line":"Walks through enabling SAP Joule across a three-system S/4HANA Private Cloud landscape (DEV, QAS, PRD) rather than the common single-system setup: separate BTP subaccounts for the non-production systems, a shared Cloud Identity Services tenant, and catalogs and roles transported from DEV through QAS to PRD. Covers single sign-on for Joule by setting Microsoft Entra ID as the corporate identity provider in SAP IAS, so authentication flows through Entra ID without the user existing in the IAS store, plus principal propagation through the Cloud Connector into the production backend.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Arunrajj, published 2026-01-21"},"content:sap-joule-invoice-agent-for-faster-supplier-invoice-release-in-sap-s-4hana-accou":{"href":"/content/sap-joule-invoice-agent-for-faster-supplier-invoice-release-in-sap-s-4hana-accou","name":"SAP Joule: Invoice Agent for Faster Supplier Invoice Release in SAP S/4HANA Accounts Payable","kind":"blog","short":"Joule agent surfacing overdue supplier invoices in S/4HANA","line":"Walks through building an Invoice Release Agent in SAP Joule: a custom OData service surfaces supplier invoices whose S/4HANA Flexible Workflow approval is overdue, the agent ranks them by invoice value, aging, payment tenor or a combined score, and a Joule Skill calls the standard SAP AP Invoice OData API to release them, re-prioritizing the remainder after each action. It sets out the detect-prioritize-act loop and the four ranking criteria in enough detail to rebuild the pattern, and leaves authorization, auditability and segregation-of-duty controls to the reader's own design.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"idc, published 2026-08-11"},"content:sap-joule-me-my-first-joule-skill-in-sap-ehsm-incident-management-without-coding":{"href":"/content/sap-joule-me-my-first-joule-skill-in-sap-ehsm-incident-management-without-coding","name":"SAP JOULE & ME : My First JOULE Skill in SAP EHSM-Incident Management Without Coding","kind":"blog","short":"No-code Joule skill over an EHS incident OData service","line":"Walks through building a transactional Joule Skill in Joule Studio, classic edition without writing code: activating an EHS Incident OData service in SAP S/4HANA, wrapping it as an Action Project with chosen input and output fields, then creating, saving and deploying the skill from those fields. Tested against a live system, the deployed skill lets a user create an EHS incident and list reported incidents through Joule's conversational interface or a configured button.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Pardhasaradhi_Reddy_Chelikam, published 2026-01-05"},"content:sap-just-became-ai-agent-ready-here-s-a-step-by-step-mcp-walkthrough":{"href":"/content/sap-just-became-ai-agent-ready-here-s-a-step-by-step-mcp-walkthrough","name":"SAP Just Became AI-Agent Ready — Here's a Step-by-Step MCP Walkthrough","kind":"blog","short":"MCP server on Integration Cell in front of an OData V4 backend","line":"Builds an MCP Server on SAP Integration Suite's Integration Cell, in front of a Cloud Integration flow that passes an OData V4 backend through untouched, with three tools generated from an OpenAPI spec. Secures it with OAuth 2.0 on SAP BTP client_credentials against XSUAA, and walks through the scope mismatch — the service key issues ESBMessaging.send, not the server's default API.invoke — that returns 403 until corrected; the finished server is then registered as a tool in Claude Code.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-09-04"},"content:sap-mdg-cloud-ready-mode-5-solution-patterns-zero-badis-how-we-implemented-5-typ":{"href":"/content/sap-mdg-cloud-ready-mode-5-solution-patterns-zero-badis-how-we-implemented-5-typ","name":"SAP MDG Cloud Ready Mode: 5 Solution Patterns, Zero BADIs: How We implemented 5 typical requirements","kind":"blog","short":"Five MDG Cloud Ready Mode requirements met without BAdIs","line":"A field report from an 80%-complete SAP MDG-BP Cloud Ready Mode implementation, showing five requirements it met without BAdIs or modification: business-partner context and the MDG UI shown inside the My Inbox app, rule-based multi-step approval routing with exclusive-choice nodes, agent determination through BTP role collections, and role-specific Fiori App Variants that give Finance Experts only bank-detail fields while Approvers get full write access. Each pattern works the same way underneath — a BTP Workflow service task reads business-partner attributes over OData into the workflow context, and a user task, route or app variant reacts to it — built with key-user extensibility or SAP Business Application Studio rather than custom ABAP.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"steffen_ulmer, published 2026-06-01"},"content:sap-mission-build-a-business-application-using-cap-for-java":{"href":"/content/sap-mission-build-a-business-application-using-cap-for-java","name":"Build a Business Application Using CAP for Java","kind":"workshop","short":"Tutorial path for a business application with CAP Java","line":"The Java counterpart to the Node.js path — eight tutorials, around two and a half hours, from a generated project to a running service. Worth having indexed separately rather than folded in with the Node.js one: the runtimes diverge most in exactly the places a first application touches, and following the wrong path is a slow way to find that out.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP"},"content:sap-mission-build-a-business-application-using-cap-for-nodejs":{"href":"/content/sap-mission-build-a-business-application-using-cap-for-nodejs","name":"Build a Business Application Using CAP for Node.js","kind":"workshop","short":"Tutorial path for a business application with CAP Node.js","line":"The Node.js introduction path, and the shorter of the pair — the runtime most CAP writing assumes, which is why the Java path exists separately.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP"},"content:sap-mission-extend-successfactors-with-cap":{"href":"/content/sap-mission-extend-successfactors-with-cap","name":"Extend SAP SuccessFactors on SAP BTP with the SAP Cloud Application Programming Model","kind":"workshop","short":"Side-by-side SuccessFactors extension on BTP with CAP","line":"Twelve tutorials, about two hours, building a side-by-side extension of SuccessFactors on BTP. The spine is remote services: importing the SuccessFactors OData service definitions into a CAP model, then treating them as entities the extension reads and writes through, rather than as an API called from a handler. Indexed as one entry because the parts only make sense in order.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP"},"content:sap-neo-retires-integration-developers-must-know-before-migrating-from-neo-to-cf":{"href":"/content/sap-neo-retires-integration-developers-must-know-before-migrating-from-neo-to-cf","name":"SAP Neo Retires – Integration Developers Must Know Before Migrating from Neo to CF","kind":"blog","short":"What changes moving Cloud Integration from Neo to Cloud Foundry","line":"Walks through what changes when Cloud Integration moves from the Neo environment to Cloud Foundry under SAP Integration Suite: custom adapters move from an Eclipse-plugin deployment to Integration Adapter artifacts managed in Cloud Integration's Design and Monitor applications, Neo's environment variables (HC_APPLICATION, HC_HOST, HC_REGION and others) map to Cloud Foundry's TENANT_NAME, VCAP_SERVICES and PORT, and OAuth clients for API access move from Neo administration tools to XSUAA under Integration Suite. Covers the same shift for security materials, transport management and monitoring, ahead of Neo's end of maintenance on 31 December 2028.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SivaS, published 2025-12-03"},"content:sap-ord-made-simple-what-it-does-and-why-it-s-crucial-in-your-sap-landscape-purp":{"href":"/content/sap-ord-made-simple-what-it-does-and-why-it-s-crucial-in-your-sap-landscape-purp","name":"SAP ORD Made Simple: What It Does and Why It’s Crucial in your SAP Landscape + Purpose and Value","kind":"blog","short":"Introduction to Open Resource Discovery metadata","line":"Explains Open Resource Discovery (ORD), the metadata protocol SAP services use to self-describe their APIs, events and entity types for discovery across SAP Integration Suite, SAP Business Data Cloud and SAP Datasphere. Points to SAP's @cap-js/ord as the reference implementation that lets CAP applications publish ORD-compliant metadata, the piece metadata publishing marks as beyond the EDMX and CSN the core emits on its own. Shows how to confirm ORD support for a published API by checking its ORD ID on the SAP Business Accelerator Hub.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Yogananda, published 2026-03-01"},"content:sap-pi-migration-to-btp-integration-suite-patterns-and-learning-experiences":{"href":"/content/sap-pi-migration-to-btp-integration-suite-patterns-and-learning-experiences","name":"SAP PI Migration to BTP Integration Suite Patterns and learning experiences","kind":"blog","short":"Integration patterns from an SAP PI migration to Cloud Integration","line":"Walks through the integration patterns an SAP PI migration project moved onto SAP Cloud Integration iFlows — API Management proxies fronting calls into on-premise SAP systems over XI/SOAP via Cloud Connector, SFTP transfers, and eventing routes — and the operational lessons from running it: sizing JMS queues, choosing exactly-once JMS queues over Cloud Integration's Data Store for XI receiver adapters and at-least-once JMS for XI sender adapters, and workarounds for gaps in the migration tooling. The API Management proxies handle JWT validation against a non-SAP identity provider, IP filtering and OData-to-OpenAPI conversion in front of the iFlows.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"saikrishna_kalivarapu2, published 2024-12-04"},"content:sap-rpt-1-5-is-now-generally-available-more-accurate-predictions-better-explaina":{"href":"/content/sap-rpt-1-5-is-now-generally-available-more-accurate-predictions-better-explaina","name":"SAP-RPT-1.5 Is Now Generally Available: More Accurate Predictions, Better Explainability, What's New","kind":"blog","short":"General availability of the SAP-RPT-1.5 tabular foundation model","line":"Announces general availability of SAP-RPT-1.5, the next release of SAP's foundation model for predictive models over tabular enterprise data: in-context classification and regression with no training step, now with stronger accuracy on high-cardinality columns, a maximum API batch of 512 rows (up from 128), and an \"explain by example\" mode that surfaces the historical rows that most influenced a prediction rather than ranking feature importance alone. Two variants ship, a default model and a -large model recommended past 100 columns or where accuracy is the priority, and the post previews a coming \"tabular orchestration\" workflow, targeted for general availability in August 2026, that is meant to select the relevant context rows from millions of historical records automatically.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"RanjeetKr, published 2026-08-14"},"content:sap-s-4hana-cloud-scheduling-background-jobs-using-application-job-templates":{"href":"/content/sap-s-4hana-cloud-scheduling-background-jobs-using-application-job-templates","name":"SAP S/4HANA Cloud: Scheduling Background Jobs Using Application Job Templates","kind":"blog","short":"Scheduling S/4HANA Cloud jobs with application job templates","line":"Walks through moving S/4HANA Cloud and ABAP Environment job scheduling off ECC's SUBMIT and JOB_OPEN/JOB_SUBMIT/JOB_CLOSE pattern onto the Application Job Framework: a job template built from an ABAP class that implements IF_APJ_DT_EXEC_OBJECT and IF_APJ_RT_EXEC_OBJECT, then scheduled through the Manage Application Job Templates Fiori app or programmatically with CL_APJ_RT_JOB_SCHEDULING_API's SCHEDULE_JOB method. The resulting job is tracked in the Monitor Application Jobs app, where status, logs and failed runs are reviewed.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"TalluriSudheerKumar, published 2025-08-06"},"content:sap-s-api-policy-on-ai-agents-what-it-prohibits-allows-and-leaves-open":{"href":"/content/sap-s-api-policy-on-ai-agents-what-it-prohibits-allows-and-leaves-open","name":"SAP's API Policy on AI Agents: What It Prohibits, Allows, and Leaves Open","kind":"blog","short":"Reading of the SAP API Policy on AI agents and its FAQ","line":"Reading SAP's API Policy v.4.2026a and its FAQ against the reference architectures, the piece narrows the widely repeated claim that SAP bans AI to what Section 2.2.2 actually restricts: an agent planning and chaining API calls outside an SAP-endorsed route, closed off further by Section 3's block on bypassing API Controls through custom code. It compares the endorsed and allowed paths — the MCP Gateway on SAP Integration Suite reaching S/4HANA and ECC through RFC-based back ends under a 15-tool, 200,000-token limit, SAP-provided MCP servers through Joule Studio, the A2A protocol, customer-operated MCP servers allowed under FAQ Question 56, and the ADT MCP Server, whose 18 tools work only on development artifacts and are documented as not intended for productive use. It leaves open whether Section 2.2.2 covers ABAP code that calls a model from inside the system, since enforcement is defined at the API-traffic level rather than by a list of tools.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-08-31"},"content:sap-soap-sender-receiver-adapters-your-integration-game-changers":{"href":"/content/sap-soap-sender-receiver-adapters-your-integration-game-changers","name":"SAP SOAP Sender & Receiver Adapters: Your Integration Game Changers","kind":"blog","short":"SOAP sender and receiver adapters in Cloud Integration flows","line":"A step-by-step build of two integration flows in Cloud Integration: a SOAP Sender Adapter, bound to an uploaded WSDL, that extracts an order number from an inbound SOAP request via XPath and enriches it with a shipment date fetched from the public Northwind OData service before mapping the result back into the SOAP response. A second flow's SOAP Receiver Adapter takes the reverse path, converting an inbound JSON request to XML and forwarding it to that first flow's SOAP backend, authenticated with Basic auth against a WSDL-derived operation name.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Rishikasairi, published 2025-06-24"},"content:sap-successfactors-extensibility-from-btp-kyma-runtime":{"href":"/content/sap-successfactors-extensibility-from-btp-kyma-runtime","name":"SAP SuccessFactors extensibility easy with SAP BTP, Kyma runtime","kind":"blog","short":"SuccessFactors extensibility from Kyma with OAuth2SAMLBearerAssertion","line":"SuccessFactors extensibility called directly from Kyma, with OAuth2SAMLBearerAssertion doing the identity part. Long, and code-first — the author leads with the sample rather than with the architecture.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"quovadis, published 2023-05-22"},"content:sap-tech-bytes-adding-service-implementation-to-an-sap-hana-project":{"href":"/content/sap-tech-bytes-adding-service-implementation-to-an-sap-hana-project","name":"SAP Tech Bytes: Adding Service Implementation to an SAP HANA Project","kind":"blog","line":"Thomas Jung converts an existing SAP HANA-only project into a CAP one, exposing its native tables, views and a calculation view as CAP service entities with @cds.persistence.exists so they get full create, update, delete and read operations without being redefined. He adds OData V2 support through an adapter proxy for callers still expecting XSODATA-shaped responses, and separately turns on CAP's OpenAPI generation with its Swagger UI test tool. A second part rebuilds the same service layer with a standalone Node.js module instead of CAP, for cases that need more control than CAP's REST or OData defaults give.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2021-05-07"},"content:sap-tutorial-add-mcp-capabilities-to-a-cap-service":{"href":"/content/sap-tutorial-add-mcp-capabilities-to-a-cap-service","name":"Add MCP capabilities to a CAP service","kind":"tutorial","short":"Turning a CAP service into an MCP server with @cap-js/mcp","line":"A fifteen-minute walkthrough of turning a plain CAP service into an MCP server: annotate the service with @mcp, install @cap-js/mcp, and it is served alongside OData at /mcp/<path>. The part worth reading it for is what happens next — cds watch writes the endpoint into the local agent's own configuration file, so OpenCode or Claude Code can call the service without anyone editing JSON by hand. It is built on the tiny-sample facet, so there is nothing to prepare, and it shows the protocol traffic rather than only the result. Written while the adapter was in beta, and it says so.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-08-13"},"content:sap-tutorial-api-composition-supply-risk":{"href":"/content/sap-tutorial-api-composition-supply-risk","name":"Build a Supply Risk API with API Composition","kind":"tutorial","short":"Supply-risk Business Data Graph built with API Composition","line":"Builds a supply-risk Business Data Graph with API Composition from four publicly hosted mock APIs. The walkthrough joins plant, address-risk and material-stock entities, tests an expanded OData query and exports the URL/OpenAPI specification for the following MCP tutorial.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Shyam, published 2026-09-23"},"content:sap-tutorial-cap-define-constraints-declaratively":{"href":"/content/sap-tutorial-cap-define-constraints-declaratively","name":"Learn how to define constraints declaratively in your CDS model","kind":"tutorial","short":"Declarative constraints in a CDS model","line":"Constraints expressed in the model rather than checked in a handler — the distinction the atlas draws between input validation the framework enforces and validation somebody writes.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP"},"content:sap-tutorial-cap-examine-mcp-startup":{"href":"/content/sap-tutorial-cap-examine-mcp-startup","name":"Examine the details of the Model Context Protocol on startup","kind":"tutorial","short":"What the MCP adapter does when a CAP server starts","line":"What the MCP adapter actually does when a CAP server boots, watched rather than described — the companion to the tutorial that switches it on.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:sap-tutorial-cap-intro-to-repl":{"href":"/content/sap-tutorial-cap-intro-to-repl","name":"Get an introduction to the cds REPL","kind":"tutorial","short":"Querying the running CAP model with cds repl","line":"cds repl as a way to ask the running model questions directly, which is the fastest route from a suspicion about a query to knowing.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP"},"content:sap-tutorial-cap-mocking-auth":{"href":"/content/sap-tutorial-cap-mocking-auth","name":"Use mocking to embrace auth in your domain model from the outset","kind":"tutorial","short":"Mock users to model authorization in CAP from the start","line":"Mock users locally so authorization is modelled from the first commit instead of retrofitted — the argument being that auth added late reshapes a domain model rather than sitting on top of it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP"},"content:sap-tutorial-cap-self-contained-dev-env":{"href":"/content/sap-tutorial-cap-self-contained-dev-env","name":"Set up a self-contained development environment for CAP Node.js","kind":"tutorial","short":"Self-contained development environment for CAP Node.js","line":"A CAP development environment that carries its own dependencies, so the machine it runs on stops being part of the setup.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP"},"content:sap-tutorial-cap-soap-service":{"href":"/content/sap-tutorial-cap-soap-service","name":"Consume SOAP Web Services in SAP Cloud Application Programming Model","kind":"tutorial","short":"Calling SOAP web services from CAP","line":"Calling a SOAP service from CAP — the case the remote-service story does not cover, since CAP's own import path speaks OData and OpenAPI.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP"},"content:sap-tutorial-cap-status-transition-flows":{"href":"/content/sap-tutorial-cap-status-transition-flows","name":"Explore the declarative power of status-transition flows","kind":"tutorial","short":"Declarative status-transition flows in CAP","line":"Modelling which state a record may move to next, declaratively, rather than scattering the rule across the handlers that move it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP"},"content:sap-tutorial-cicd-start-cap":{"href":"/content/sap-tutorial-cicd-start-cap","name":"Get Started with an SAP Cloud Application Programming Model Project in SAP Continuous Integration and Delivery","kind":"tutorial","short":"CAP project in SAP Continuous Integration and Delivery","line":"Wiring a CAP project into SAP's hosted CI/CD service, which is the pipeline you get without assembling one.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP"},"content:sap-tutorial-cicd-wdi5-cap":{"href":"/content/sap-tutorial-cicd-wdi5-cap","name":"Create Automated System Tests for SAP Cloud Application Programming Model Projects","kind":"tutorial","short":"End-to-end UI tests with wdi5 for CAP in a pipeline","line":"End-to-end tests driving the UI with wdi5, run in the pipeline — the layer above cds.test, which stops at the service boundary.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP"},"content:sap-tutorial-cloudsdk-integrate-cap":{"href":"/content/sap-tutorial-cloudsdk-integrate-cap","name":"Use the SAP Cloud SDK in the SAP Cloud Application Programming Model","kind":"tutorial","short":"Using the SAP Cloud SDK inside a CAP service","line":"Reaching for the Cloud SDK from inside a CAP service, for the calls CAP's own remote services do not make.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP"},"content:sap-tutorial-cp-cap-java-hana-db":{"href":"/content/sap-tutorial-cp-cap-java-hana-db","name":"Use SAP HANA as the Database for a CAP Java Application","kind":"tutorial","short":"SAP HANA as the database for a CAP Java application","line":"Moving a CAP Java application off the development database onto HANA, which is the step where the persistence choice stops being invisible.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"SAP"},"content:sap-tutorial-integration-suite-mcp-server":{"href":"/content/sap-tutorial-integration-suite-mcp-server","name":"Create an MCP Server for Enterprise AI Agents","kind":"tutorial","short":"MCP server in Integration Suite over a supply-risk graph","line":"Wraps the preceding supply-risk graph from API Composition as an MCP server in Integration Suite, with API Management activated as a prerequisite. The walkthrough selects retrieval tools, deploys on Integration Cell, publishes a product in Developer Hub, creates an agent subscription and invokes the tools in MCP Inspector; its companion tutorial uses mock backends.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Shyam, published 2026-09-23"},"content:sapcap-win-customer-trust-using-data-privacy-and-protection-services-on-btp-part-2":{"href":"/content/sapcap-win-customer-trust-using-data-privacy-and-protection-services-on-btp-part-2","name":"#SAPCAP: Win Customer Trust using Data Privacy and Protection Services on BTP - Part 3","kind":"blog","short":"Personal Data Manager UI for a CAP application on BTP","line":"Third of a three-part series, this covers the UI side of SAP's Personal Data Manager (PDM) once it is subscribed and wired to a CAP application: a Customer Service Representative searches for a data subject, views the personal data the application's annotations expose, and requests correction, deletion or export on their behalf, while an Operators Clerk processes those requests through to completion. PDM stores none of the personal data itself, only the requests and access logs, which an administrator downloads through the separate Data Transport app. It builds on the annotation model the first two parts introduce, so what it demonstrates is PDM's own delivered UI rather than anything a CAP application must build itself.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Ajit_K_Panda, published 2023-03-18"},"content:sapcap-win-customer-trust-using-data-privacy-and-protection-services-on-btp-part-3":{"href":"/content/sapcap-win-customer-trust-using-data-privacy-and-protection-services-on-btp-part-3","name":"#SAPCAP: Win Customer Trust using Data Privacy and Protection Services on BTP - Part 1","kind":"blog","short":"Data privacy vocabulary for a CAP application on BTP","line":"First of a three-part series on designing a CAP application on BTP that uses the platform's data privacy services, and this part is the vocabulary before any of it: personal data, the rights a data subject has under GDPR, and the data controller and processor distinction, worked through an order-confirmation SMS example. It names four BTP services: SAP Personal Data Manager, SAP Data Retention Manager, SAP Data Privacy Integration and SAP Audit Log service. Only the first is described, as a service running in the Cloud Foundry environment that finds data subjects across one or more applications and services, makes requests on an individual's behalf about their personal information and forwards them for handling, and notifies individuals which of their personal information is being used or sends them a copy of their record by email; the CAP-side annotations and PDM's own application features follow in Part 2 and Part 3.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Ajit_K_Panda, published 2023-03-18"},"content:sapcap-win-customer-trust-using-data-privacy-and-protection-services-on-btp-part":{"href":"/content/sapcap-win-customer-trust-using-data-privacy-and-protection-services-on-btp-part","name":"#SAPCAP: Win Customer Trust using Data Privacy and Protection Services on BTP - Part 2","kind":"blog","short":"Wiring a CAP service to Personal Data Manager with @PersonalData","line":"Walks through wiring a CAP service to SAP's Personal Data Manager (PDM) on BTP: entity, key and field-level @PersonalData annotations that mark data subjects and personal fields, the @PersonalData.IsPotentiallyPersonal / IsPotentiallySensitive distinction that drives audit logging, and the @Communication.Contact annotation PDM needs to search for a data subject. Covers the xsuaa trust arrangement and service binding that let the standalone PDM application call back into the CAP service to read and manage that data. Second of a three-part series; the annotation model it demonstrates is CAP's own mechanism for data privacy compliance, exercised against a sample 'Game Shop' application.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Ajit_K_Panda, published 2023-03-18"},"content:scheduling-a-background-job-for-the-bdc-session-method-using-rsbdcsub":{"href":"/content/scheduling-a-background-job-for-the-bdc-session-method-using-rsbdcsub","name":"Scheduling a Background Job for the BDC Session Method Using RSBDCSUB","kind":"blog","short":"Scheduling a BDC session as a background job with RSBDCSUB","line":"Walks through uploading data with GUI_UPLOAD, building a BDC session with BDC_OPEN_GROUP, BDC_INSERT and BDC_CLOSE_GROUP, then scheduling the standard program RSBDCSUB as a background job with JOB_OPEN, SUBMIT ... VIA JOB and JOB_CLOSE so the session processes without manual SM35 intervention. Shows the resulting job's status and spool read back through SM37, the way a reader confirms afterwards that a scheduled job actually ran.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Saikrishna_reddy, published 2026-07-29"},"content:securing-a-cap-endpoint-called-by-the-job-scheduling-service":{"href":"/content/securing-a-cap-endpoint-called-by-the-job-scheduling-service","name":"SAP Job Scheduling Service + Cloud Application Programming Model application (CAP) + SAP Authorization and Trust Management Service (XSUAA)","kind":"blog","short":"Securing a CAP endpoint called by the Job Scheduling service","line":"Calling an unsecured endpoint on a schedule is trivial; this is the same thing once the endpoint is protected. The interesting part is the caller — the Job Scheduling Service is not a person, so CAP's pseudo-roles are where the post spends its time, and $XSSERVICENAME has to match the scheduler's own instance name.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"former_member412792, published 2022-12-12"},"content:securing-a-cap-nodejs-app-with-sap-ams-on-btp-cloud-foundry":{"href":"/content/securing-a-cap-nodejs-app-with-sap-ams-on-btp-cloud-foundry","name":"Securing a CAP Node.js App with SAP AMS on BTP Cloud Foundry","kind":"blog","short":"CAP Node.js with AMS and Identity Authentication on Cloud Foundry","line":"The end-to-end version: a CAP Node.js project from cds init, role-based access through the Authorization Management Service and Identity Authentication Service, and an MTA deployment to Cloud Foundry. The prerequisite list is the useful part to read first — HANA Cloud, an IAS tenant and an AMS entitlement — because it says plainly what this path costs before you are three steps into it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Jacky Liu, published 2026-07-17"},"content:securing-cap-applications-with-cloud-identity-services-and-ams":{"href":"/content/securing-cap-applications-with-cloud-identity-services-and-ams","name":"Securing CAP Applications with SAP Cloud Identity Services and AMS","kind":"blog","short":"Identity Authentication and AMS for CAP applications","line":"Identity Authentication and AMS together as the current answer for a CAP application — authentication, single sign-on and the identity lifecycle on one side, policies on the other.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"gopalanand, published 2025-12-04"},"content:securing-multiple-cap-java-apps-with-one-xsuaa-instance":{"href":"/content/securing-multiple-cap-java-apps-with-one-xsuaa-instance","name":"An approach to secure multiple integrated SAP CAP java applications with a common XSUAA service instance","kind":"blog","short":"One XSUAA instance shared by several CAP Java applications","line":"One XSUAA instance across several CAP Java applications that call each other, rather than one per application. Short, and written from inside SAP Labs as something the author tried — the value is the shape of the arrangement, not a walkthrough.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"sreanik_dhanyakumar2, published 2022-09-14"},"content:securing-sap-cap-applications-xsuaa-roles-and-authorization-best-practices":{"href":"/content/securing-sap-cap-applications-xsuaa-roles-and-authorization-best-practices","name":"Securing SAP CAP Applications: XSUAA, Roles, and Authorization Best Practices","kind":"blog","short":"Securing a CAP service with XSUAA scopes, roles and @restrict","line":"Walks through securing a CAP service end to end: declaring scopes and role templates in xs-security.json for the SAP Authorization and Trust Management service (XSUAA), restricting CDS service definitions with @restrict per role, and dropping into handler code where a rule needs custom logic, with a @sap/cds Node.js example that tests roles through req.user.is and a Java one that tests scopes through hasScope. It closes in the BTP cockpit, where a role collection is assigned to users so that their JWT carries the scopes those checks read.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Soumya-Pirlamarla, published 2025-07-14"},"content:semantic-search-in-cap-nodejs-vector-embeddings":{"href":"/content/semantic-search-in-cap-nodejs-vector-embeddings","name":"Semantic search in CAP (Node.js): vector embeddings and cosine similarity","kind":"blog","short":"Semantic search in CAP Node.js with local embeddings","line":"Finding the best semantic match for a prompt inside an entity, using local vector embeddings and cosine similarity — and the finding the author leads with is that it works without a vector database at all. Reported as experiments rather than as a pattern, which is the honest register for it: the interesting claim is how little infrastructure the simple case needs.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-12-09"},"content:sending-email-through-an-on-premise-mail-destination-from-cap":{"href":"/content/sending-email-through-an-on-premise-mail-destination-from-cap","name":"Connecting On Premise Mail Destination and Sending Email Using SAP Cloud SDK JavaScript Version 3 on SAP CAP","kind":"blog","short":"Email from CAP through an on-premise SMTP destination","line":"Mail from CAP through a company's own SMTP server rather than a hosted one, which is the case the existing answers did not cover — the author names them and says why each failed here: one needed an SMTP provider like Mailtrap, another solved it in Java. What is left is the connectivity: an on-premise mail destination reached from Node, and a hybrid profile to test it against.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"codebrokerad, published 2023-02-14"},"content:sending-emails-from-sap-cap-applications-with-any-smtp-provider":{"href":"/content/sending-emails-from-sap-cap-applications-with-any-smtp-provider","name":"Sending Emails from SAP CAP Applications with Any SMTP Provider","kind":"blog","short":"Email from CAP via an SMTP destination and sap-cf-mailer","line":"Walks through sending mail from a CAP application with no dedicated mail service: create an SMTP destination for a Gmail account in the SAP BTP cockpit, bind it to the Cloud Foundry app, and call the sap-cf-mailer npm package from a CAP service handler naming that destination. The SAP Destination service holds the SMTP host, port and app password so the handler code names only the destination, and the same handler sends plain text, an HTML body, or a message with a base64-encoded attachment.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"MaheshSirsat1708, published 2025-08-19"},"content:september-15th-what-s-new-on-developers-sap-com":{"href":"/content/september-15th-what-s-new-on-developers-sap-com","name":"September 15th: What's New on developers.sap.com","kind":"blog","short":"Changes on developers.sap.com for agentic use, incl. its MCP server","line":"Thomas Jung walks through a week of changes aimed at agentic consumption of developers.sap.com itself: the hosted MCP server gains a published .well-known/mcp.json manifest, curated tools (search_tutorials, get_tutorial_step with a Markdown format option, search_channels), and a listing in the ORD catalog beside its OData, REST and GraphQL APIs. It also documents the site's existing A2A endpoint for the first time and ships a way to turn a tutorial into an installable, cryptographically signed AI Skill with a generated verification script, both concrete instances of agent tooling; separately, five broken GraphQL example queries were fixed and the full SDL is now served, and new sitemap.md, llms.txt fixes and ORD entries round out the site's own metadata publishing.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-09-15"},"content:service-interfaces-and-abap-proxy-generation-support-in-sap-integration-suite":{"href":"/content/service-interfaces-and-abap-proxy-generation-support-in-sap-integration-suite","name":"Service Interfaces and ABAP Proxy generation support in SAP Integration Suite","kind":"blog","short":"Importing ES Repository service interfaces into Cloud Integration","line":"Walks through importing Service Interface artifacts from an on-premise ES Repository into Cloud Integration in SAP Integration Suite: configuring Cloud Connector and the ES Repository connection, then a wizard that lists and imports the repository's interfaces with their dependent resources. It also covers generating ABAP Proxies so an SAP R/3 or S/4HANA system can reach the Integration Suite tenant, pointing to a companion post for the SM59 destination side of that setup.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"radhika_javvaji, published 2025-09-18"},"content:set-up-the-sap-cloud-connector-integrating-on-premise-systems-with-cloud-service":{"href":"/content/set-up-the-sap-cloud-connector-integrating-on-premise-systems-with-cloud-service","name":"Set up the SAP Cloud Connector: Integrating On‑Premise Systems with Cloud Services","kind":"blog","short":"Installing Cloud Connector and mapping on-premise HANA access","line":"A step-by-step walkthrough of installing Cloud Connector, adding a subaccount, managing identity and trust certificates in STRUST, and mapping cloud-to-on-premise paths for an SAP HANA backend. It ends by creating a Destinations entry in SAP BTP with proxy type OnPremise and basic authentication, then testing it from SAP Business Application Studio.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Thijn_Grilis, published 2025-06-12"},"content:set-up-vs-code-on-chrome-os-for-local-cap-development":{"href":"/content/set-up-vs-code-on-chrome-os-for-local-cap-development","name":"Set up VS Code on Chrome OS for local Application Programming Model development","kind":"blog","short":"VS Code on Chrome OS for local CAP development","line":"A CAP development environment on a Chromebook, written from preference rather than constraint — the author sets out why Chrome OS is his primary machine before showing the setup. Carries its own updates section noting what has changed since, which for a 2018 post about an operating system is most of it. The interest now is that local CAP development was portable this early.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2018-10-16"},"content:setting-the-right-expectations-around-ai-for-code-generation":{"href":"/content/setting-the-right-expectations-around-ai-for-code-generation","name":"Setting the right expectations around AI for code generation and getting past the inherent limits","kind":"blog","short":"Limits of transformer-based coding agents","line":"Written by somebody who has worked on AI since a thesis on multi-layer perceptrons, and it is about the limits rather than the promise — what transformer-based coding agents can and cannot be expected to do. An argument, not a walkthrough.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"dirk_roeckmann, published 2026-02-17"},"content:setting-up-alerts-for-sap-cloud-integration-using-sap-alert-notification-service":{"href":"/content/setting-up-alerts-for-sap-cloud-integration-using-sap-alert-notification-service","name":"Setting Up Alerts for SAP Cloud Integration Using SAP Alert Notification Service","kind":"blog","short":"Alert Notification service wired to Cloud Integration","line":"Walks through wiring SAP Alert Notification service for SAP BTP to a Cloud Integration tenant: creating the service instance and its OAuth2 service key, adding an email action and a subscription on the CPIIntegrationFlowExecutionFailure event, then deploying SAP's standard alert-notification iflow, which polls the Message Processing Logs API for failures. The author tests the setup by deploying a deliberately failing iflow and confirming the alert email arrives.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Nikhil_Gursal, published 2026-03-05"},"content:setting-up-cap-plugin-for-advanced-event-mesh-with-oauth":{"href":"/content/setting-up-cap-plugin-for-advanced-event-mesh-with-oauth","name":"Complete Guide: Setting Up CAP Plugin for Advanced Event Mesh with OAuth Authentication","kind":"blog","short":"CAP plugin for Advanced Event Mesh with OAuth prerequisites","line":"Written because the plugin's own documentation stops short of the prerequisites and the author had to assemble them from three other sources and a help chapter. It joins them: the OIDC application in Identity Authentication, the OAuth profile in Broker Manager, the token checked before anything is wired, and only then the plugin. The author says plainly it came out of trial and error and was going to be a README.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"rpagni, published 2025-11-10"},"content:setting-up-postgresql-for-sap-btp-development":{"href":"/content/setting-up-postgresql-for-sap-btp-development","name":"Setting Up PostgreSQL for SAP BTP Development: A Practical Guide","kind":"blog","short":"PostgreSQL on the hyperscaler option for BTP development","line":"Opens with the premise the rest of this bucket mostly assumes away — not every BTP application needs HANA Cloud — and then sets up PostgreSQL on the hyperscaler option. Part one of a series that continues into XSUAA.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"michal_majer, published 2026-01-20"},"content:sftp-authentication-setup-in-sap-btp-integration-suite-a-step-by-step-guide":{"href":"/content/sftp-authentication-setup-in-sap-btp-integration-suite-a-step-by-step-guide","name":"SFTP Authentication Setup in SAP BTP Integration Suite: A Step-by-Step Guide.","kind":"blog","short":"Three SFTP adapter authentication modes in Cloud Integration","line":"A walkthrough of configuring the SFTP adapter's three authentication modes in Cloud Integration — username/password, public key and dual — each set up through Security Material and a Known Hosts entry generated from an SSH key pair. The sender and receiver integration flows it builds convert an OData response to CSV and move the file over SFTP, exercising the adapter and message-conversion steps the flow editor provides.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"NaveenReddy_06, published 2025-06-24"},"content:sftp-file-level-checks-in-sap-btp-cloud-integration":{"href":"/content/sftp-file-level-checks-in-sap-btp-cloud-integration","name":"SFTP File Level Checks in SAP BTP Cloud Integration","kind":"blog","short":"SFTP Poll-Enrich with file-level checks in Cloud Integration","line":"For an SFTP flow in Cloud Integration that an external party triggers, the post recommends polling with SFTP Poll-Enrich rather than relying on the Sender SFTP adapter and its built-in scheduler, and because Poll-Enrich polls one file per trigger, the design is a Main flow whose Looping Process Call repeatedly invokes a Local Integration Process that holds the Poll-Enrich step. On top of that design, it adds four router conditions, each checked against SAP_PollEnrichMessageFound, CamelLoopIndex, CamelFileName or CamelFileLength: no file found on the first poll, no more files left mid-loop, more than one file present when exactly one should be processed, and an empty file, each letting the flow terminate or raise an exception instead of failing on an unhandled read.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Srishti_Gupta, published 2024-09-16"},"content:sharing-a-hana-cloud-instance-across-subaccounts-with-hdi-containers":{"href":"/content/sharing-a-hana-cloud-instance-across-subaccounts-with-hdi-containers","name":"Sharing SAP HANA Cloud instance to multiple subaccounts and creating HDI containers","kind":"blog","short":"Sharing one HANA Cloud instance across subaccounts with HDI","line":"One HANA Cloud instance, several subaccounts, an HDI container created from each — the arrangement that keeps a landscape from paying for a database per subaccount. Written against a CAP project, so the container mapping is shown from the side that has to consume it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-03-23"},"content:side-effects-in-fiori-triggering-actions-and-updating-data-in-your-unmanaged-rap":{"href":"/content/side-effects-in-fiori-triggering-actions-and-updating-data-in-your-unmanaged-rap","name":"Side Effects in Fiori: Triggering Actions and Updating Data in Your Unmanaged RAP Application","kind":"blog","short":"Side effects annotations for an unmanaged RAP application","line":"Shows how to add a Common.SideEffects Fiori annotations block to an unmanaged RAP application's annotation.xml, naming the action and the navigation path of the entity set it should refresh, for the case the RAP layer does not refresh automatically: a bound action whose returned instance differs from the bound one, a copy action for example. Works through a \"Redetermine All Quotations\" button as the example and verifies the resulting POST and GET calls in the browser's network tab.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"VarunVarshney, published 2024-09-02"},"content:simple-table-maintenance-in-sap-fiori-using-ui5-smart-controls":{"href":"/content/simple-table-maintenance-in-sap-fiori-using-ui5-smart-controls","name":"Simple Table Maintenance in SAP Fiori Using UI5 Smart Controls","kind":"blog","short":"Table maintenance in Fiori with UI5 smart controls instead of SM30","line":"Starts from SM30 and the table maintenance dialog it generated with almost no code, then asks what the equivalent is now. That framing is the value: a maintenance screen for a custom table was a solved problem in SAP GUI and is not an obviously solved one on Fiori, and the post works through what smart controls give you towards it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-02-11"},"content:simplifying-abap-proxy-migration-from-sap-po-to-integration-suite-no-mdr-require":{"href":"/content/simplifying-abap-proxy-migration-from-sap-po-to-integration-suite-no-mdr-require","name":"Simplifying ABAP Proxy Migration: From SAP PO to Integration Suite (No MDR Required)","kind":"blog","short":"Migrating ABAP proxy scenarios from SAP PO to Integration Suite","line":"A migration walkthrough for moving ABAP proxy scenarios, both outbound and inbound, from SAP PO to SAP Integration Suite without introducing MDR or a full pipeline redesign. It repoints the SAP_PROXY_ESR RFC destination from the PO Enterprise Repository to the Integration Suite tenant so SPROXY reads Service Interfaces straight from Cloud Integration design packages, and routes inbound calls through SAP Cloud Connector to the ABAP system's /sap/xi/engine endpoint.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"naveen_kanagaraj, published 2026-04-29"},"content:simplifying-saas-self-onboarding-automation-using-terraform":{"href":"/content/simplifying-saas-self-onboarding-automation-using-terraform","name":"Simplifying SaaS Self-Onboarding Automation using Terraform in Kyma and Cloud Foundry","kind":"blog","short":"Terraform for SaaS self-onboarding on Kyma and Cloud Foundry","line":"Self-onboarding automated with Terraform across both runtimes rather than one, which is the point — the same subscriber flow described for Kyma and for Cloud Foundry side by side.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"martinfrick, published 2023-09-07"},"content:simplifying-sap-btp-authentication-in-pipelines-with-sap-passport":{"href":"/content/simplifying-sap-btp-authentication-in-pipelines-with-sap-passport","name":"Simplifying SAP BTP Authentication in Pipelines with SAP Passport and Playwright","kind":"blog","short":"Client-certificate BTP login in pipelines with Playwright","line":"Client-certificate login to BTP works locally and has historically not worked in automated pipelines. The post uses Playwright's then-new client certificate support to close that, which is a sideways use of a browser automation library and the reason it is worth recording — the constraint it removes is a CI constraint, not a testing one.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-11-08"},"content:smart-filter-value-help-for-fields-that-are-not-associated-entities":{"href":"/content/smart-filter-value-help-for-fields-that-are-not-associated-entities","name":"Use SAP CAP SAPUI5 Smart Filter to Show Value Help that are not Associated Entitites","kind":"blog","short":"Smart filter value help for fields without an association","line":"Value help for a field with no association behind it, which is the case the annotation assumes away. Short, and the workaround is the content.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"JhoelAnthonyRamosRomeroPE, published 2024-10-07"},"content:speed-up-deployment-for-cap-using-turborepo":{"href":"/content/speed-up-deployment-for-cap-using-turborepo","name":"Speed up deployment for CAP using Turborepo","kind":"blog","short":"Faster CAP deployment with Turborepo instead of MBT","line":"Impatience as a method: minutes of waiting on MBT and cf deploy sent the author looking for alternatives. It is fair to MBT first — a wrapper doing the whole deployment in one go, creating services and applications along the way — before showing what Turborepo changes about the build half. The trade it makes is explicit rather than assumed.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-12-06"},"content:sqlite-as-database-for-a-productive-cap-application":{"href":"/content/sqlite-as-database-for-a-productive-cap-application","name":"SQLite as database for a multi-target (/productive) CAP Application","kind":"blog","short":"SQLite as database for a deployed CAP application","line":"Opens with \"Not recommended but possible\", and then names the two cases where it is the right call anyway: a showcase, and a landscape with no HANA Cloud available. The caveat is the content.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Christopher_Ketzler, published 2024-07-05"},"content:standardized-oidc-api-access-to-sap-s-4hana-via-sap-api-management-and-microsoft":{"href":"/content/standardized-oidc-api-access-to-sap-s-4hana-via-sap-api-management-and-microsoft","name":"Standardized OIDC API Access to SAP S/4HANA via SAP API Management and Microsoft Entra ID","kind":"blog","short":"Entra ID token exchange for S/4HANA via API Management","line":"SAP API Management exchanges a Microsoft Entra ID access token for one issued by Cloud Identity Services, using an RFC 7523 JWT Bearer Token Exchange so an Azure service principal never holds S/4HANA credentials. SAP S/4HANA then validates that IAS token and resolves its claims to a single ABAP user before authorizing the call, which is the boundary authentication draws on BTP: the identity behind the token, not what it is then allowed to do.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"StigPraefcke, published 2026-04-29"},"content:standardized-oidc-api-access-to-sap-successfactors-via-sap-api-management-and-mi":{"href":"/content/standardized-oidc-api-access-to-sap-successfactors-via-sap-api-management-and-mi","name":"Standardized OIDC API Access to SAP SuccessFactors via SAP API Management and Microsoft Entra ID","kind":"blog","short":"Entra ID token exchange for SuccessFactors via API Management","line":"API Management in SAP Integration Suite is the pattern's enforcement point: it intercepts a Microsoft Entra ID access token from a service principal and exchanges it, via the OAuth 2.0 JWT Bearer Token Exchange grant (RFC 7523), for a token issued by Cloud Identity Services, with Entra ID configured as a trusted corporate identity provider inside IAS. SAP SuccessFactors accepts only IAS-issued tokens, per SAP Note 3681224, so the exchange happens once at the gateway and client applications never hold SAP-specific credentials.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"StigPraefcke, published 2026-04-13"},"content:step-by-step-guide-google-sheets-api-integration-in-sap-cpi-via-open-connectors":{"href":"/content/step-by-step-guide-google-sheets-api-integration-in-sap-cpi-via-open-connectors","name":"Step-By-Step Guide: Google Sheets API Integration in SAP CPI via Open Connectors","kind":"blog","short":"Google Sheets in Cloud Integration through Open Connectors","line":"Walks through connecting Google Sheets to Cloud Integration using Open Connectors rather than the Google Sheets API directly: enabling it under SAP Integration Suite's Extend Non-SAP Connectivity, creating a Google Sheets V4 instance with OAuth sign-in, retrieving the sheet ID and base URL, and wiring the instance credentials into an iFlow's Request-Reply step. A Groovy script in the iFlow converts the connector's JSON response into XML, and the piece closes by pointing to Open Connectors' Activity log for tracking API calls made through the instance.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Daggolu_PremSai, published 2025-02-24"},"content:step-by-step-guide-to-display-system-details-on-sap-fiori-launchpad-shell":{"href":"/content/step-by-step-guide-to-display-system-details-on-sap-fiori-launchpad-shell","name":"Step-by-Step Guide to Display System Details on SAP Fiori Launchpad Shell","kind":"blog","short":"Fiori launchpad shell plugin showing system ID and client","line":"A step-by-step build of a plugin for the SAP Fiori launchpad shell that shows the system ID and client on every app it hosts: an OData service modelled in SAP Gateway Service Builder (SEGW), its GetEntitySet method redefined to call the function module RSAPI_CTC_GET_SYSTEM_DETAILS, then consumed from a project in SAP Business Application Studio with the Component.js and manifest.json changes a shell plugin needs instead of a standalone app. It covers the registration step a plugin needs beyond a normal Fiori app: a Catalog and Target Mapping with Semantic Object Shell and Action Plugin, deployed on-premise and assigned to roles.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"RahulManchala, published 2025-07-30"},"content:stop-building-from-scratch-unlocking-sap-cloud-integration-s-standard-content":{"href":"/content/stop-building-from-scratch-unlocking-sap-cloud-integration-s-standard-content","name":"Stop Building From Scratch: Unlocking SAP Cloud Integration’s Standard Content","kind":"blog","short":"Prebuilt integration packages in Cloud Integration's Discover space","line":"Argues against building integrations from scratch by pointing to the Discover space of Cloud Integration: over 700 prebuilt integration packages and nearly 4000 iFlows, covering common scenarios such as S/4HANA-to-Salesforce business-partner and order sync, included at no extra cost under an SAP Integration Suite licence. Walks through where to find and copy a package, and the support trade-off it creates: SAP keeps supporting the standard baseline, but once a flow is directly modified the customer owns the lifecycle of that change, which the author sets against patterns like overlay mappings and wrapper orchestrators that preserve support.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Punith_Oswal, published 2025-12-19"},"content:storyboard-for-cloud-business-applications-using-cap-in-bas":{"href":"/content/storyboard-for-cloud-business-applications-using-cap-in-bas","name":"Storyboard for cloud business applications using CAP in SAP Business Application Studio","kind":"blog","short":"Storyboard for CAP applications in Business Application Studio","line":"The first release of the Storyboard, written by the team shipping it. Where the graphical modeller draws the data model, this draws the application: its logical components and the connections between them, alongside an application explorer enhanced in the same release. Short, and it reads as an announcement — the fuller account of using it is Aryan_Raj_Sinha's post two years later.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"liat_b, published 2021-02-15"},"content:streaming-llm-output-with-cap-and-websockets":{"href":"/content/streaming-llm-output-with-cap-and-websockets","name":"Streaming LLM Output with CAP and WebSockets","kind":"blog","short":"Streaming LLM output to the browser over WebSockets in CAP","line":"Tokens arriving from the AI SDK's orchestration module, forwarded to the browser as they come rather than after the model finishes. Covers all four pieces — enabling WebSocket support in CAP, a service with actions and events, the streaming itself, and a frontend on the native WebSocket API — which is what makes it the clearest case for why a CAP service would want a socket at all.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"RobinP, published 2025-11-18"},"content:streamline-user-targeting-with-segments-in-sap-feature-flags":{"href":"/content/streamline-user-targeting-with-segments-in-sap-feature-flags","name":"Streamline User Targeting with Segments in SAP Feature Flags","kind":"blog","short":"Segments for user targeting in SAP Feature Flags","line":"Walks through segments in the SAP Feature Flags service: reusable, named user lists — up to 1,000 direct user IDs or 15 attribute-based conditional rules per segment — referenced across every feature flag in a service instance instead of redefined per flag. Covers creating a segment from the Feature Flags Dashboard and the per-instance limit of 20 segments, plus the safeguard that a segment in use cannot be deleted.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Maksimiliana, published 2026-02-05"},"content:streamlined-kyma-deployment-for-cap-applications":{"href":"/content/streamlined-kyma-deployment-for-cap-applications","name":"Streamlined Kyma deployment for CAP applications","kind":"blog","short":"Short guide to deploying CAP applications on Kyma","line":"Under two thousand characters on getting a CAP application onto Kyma with less ceremony than the long guides require. Short by design.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-12-08"},"content:streamlining-cap-development-with-cds-graphical-modeler-in-bas":{"href":"/content/streamlining-cap-development-with-cds-graphical-modeler-in-bas","name":"Streamlining CAP Development with CDS Graphical Modeler in SAP Business Application Studio","kind":"blog","short":"CDS Graphical Modeler in Business Application Studio","line":"The case for the graphical modeller stated as a scale problem rather than a preference: a model held only as code gets hard to keep in your head once it is large, and the diagram is a second view of the same file. The most recent write-up of the tool here, and the one that treats it as an everyday working aid rather than as a new feature.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Jyoti_ranjan, published 2025-07-16"},"content:surviving-and-thriving-with-cap-deployment":{"href":"/content/surviving-and-thriving-with-cap-deployment","name":"Surviving and Thriving with the SAP Cloud Application Programming Model: Deployment to SAP BTP, Kyma runtime","kind":"blog","short":"What goes wrong deploying CAP to SAP BTP, Kyma runtime","line":"An episode of the author's #CAPTricks series, and it reads like one — long, opinionated, and organised around the things that actually go wrong on the way to a deployed CAP application rather than around the documented happy path.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"maxstreifeneder, published 2023-03-07"},"content:surviving-and-thriving-with-the-sap-cloud-application-programming-model-local-de":{"href":"/content/surviving-and-thriving-with-the-sap-cloud-application-programming-model-local-de","name":"Surviving and Thriving with the SAP Cloud Application Programming Model: Local development hurdles","kind":"blog","short":"Three local development hurdles with CAP","line":"Three hurdles in running a CAP application locally: services mocked with cds run --with-mocks return no data across OData associations until the ON clause is hand-written into the imported CDS, an on-premise API reached through the SAP Cloud Connector times out because its proxy is part of destinations and connectivity and reachable only from inside SAP BTP, and a Fiori frontend served from the HTML5 Application Repository needs the HTML5 Repo Mock to reach a local backend at all. It closes with the launch configurations the author uses for debugging cds watch locally and attaching to a running Cloud Foundry instance.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"maxstreifeneder, published 2023-02-02"},"content:swagger-ui-for-cds-sap-btp-extension-generators":{"href":"/content/swagger-ui-for-cds-sap-btp-extension-generators","name":"Swagger UI | SAP BTP Extension Generators | Hands-on Video Tutorials","kind":"blog","short":"Video playlist on Swagger UI for CDS","line":"A blog post wrapped around a video playlist from the SAP HANA Academy — Swagger UI for CDS, added to the BTP extension generator series. The written half is an ingredients list and a table of contents; the substance is in the recordings.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"dvankempen, published 2021-07-09"},"content:taking-cap-to-the-next-level-with-typescript":{"href":"/content/taking-cap-to-the-next-level-with-typescript","name":"Taking CAP to the next level - with TypeScript","kind":"blog","short":"Introduction of cds2types and cds-routing-handlers for CAP","line":"The author's own two packages introduced together, and they are two halves of one idea: cds2types generates TypeScript from the CDS model, cds-routing-handlers arranges the handlers that use them. Published in 2020, years before cds-typer, which makes it the earliest answer in the graph to a question the core answered later.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2020-05-22"},"content:taking-control-of-clean-core-when-to-use-project-kernseife-in-addition-to-standa":{"href":"/content/taking-control-of-clean-core-when-to-use-project-kernseife-in-addition-to-standa","name":"Taking Control of Clean Core: When to Use Project Kernseife in addition to Standard SAP Tools","kind":"blog","short":"When to use Project Kernseife beside standard Clean Core tools","line":"Walks through how SAP's standard path classifies custom ABAP extensions into Clean Core Levels A through D, running ABAP Test Cockpit against the Cloudification Repository's release status for each SAP object an extension touches, then feeding results into the RISE with SAP Methodology Dashboard in SAP Cloud ALM. Contrasts that with Project Kernseife, an open-source custom ATC check that lets a team override SAP's classification with project-specific rules, define its own successor objects (including custom wrappers), and expose a Score and Potential Score per finding through a CDS view for prioritizing cleanup — at the cost of owning and maintaining that classification. States which situations favor each: Kernseife where the standard rules are too rigid for the project's reality, the standard dashboard where cross-system comparability and low maintenance effort matter more.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"LBretschneider, published 2025-11-04"},"content:talk-to-the-database-cap-and-sqlite-with-gemini":{"href":"/content/talk-to-the-database-cap-and-sqlite-with-gemini","name":"Lets Talk to the Database - CAP & SQLite Powered by Google Gemini-2.5-Pro","kind":"blog","short":"Natural language queries on CAP and SQLite with Gemini","line":"Natural language against a CAP service on SQLite, with a non-SAP model doing the translation. Written as a learning exercise rather than a pattern, and the choice of Gemini over anything in the AI hub is the interesting part of it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ShivamShuklaSAP, published 2025-04-16"},"content:teaching-ai-agents-best-practices-a-skills-workspace-for-cap":{"href":"/content/teaching-ai-agents-best-practices-a-skills-workspace-for-cap","name":"Teaching AI Agents Best Practices: A Skills Workspace for CAP Development","kind":"blog","short":"Skills workspace teaching AI agents CAP practices","line":"States the gap this capability exists for more precisely than most: an agent already knows CAP well enough to generate models, handlers and deployments, but knowing a framework and following its current practice reliably are different things, because a model defaults to whatever it saw most of during training — which may be outdated, subtly wrong, or simply not how a given team works. Skills are offered as the closing mechanism, and the post describes a workspace pattern rather than a single file, with the architecture claimed to be framework-agnostic.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"daniel_schlachter, published 2026-06-09"},"content:teched-2026-ad162":{"href":"/content/teched-2026-ad162","name":"Everything new: Try out the latest features in CAP","kind":"talk","short":"Hands-on session on new CAP features","line":"CAP (@sap/cds) gains the features this hands-on session works through: declarative constraints, which is the input validation concern, status flows as status transition flows, a cds REPL, extensibility through @sap/cds-oyster, and HCQL, which SAP's abstract calls CAP's native query-over-HTTP protocol, after an opening stretch of AI-driven app development. The abstract names the features and stops there; what each one does is not described. A TechEd 2026 hands-on session (Wednesday 28 October, Berlin), presented by Daniel Hutzel, Daniel Schlachter, Marc Huber and Tim Back, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ad164":{"href":"/content/teched-2026-ad164","name":"Generate agentic workflows using SAP-managed n8n in Joule Studio","kind":"talk","short":"Agentic workflows with SAP-managed n8n in Joule Studio","line":"SAP-managed n8n inside Joule Studio generates a workflow from a business intent a developer states, and the workflow is then tested and deployed, consuming line-of-business application APIs, events and agents in SAP Business AI Platform: process automation with the workflow generated from intent, and agent tooling where the workflow calls agents. The generated workflow sends notifications to the Joule Work mobile app of SAP Joule, to Microsoft Teams or to Slack. SAP's abstract names the pieces and not how the generation or the n8n hosting works. A two-hour hands-on TechEd 2026 session (Tuesday 27 October, Berlin), presented by Rama Sulakshani Murari, Rumen Dimitrov, Seshadri Sreenivas Ramanarayanan and Venugopal Chembrakalathil, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ad260":{"href":"/content/teched-2026-ad260","name":"Level up app development: ABAP Cloud model innovations and Joule solution","kind":"talk","short":"ABAP Cloud model innovations and Joule for RAP","line":"The ABAP RESTful application programming model, in SAP's abstract, generates multi-node business objects and adds event-driven side effects, collaborative draft, background processing and analytical tables, with the SAP Joule for Developers, ABAP AI capabilities add-on used to speed development up. The generated business objects are the transactional model concern; the abstract names each feature and says nothing about how it is used. A TechEd 2026 session (Thursday 29 October, Berlin), presented by Anne Keller, Carine Tchoutouo Djomo, Frank Jentsch and Marina Blank, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ad261":{"href":"/content/teched-2026-ad261","name":"SAP BAIP, ABAP environment: Monitoring and troubleshooting","kind":"talk","short":"Monitoring and troubleshooting on SAP BTP ABAP environment","line":"Monitoring and troubleshooting a side-by-side application written in the ABAP Cloud model on SAP BTP ABAP environment, which SAP's title calls SAP BAIP, ABAP environment, and which the abstract files under a clean core strategy at level A: the environment's technical monitoring tools for the monitoring half, and ABAP Development Tools for Eclipse for the troubleshooting half, the debugging concern. The abstract names the environment and the Eclipse tools, leaves the monitoring tools unnamed, and does not say what is shown of either. A TechEd 2026 hands-on session (Thursday 29 October, Berlin), presented by Frank Jentsch, Robert Werlich, Steffen Siegmund and Wolfgang Woehrle, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ad262":{"href":"/content/teched-2026-ad262","name":"Agentic CAP: Build MCP servers and enterprise AI agents","kind":"talk","short":"Building MCP servers and AI agents with CAP","line":"CAP applications become AI agents over the Model Context Protocol and the Agent2Agent protocol, which is the serve your application over MCP concern, and SAP AI Core is the LLM integration through which AI is embedded in a CAP app, with recommendations from the SAP-RPT-1 model as the abstract's example. The abstract names the two protocols and the one model and does not say which packages carry them. A two-hour TechEd 2026 session in a hands-on room (Tuesday 27 October, Berlin), presented by Daniel Hutzel, Daniel Schlachter, Marc Huber and Sami Lechner, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ad263":{"href":"/content/teched-2026-ad263","name":"Build your first agent with Joule Studio in a pro-code way","kind":"talk","short":"Pro-code agent building with the Joule Studio CLI","line":"The command line interface of Joule Studio, which the atlas holds as @sap/joule-work-dev-cli-early-adopters, carries an agent from a structured intent through generated product requirements documentation and wired APIs to a deployment on Joule Studio's SAP-managed runtime, in one guided flow. SAP's abstract names the stages of that pipeline and promises working code at the end; what the generated requirements and APIs look like is not described. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Charan Ravikumar, Evgenii Skrebtcov, Maria Kondratyeva and Simon Endres, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ad264":{"href":"/content/teched-2026-ad264","name":"Building enterprise agent extensions with the Joule Studio solution","kind":"talk","short":"Extending standard agents in Joule Studio","line":"Extending SAP's standard agents with third-party integrations and business actions in Joule Studio: agents that run a process across systems, call an external service, put an approval step in the middle and bring the result back into the business context, which is what SAP Joule's agents do and what Joule Studio, classic edition is in the atlas. The abstract names Joule Studio without saying which edition the exercise uses, and lists outcomes rather than the steps built. A TechEd 2026 hands-on session (Wednesday 28 October, Berlin), presented by Charan Ravikumar, Jacob Hornberger, Maria Kondratyeva and Michael Zadikowitsch, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-bt106":{"href":"/content/teched-2026-bt106","name":"From confident to correct: AI search results you can actually trust","kind":"talk","short":"Designing AI search agents in SAP LeanIX","line":"How SAP LeanIX designs its AI search agents so that a result does not need checking in the UI: agents that adapt to each customer's own workspace model, with ambiguous queries and silent errors at scale as the two problems the talk takes on. The atlas holds no entry for SAP LeanIX itself; the SAP LeanIX MCP Server is the nearest entry, and the abstract names neither it nor any mechanism behind the agents, so the edge rests on the product name alone. A TechEd 2026 session (Thursday 29 October, Berlin), presented by Aviral Vaid and Sai Krishna Subramanian, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-bt115":{"href":"/content/teched-2026-bt115","name":"Monitor your AI agents with the SAP Cloud ALM solution","kind":"talk","short":"Monitoring AI agents with SAP Cloud ALM","line":"Observing AI agents with SAP Cloud ALM, which SAP's abstract says is now part of the SAP AI Agent Hub: agent telemetry integrated with application data into one view across agents and the systems they run beside, the telemetry concern read from the operations side. Neither SAP Cloud ALM nor the AI Agent Hub is an atlas entry, and the abstract states the integration as a promise and names no signal or tool. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Carsten Heinz, Frank Wenzke and Stefan Lahr, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ct1085":{"href":"/content/teched-2026-ct1085","name":"Explore SAP Fiori elements for ABAP developers","kind":"talk","short":"Fiori elements for ABAP developers building RAP apps","line":"SAP Fiori elements for an ABAP developer who now builds the UI as well as the RAP business object behind it, the transactional model of ABAP Cloud, in SAP Business Application Studio; the abstract calls the UI side new territory for that developer, and a Fiori elements app is rendered from the service's Fiori annotations rather than hand-written UI code. The abstract names the tool and the stack and does not say which floorplan or annotations are shown. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Björn Schulz, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ct1089":{"href":"/content/teched-2026-ct1089","name":"Building a Terraform onboarder for SAP Business AI Platform","kind":"talk","short":"Terraform onboarder for SAP Business AI Platform","line":"A Terraform-driven onboarder the speakers' team built after onboarding one customer onto a generative AI solution in SAP Business AI Platform took five systems and two days by hand each time: what was automated with Terraform, what was kept manual on purpose, and the count of over 100 customers the abstract reports since. The onboarder covers the account provisioning concern; the abstract does not say which systems the five are or whether the Terraform Provider for SAP BTP is the provider behind it. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Julian Breitkopf and Max Streifeneder, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ct1091":{"href":"/content/teched-2026-ct1091","name":"Connecting AI agents to the ABAP RESTful application programming model","kind":"talk","short":"Connecting Joule Agents to RAP applications","line":"Joule Studio, classic edition connects Joule Agents to applications built with the ABAP RESTful application programming model through actions and skills, calling the OData services those applications expose their business objects through: the tools an agent may call, which is the agent tooling concern seen from the ABAP side. The abstract promises alternative integration patterns and does not name them. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Leon Karlau, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ct1106":{"href":"/content/teched-2026-ct1106","name":"Zero token architecture for Joule Agents","kind":"talk","short":"Zero token architecture for Joule Agents","line":"A pattern for SAP Joule's agents in which an agent maps the solution path once, solves the problem, generates reusable code or configuration and validates it, and later requests reuse that output, so discovery is done by the model and execution is repeatable. The abstract states the pattern as an idea and names no Joule component and no case it was tried on. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by EDGAR ADRIAN MARTINEZ ARCE, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ct1133":{"href":"/content/teched-2026-ct1133","name":"Talking to your database: The new data exploration tools in SAP HANA Cloud","kind":"talk","short":"Data exploration in plain language in SAP HANA Cloud","line":"SAP HANA Cloud's new data exploration tools take a business question in plain language, find the right database objects and run the query, with no data model and no SQL written beforehand, shown live on a standard business data set. SAP's abstract says the session covers how the tools work, what they need and where they hit their limits, and states none of the three. A TechEd 2026 session (Thursday 29 October, Berlin), presented by Anna Hartmann, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ct1135":{"href":"/content/teched-2026-ct1135","name":"Conversational search for the Cloud Integration capability","kind":"talk","short":"Natural-language search over Cloud Integration content","line":"Cloud Integration content becomes searchable in natural language through three architectures SAP's abstract names: MCP servers, retrieval-augmented generation and knowledge graphs, set against the work of analysing and governing a growing SAP Integration Suite tenant. The abstract names the three and does not say which is built or how they compare. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Vadim Klimov, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ct1136":{"href":"/content/teched-2026-ct1136","name":"AI needs a foundation: A map of the plug-in ecosystem for CAP","kind":"talk","short":"Map of the plug-in ecosystem for CAP","line":"A map of the plug-ins for CAP (@sap/cds), official, community and independent, drawn across regions such as integration, performance and tooling, so that a team can see what exists to reuse and what it would have to build: the question plugin authoring answers from the other side. SAP's abstract places CAP at the centre of its AI strategy, with model context protocol support, and the map is offered as the foundation under that. A TechEd 2026 session (Tuesday 27 October, Community Theater, Berlin), presented by Mike Zaschka, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ct1158":{"href":"/content/teched-2026-ct1158","name":"AI-first, API-first: What changes when AI becomes the user","kind":"talk","short":"Architecture when an AI agent is the API caller","line":"What changes in an architecture when an AI agent is the caller: AI-first and API-first principles, SAP's API governance, extensibility and the composable enterprise, with lessons the speaker draws from SAP's and other enterprise AI initiatives. The extensibility edge rests on the abstract naming extensibility as a principle and nothing more specific; no API, product or tool is named, so the talk is attached to the broadest concern it touches. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Tomasz Wilk, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ct1163":{"href":"/content/teched-2026-ct1163","name":"Under the hood of the Delta Sharing protocol","kind":"talk","short":"How the dsserv server implements the Delta Sharing protocol","line":"How a Delta Sharing server, dsserv, implements the open-source Delta Sharing protocol for zero-copy sharing: Delta tables ingested, governed and streamed live from local S3-compatible storage into cloud consumers such as Databricks. Neither the server nor the protocol is an atlas entry; the edges are to data federation, the concern zero-copy sharing answers, and to object storage, where the tables sit, and the abstract names no SAP product. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Philipp Nell, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ct1168":{"href":"/content/teched-2026-ct1168","name":"AI-enabled administration: Automating log analysis with generative AI hub","kind":"talk","short":"Log analysis with generative AI hub for incident work","line":"A log analysis tool for incident work, built in SAP Business Application Studio with the generative AI hub feature, which SAP AI Core ships as its LLM integration by its own documentation: it automates root-cause analysis over system errors and masks sensitive data. SAP's abstract states the tool's jobs and not how the hub is called, what the masking covers or which model answers. A TechEd 2026 session (Wednesday 28 October, Berlin), with no speaker listed in the catalogue at the time of writing, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ct1207":{"href":"/content/teched-2026-ct1207","name":"OData entity as a governed query surface for agents, not a tool","kind":"talk","short":"OData entity as a governed query surface for agents","line":"An OData entity, generated from the annotations a service already carries, as the surface an agent queries over SAP data: filterable, selectable and sortable fields, authorisation injected on the server side, and a bound query cost, instead of the entity as a tool. SAP's abstract sets this against the MCP gateway in SAP Integration Suite, where exposing an API is the easy part and getting an agent to pick the right one is not, which is the tool governance concern read through OData. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Aleksandr Ivanov and Evgenii Shirokikh, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ct1219":{"href":"/content/teched-2026-ct1219","name":"Build an AI-assisted known error database with SAP Integration Suite","kind":"talk","short":"Talk on an AI-built known error database in SAP Integration Suite","line":"The AI adapter in SAP Integration Suite builds a known error database for integration support: runtime exceptions are captured, analysed by a model, matched against past incidents, and a resolution is proposed, so the base grows with each case. SAP's abstract names the adapter and the four steps, and claims shorter troubleshooting time without a figure. A TechEd 2026 session (Wednesday 28 October, Berlin), with no speaker listed in the catalogue at the time of writing, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ct1222":{"href":"/content/teched-2026-ct1222","name":"Rethinking security for modern SAP solution landscapes","kind":"talk","short":"Talk on security risk across clean core extensions and CI/CD gates","line":"Where risk goes when clean core moves custom logic out of SAP S/4HANA: into integration flows, CAP extensions, ABAP Cloud code and platform configuration, told through real attack stories, then scanning code, modelling attack paths, adding security gates to CI/CD pipelines and automating safely with Terraform. The scanning edge is to static analysis, the atlas's concern for security findings in ABAP code; the abstract lists the four surfaces and the four practices and describes none of them. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Tsovinar Chugaszyan, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ct1238":{"href":"/content/teched-2026-ct1238","name":"Stop guessing, start counting: How generative AI fixed an inventory mess","kind":"talk","short":"Talk on an inventory-counting app on SAP HANA Cloud with generative AI","line":"An inventory-counting application a business built on SAP Business AI Platform with SAP HANA Cloud and generative AI, to replace recount lists kept by gut feel across SAP ERP Central Component, SAP S/4HANA and Microsoft Excel; the talk promises the app, its architecture and what went wrong. The generative AI part is LLM integration from application code; the abstract names HANA Cloud and generative AI as the two building blocks and says nothing about how either is used. A TechEd 2026 session (Thursday 29 October, Berlin), presented by Ranjeet Kumar, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ct1239":{"href":"/content/teched-2026-ct1239","name":"AI-assisted full stack development using model context protocol servers","kind":"talk","short":"Talk on MCP servers in VS Code working on a CAP and OData app","line":"MCP servers in Visual Studio Code used to configure, query and change a full-stack application built with CAP, CDS and OData: the agent access to your code concern, a coding assistant reading and changing the project it works in. The abstract names no server, so neither @cap-js/mcp-server nor any other is attached, and it does not say which changes are made. A TechEd 2026 session (Thursday 29 October, Berlin), presented by Sergio Guerrero, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da100":{"href":"/content/teched-2026-da100","name":"Enhancing agentic AI with trusted business data","kind":"talk","short":"Talk on governed business data for AI agents in Business Data Cloud","line":"How SAP Business Data Cloud gives AI applications and agents governed access to business data and its context, and how zero-copy architectures let AI read enterprise data with less of it moved, which is the data federation concern. The abstract names the product and the architecture and states no mechanism or product the zero-copy path runs over. A TechEd 2026 session (Tuesday 27 October, Berlin; also DA100V, virtual), presented by Aruna Kashinath, Hannes Keil and San Tran, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da104":{"href":"/content/teched-2026-da104","name":"Reimagining master data as the foundation for enterprise AI","kind":"talk","short":"Talk on master data as data products in SAP Business Data Cloud","line":"Master data as the foundation for AI: SAP Business Data Cloud unifying, governing and delivering master data as reusable data products, the cataloguing and lineage concern, for analytics, autonomous applications and AI that share one business context. The abstract names no component of Business Data Cloud and no master data product, and Reltio, the co-presenter's company, is not named in it. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Arne Ludwig and Sriraj Rajaram, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da105":{"href":"/content/teched-2026-da105","name":"Enriching AI models with SAP AI Core in SAP Business Data Cloud","kind":"talk","short":"Talk on feeding Business Data Cloud data products into SAP AI Core","line":"The integration between SAP Business Data Cloud and SAP AI Core, through which data products with their semantics feed AI models for benchmarking, custom AI development and agentic analytics and applications. The abstract names the two products and the three uses and states nothing about how the data reaches AI Core or what the integration consists of. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by San Tran and Sandy Tran, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da112":{"href":"/content/teched-2026-da112","name":"SAP HANA Cloud as a self-managed database: Advisors and automation","kind":"talk","short":"Talk on SAP HANA Cloud advisors and SAP Automation Pilot","line":"SAP HANA Cloud advisors generate recommendations for database administration, aimed at system performance and efficiency, and SAP Automation Pilot runs the manual and administrative tasks around the database as automated processes, which is the operations automation concern on the database side. SAP's abstract names the two services and claims reduced operational overhead; which advisors exist and which tasks the automation covers are not said. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Javier Martin and Roman Belosludtsev, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da113":{"href":"/content/teched-2026-da113","name":"Build AI agents and applications natively on SAP HANA Cloud","kind":"talk","short":"Talk on agentic apps with CAP, HANA Cloud vector engine and AI Core","line":"SAP HANA Cloud as the base for agentic applications on SAP Business AI Platform: the session goes through CAP, the SAP HANA Cloud vector engine and SAP AI Core, with architecture patterns and lessons learned from building AI-supported applications. SAP's abstract names the three parts of that stack and the vector engine as the database's feature in it, and describes none of the patterns. A TechEd 2026 session (Wednesday 28 October, Berlin; also DA113V, virtual), presented by Christoph Morgen and Shraddha Shetty, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da114":{"href":"/content/teched-2026-da114","name":"Modernize your database landscape with SAP HANA Cloud","kind":"talk","short":"Talk on migrating a database estate to SAP HANA Cloud","line":"Why to move a database estate to SAP HANA Cloud, and the migration tools and services for doing so, which is the platform migration concern. SAP's abstract is one sentence and names none of the tools. A TechEd 2026 session (Thursday 29 October, Berlin), presented by Niklas Siemer and Roman Belosludtsev, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da160":{"href":"/content/teched-2026-da160","name":"Build real-time, unified data products for agentic AI with SAP Reltio","kind":"talk","short":"Talk on SAP Reltio master data inside SAP Business Data Cloud","line":"SAP Reltio inside SAP Business Data Cloud unifies master data across SAP and third-party systems and complements SAP Master Data Governance, in SAP's abstract, with Customer 360 as the named scenario and real-time data products for applications, analytics and AI as the output. The abstract states Reltio's place in the product and nothing about how the unification or the data products work. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Arne Ludwig, Rene Kirchhoff, Richard Mooney and Sriraj Rajaram, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da161":{"href":"/content/teched-2026-da161","name":"Build and govern data products in the Joule Studio solution","kind":"talk","short":"Talk on building and governing data products from Joule Studio","line":"Data products in SAP Business Data Cloud are built and deployed from Joule Studio, in SAP's abstract, with no-code, AI-assisted tools that combine SAP and third-party data, and are then governed, catalogued and shared for analytics and AI, the cataloguing and lineage concern on the product side. The abstract names the steps and not what a data product built this way contains or how Joule Studio reaches the data. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Arne Ludwig, Aruna Kashinath, Rene Kirchhoff and Sandy Tran, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da162":{"href":"/content/teched-2026-da162","name":"Share data products with zero copies using SAP Business Data Cloud Connect","kind":"talk","short":"Talk on zero-copy sharing with Business Data Cloud Connect","line":"SAP Business Data Cloud Connect shares data products between SAP Business Data Cloud and third-party platforms with zero-copy access, in both directions and for metadata as well as data, in SAP's abstract, with the business context kept on the way. The abstract names the product and its two properties, bidirectional and zero-copy, and does not say which third-party platforms or which protocol carry the sharing. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Babacar Toure, Hannes Keil, Maria Uruena and Neetha Pucknat, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da163":{"href":"/content/teched-2026-da163","name":"SAP HANA Cloud advisors and automation","kind":"talk","short":"Talk on SAP HANA Cloud advisors and the tasks Automation Pilot runs","line":"SAP HANA Cloud's advisors and the tasks they hand off: the elastic compute node, the partition, index and native storage extension advisors that produce recommendations for performance and efficiency, and SAP Automation Pilot as the service that runs the resulting tasks, which is operations automation on the database. The abstract lists the features and stops there, so what each advisor recommends and how a recommendation becomes an Automation Pilot command is not stated. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Hansika Colomboge Dona, Hui Li, Javier Martin and Roman Belosludtsev, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da164":{"href":"/content/teched-2026-da164","name":"Building agentic applications with SAP HANA Cloud","kind":"talk","short":"Workshop extending a CAP app with HANA Cloud vector search and AI Core","line":"A CAP application extended with semantic search and agent features on top of SAP HANA Cloud's vector engine and SAP AI Core, built in a hands-on workshop. The abstract names the parts, CAP, the vector engine and AI Core, and the two additions: semantic search, the retrieval half of retrieval-augmented generation, and LLM-supported agent capabilities inside the application, which is agent tooling. Which embedding model, which CAP runtime and how the agent calls its tools are not stated. A TechEd 2026 session (Thursday 29 October, Berlin), presented by Hui Li, Ritty Joseph, Shraddha Shetty and Tanuja Jadhav, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da200":{"href":"/content/teched-2026-da200","name":"Agentic SAP BW modernization: Your path to SAP Business Data Cloud","kind":"talk","short":"Talk on moving from SAP Business Warehouse to SAP Business Data Cloud","line":"Strategies for moving from SAP Business Warehouse to SAP Business Data Cloud, with dedicated migration tools and AI agents to shorten the move while keeping what was built in SAP BW, the platform migration concern for a warehouse. A Fresenius speaker co-presents; the abstract names neither the migration tools nor the agents. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Constantin Herbst, Hannes Keil and Sandy Tran, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da204":{"href":"/content/teched-2026-da204","name":"Unlock predictive and generative AI with your data in SAP HANA Cloud","kind":"talk","short":"Talk on the predictive and generative AI features of SAP HANA Cloud","line":"The AI features SAP lists for SAP HANA Cloud: the function libraries for tabular prediction and forecasting, where predictive models run inside the database, the vector engine, the knowledge graph engine, which is graph, spatial and document data put to generative use, and SQL to LLM calls. The abstract names the engines and the use cases they are meant for and gives no detail of any one of them. A TechEd 2026 session (Tuesday 27 October, Berlin; also DA204V, virtual), presented by Christoph Morgen and Javier Martin, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da205":{"href":"/content/teched-2026-da205","name":"Agentic memory: Knowledge graph engine and recall in SAP HANA Cloud","kind":"talk","short":"Talk on the HANA Cloud knowledge graph engine as agent memory","line":"The knowledge graph engine in SAP HANA Cloud as an agent's memory: what the engine, the graph side of graph, spatial and document data, does in an agentic workflow, how an agent keeps what it learns there, the state agent tooling holds between turns, and the SAP AI Core integration through which the database calls LLMs and tabular foundation models such as SAP-RPT-1. The abstract names the engine, the memory role and the AI Core link and does not say how the memory is written or read. DA263 on Wednesday 28 October is a two-hour hands-on on the same engine with a different cast. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Markus Fath and Shraddha Shetty, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da206":{"href":"/content/teched-2026-da206","name":"Agent-to-agent in action: SAP and Adobe CX Enterprise Coworker at Henkel","kind":"talk","short":"Customer story on SAP data agents with Adobe CX Enterprise Coworker","line":"A customer story: SAP's data agents and SAP Business Data Cloud with Adobe CX Enterprise Coworker putting enterprise data in front of Henkel's marketing teams, with faster decisions as the stated result. The abstract names Business Data Cloud as the data side of an agent-to-agent setup and says nothing about what it does there or how the two agents talk; neither Adobe's product nor the data agents are atlas entries. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Ankur Jain, Ramalingam Ramani and Thomas Hammer, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da260":{"href":"/content/teched-2026-da260","name":"Accelerate agentic planning with trusted data products","kind":"talk","short":"Talk on governed data products for AI planning in SAP Analytics Cloud","line":"Governed data products as the ground for AI planning in SAP Analytics Cloud: using a ready data product or building one in SAP Business Data Cloud, the cataloguing and lineage concern, then agentic AI automating planning tasks and producing insights on top. The abstract names the two products and the data product step and does not say which planning tasks the agents take over. A TechEd 2026 hands-on session (Thursday 29 October, Berlin), presented by Jie Deng, Maximilian Paul Gander and Richard Mooney, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da261":{"href":"/content/teched-2026-da261","name":"Transform business data into AI-supported insights","kind":"talk","short":"Talk on Joule agents turning business metrics into insights","line":"Business metrics turned into insights, narratives and recommendations by SAP Joule's agents, with People Intelligence, the SAP Snowflake solution extension for SAP Business Data Cloud and SAP Analytics Cloud connected in SAP Business Data Cloud. The abstract names what is connected and what comes out, and does not say what the exercise builds or where the Snowflake extension sits in it; People Intelligence and the extension are not atlas entries. A TechEd 2026 hands-on session (Wednesday 28 October, Berlin), presented by Babacar Toure, Maximilian Paul Gander, Neetha Pucknat and San Tran, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da262":{"href":"/content/teched-2026-da262","name":"Get hands on with tabular AI and forecasting models in SAP HANA Cloud","kind":"talk","short":"Hands-on with tabular AI and forecasting models in SAP HANA Cloud","line":"Prediction and forecasting as predictive models inside SAP HANA Cloud, worked through hands-on: tabular AI models such as SAP-RPT-1 for on-the-fly predictions, time series foundation models for ad hoc forecasts, and the AutoML in the predictive analysis library. The abstract names the model kinds and the library and does not say how a model is called from SQL or from an application. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Christoph Morgen, Markus Fath, Ritty Joseph and Tanuja Jadhav, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da263":{"href":"/content/teched-2026-da263","name":"Knowledge graph and agent memory: Build an agent that remembers","kind":"talk","short":"Hands-on with the HANA Cloud knowledge graph engine as agent memory","line":"The knowledge graph engine in SAP HANA Cloud as an agent's memory: what the engine, the graph side of graph, spatial and document data, does in an agentic workflow, how an agent keeps what it learns there, the state agent tooling holds between turns, and the SAP AI Core integration through which the database calls LLMs and tabular foundation models such as SAP-RPT-1. The abstract names the engine, the memory role and the AI Core link and does not say how the memory is written or read. DA205 on Tuesday 27 October is the 45-minute talk on the same engine, with a near-identical abstract and a different cast. A two-hour hands-on TechEd 2026 session (Wednesday 28 October, Berlin), presented by Christoph Morgen, Jan Zwickel, Markus Fath and Thomas Hammer, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da264":{"href":"/content/teched-2026-da264","name":"Flexible analytics at speed: Calculation views in SAP Business Data Cloud","kind":"talk","short":"Talk on calculation views in SAP HANA Cloud and their newer features","line":"Calculation views in SAP HANA Cloud, the reusable analytic modelling blocks built in its graphical modelling environment, with three newer parts the abstract names: AI-assisted modelling, refactoring, and advanced materialisation, and the way the views sit inside SAP Business Data Cloud. What a materialisation is chosen on, and what the AI assistance generates, is not stated. A TechEd 2026 session (Thursday 29 October, Berlin), presented by Hansika Colomboge Dona, Jan Zwickel, Niklas Siemer and Thomas Hammer, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da802":{"href":"/content/teched-2026-da802","name":"The future of the SAP Business Data Cloud solution: Data and AI road map","kind":"talk","short":"Road map talk for SAP Business Data Cloud data and AI","line":"The road map for SAP Business Data Cloud as the data foundation of SAP Business AI Platform: upcoming work in data products, AI models and agentic analytics, framed as activating business context and running autonomous processes. A road map session, so nothing in it ships yet, and the abstract names the three areas and no item within them; a Fresenius speaker co-presents. A TechEd 2026 session (Tuesday 27 October, Berlin; also DA802V, virtual), presented by Constantin Herbst and Prakash Nanduri, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da806":{"href":"/content/teched-2026-da806","name":"What’s next for agentic analytics and planning in SAP Business Data Cloud","kind":"talk","short":"Road map talk on agentic analytics and planning in Business Data Cloud","line":"What is next for agentic analytics and planning in SAP Business Data Cloud: SAP Joule's agents automating insight delivery, analysis, narrative generation and modelling tasks. A road map session; the abstract names the four kinds of task and no agent or date. A TechEd 2026 session (Tuesday 27 October, Berlin; also DA806V, virtual), presented by Kristian Ruemmelin, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-da807":{"href":"/content/teched-2026-da807","name":"Road map for SAP HANA Cloud: What’s next for the AI database","kind":"talk","short":"Road map talk for SAP HANA Cloud","line":"SAP's road map for SAP HANA Cloud, which the abstract places as a core component of SAP Business AI Platform within SAP Business Data Cloud. The abstract promises a firsthand look at what is next for the database and names no feature, release or date, so the two edges rest on the products it names and nothing more. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Niklas Siemer and Thomas Hammer, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-in111":{"href":"/content/teched-2026-in111","name":"Unlock composable business using SAP Integration Suite, advanced event mesh","kind":"talk","short":"Talk on event-driven integration with advanced event mesh","line":"SAP Integration Suite, advanced event mesh as SAP's product for event-driven, real-time and loosely coupled integration between SAP and third-party systems, which the abstract ties to composable business architecture. The session is about that product and the Event Mesh concern it answers; the abstract states the positioning and no feature, topic or protocol, and a speaker from CCB Management Services is listed without a stated case. A TechEd 2026 session (Tuesday 27 October, Berlin; also IN111V, virtual), presented by Goran D. Stevanovic and Karsten Strothmann, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-in120":{"href":"/content/teched-2026-in120","name":"More than 100 trading partners, one platform: Scalable B2B at Algoma Steel","kind":"talk","short":"Customer story on B2B integration at Algoma Steel on Integration Suite","line":"B2B integration at Algoma Steel on SAP Integration Suite: more than 100 trading partners served through Trading Partner Management and one generic integration flow architecture, ML-assisted mapping for the documents, and EDI at that scale after a move from SAP Process Integration and SAP Process Orchestration. The abstract names the three pieces, which is the trading partner agreements model, and not the partner standards or the mapping tooling behind them. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Jagesh Lakdawala and Marco Ertel, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-in160":{"href":"/content/teched-2026-in160","name":"Explore version control and automation with GitHub in Cloud Integration","kind":"talk","short":"Talk on GitHub versioning and CI/CD for Cloud Integration flows","line":"GitHub access set up in Cloud Integration: integration flows committed and versioned from Cloud Integration's own tools, several people working on the same artifacts, and a commit that triggers a CI/CD pipeline. The abstract states what the GitHub connection does and stops before the branch model, the pipeline's steps or which pipeline service runs them. A TechEd 2026 session (Thursday 29 October, Berlin), presented by Marco Ertel, Morten Wittrock, Patrick Kelleher, Shivani Borkar and Tobin Sydneysmith, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-in161":{"href":"/content/teched-2026-in161","name":"Onboard a trading partner from agreement to live monitoring","kind":"talk","short":"Hands-on onboarding of a trading partner in Trading Partner Management","line":"One trading partner onboarded from scratch in Trading Partner Management: a trading partner agreement configured, a business document mapped with ML-assisted mapping proposals, which is B2B message mapping, and a transaction run and monitored live, all inside SAP Integration Suite with no EDI tooling outside it. The abstract names the steps and not the document standard or the partner's protocol. A TechEd 2026 session (Thursday 29 October, Berlin), presented by Claudia Carabineiro, Marco Ertel, Marton Luptak and Tobias Griebe, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-in162":{"href":"/content/teched-2026-in162","name":"Building API-centric integration flows with SAP Integration Suite","kind":"talk","short":"Talk on API-first integration flows in SAP Integration Suite","line":"An API-first way of working in SAP Integration Suite: one integration case, its API artifacts built, configured and run, then reused in other scenarios, with the abstract putting the gain in reuse and lifecycle management for teams used to point-to-point integration. It does not say which Integration Suite capability holds the API artifact or how it sits beside an integration flow. A two-hour hands-on TechEd 2026 session (Wednesday 28 October, Berlin), presented by Karsten Strothmann, Kathrin Widenmann, Marton Luptak, Nils Lorenz and Shivani Borkar, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-in163":{"href":"/content/teched-2026-in163","name":"Build your own event-driven scenario with advanced event mesh","kind":"talk","short":"Hands-on event-driven scenario with advanced event mesh","line":"An event-driven scenario built on SAP Integration Suite, advanced event mesh: queues, topics and subscriptions first, then filtering and event replay, in two parallel tracks, a guided one for newcomers and a second for experienced practitioners. It covers the brokered side of Event Mesh; which systems publish and consume, and which protocol the clients speak, is not stated. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Claudia Carabineiro, Emily Mui, Karsten Strothmann and Tobias Griebe, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-in200":{"href":"/content/teched-2026-in200","name":"Govern AI-supported actions across enterprise systems","kind":"talk","short":"Talk on governing AI agent actions through SAP Integration Suite","line":"Governing what an AI agent may do once it takes business actions across enterprise systems, which is the Tool governance concern, with SAP Integration Suite as the place it is enforced. The abstract lists the mechanisms, scoped APIs, event-driven workflows, runtime policy enforcement, exception handling and observability across SAP and third-party systems, and names no Integration Suite feature behind any of them. A TechEd 2026 session (Tuesday 27 October, Berlin; also IN200V, virtual), presented by Finny Babu and Piyush Gakhar, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-in202":{"href":"/content/teched-2026-in202","name":"Accelerate your migration to SAP Integration Suite","kind":"talk","short":"Talk on migrating from SAP Process Orchestration to Integration Suite","line":"Migrating from SAP Process Integration and SAP Process Orchestration to SAP Integration Suite, which is the Platform migration concern on the integration side. The abstract promises the services and tools available for the move, new AI-assisted innovations among them, and guidance for a migration project; it names none of the tools, so what the session covers beyond the migration path itself is not stated. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Morten Wittrock and Nils Lorenz, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-in203":{"href":"/content/teched-2026-in203","name":"Mercedes-Benz’s journey to SAP Integration Suite","kind":"talk","short":"Customer story on Mercedes-Benz moving to SAP Integration Suite","line":"Mercedes-Benz's move from SAP Process Integration and SAP Process Orchestration to a centrally governed integration platform on SAP Integration Suite, run for several business domains at global scale, which is a Platform migration case told by the customer. The abstract promises the architectural and operational decisions behind it and states none of them. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Oliver Weng and Sebastian Buhlinger, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-in208":{"href":"/content/teched-2026-in208","name":"Governance, automation, and observability in Cloud Integration","kind":"talk","short":"Talk on governance, automation and monitoring in Cloud Integration","line":"Governance controls in Cloud Integration for developers and architects, automations written against its public OData API, and monitoring across Cloud Integration and SAP Cloud ALM with AI-assisted error analysis. The abstract names the OData API as the automation surface and does not list the controls or the operations the API exposes. A TechEd 2026 session (Wednesday 28 October, Berlin; also IN208V, virtual), presented by Morten Wittrock and Sunny Kapoor, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-in211":{"href":"/content/teched-2026-in211","name":"Build integrations faster with AI-assisted design and operations","kind":"talk","short":"Talk on AI-assisted integration development in SAP Integration Suite","line":"AI-assisted integration development in SAP Integration Suite: the abstract names embedded generative AI tools that speed up building integrations, agent-ready APIs and event-driven architectures that connect SAP and third-party systems. The Integration Suite edge holds because it is the subject; the Integration flows edge rests on the phrase integration development alone, since the abstract names no tool, no capability area and no feature. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Finny Babu and Shilpa Vij, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-in212":{"href":"/content/teched-2026-in212","name":"Modern integration at TÜV Rheinland: APIs, events and cloud transformation","kind":"talk","short":"Customer story on TÜV Rheinland moving to SAP Integration Suite","line":"TÜV Rheinland's migration from SAP Process Orchestration to SAP Integration Suite with API-led connectivity and event-driven architecture, told through business cases. The abstract names what was used: the SAP Integration Suite, Event Mesh capability, API Management, generative AI for faster development and SAP Cloud ALM for monitoring. It states nothing about how any of them was used, so the edges rest on the names and on the Platform migration the story starts from. A TechEd 2026 session (Wednesday 28 October, Berlin), written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-in260":{"href":"/content/teched-2026-in260","name":"Modernisation and migration to SAP Integration Suite made simple","kind":"talk","short":"Hands-on migration of PI and PO scenarios into SAP Integration Suite","line":"A hands-on platform migration of SAP Process Integration and SAP Process Orchestration scenarios into SAP Integration Suite: the migration assessment run against a legacy landscape to see what converts automatically, the migration tooling in Integration Suite run on the scenarios, and the resulting integration flows adjusted and deployed. What the assessment classifies a scenario by, and which adapters convert, is not stated. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Claire Tseng, Craig Stasila, Nils Lorenz and Sunny Kapoor, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-in261":{"href":"/content/teched-2026-in261","name":"Model context protocol (MCP) unlocked: Enable governed access to AI agents","kind":"talk","short":"Talk on the MCP Gateway in SAP Integration Suite for AI agents","line":"The MCP Gateway in SAP Integration Suite: the place policy, security and analytics are applied to a curated set of MCP tools before an AI agent reaches enterprise tools and APIs through it, tool governance done in the integration layer and agent access to your systems routed through one gateway. The abstract names the gateway and its three functions and does not say how tools are curated, which policies exist or how the agent authenticates. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Bruno Renzo, Emily Mui, Markus Winter and Sunny Kapoor, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-in262":{"href":"/content/teched-2026-in262","name":"Build an integration scenario from scratch with AI assistance at every step","kind":"talk","short":"Hands-on integration scenario built with AI assistance at each step","line":"Builds an integration scenario in SAP Integration Suite from nothing and takes it through design, deployment, optimisation, monitoring and resolution with AI assistance at each step, which is the Integration flows concern worked end to end. The abstract names the phases and the kinds of help, development, analysis, troubleshooting and continuous improvement, and no feature or tool that gives them. A TechEd 2026 hands-on session (Tuesday 27 October, Berlin), presented by Craig Stasila, Finny Babu, Prashant Gautam and Shilpa Vij, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-in804":{"href":"/content/teched-2026-in804","name":"Road map for SAP Integration Suite: What ships next across all capabilities","kind":"talk","short":"Road map talk for SAP Integration Suite across its capability areas","line":"SAP's road map for SAP Integration Suite across its capability areas: API Management, event-driven integration, business process and trading partner integration, and hybrid runtimes for SAP and third-party systems. The abstract promises recent deliveries and the planned innovations that make the platform agent-ready within SAP Business AI Platform; it names the areas and no shipping item, so the edges rest on the product and the one area it names by a product name. A TechEd 2026 session (Thursday 29 October, Berlin; also IN804V, virtual), written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-in810":{"href":"/content/teched-2026-in810","name":"Roadmap to upgrade from SAP Process Orchestration: Agentic era preparation","kind":"talk","short":"Road map talk on moving from SAP Process Orchestration","line":"The road map for moving from SAP Process Orchestration to SAP Integration Suite, a platform migration with two named items: AI-supported migration tooling in Integration Suite that takes manual effort out of the conversion, and the Edge Integration Cell runtime as the governed hybrid runtime for secure deployments, in the abstract's words. Neither is described beyond its name, so what the tooling converts and what Edge Integration Cell runs is not stated. A TechEd 2026 session (Thursday 29 October, Berlin), presented by Arti Gopalan, Shilpa Vij and Udo Paltzer, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-in813":{"href":"/content/teched-2026-in813","name":"Intelligent, governed, and agentic integrations with SAP Integration Suite","kind":"talk","short":"Talk on SAP Integration Suite governing agentic workflows","line":"SAP Integration Suite positioned as the control plane that connects and governs agentic workflows across SAP and third-party systems, set against the abstract's claim that exposing back ends directly to AI brings security, compliance and cost risks. That governing role is the Tool governance concern; the abstract promises recent innovations and names none. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Finny Babu and Piyush Gakhar, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-jw122":{"href":"/content/teched-2026-jw122","name":"Get to know our AI-enhanced mobile apps across the Autonomous Enterprise","kind":"talk","short":"Demo of the Joule Work mobile app and mobile AI patterns","line":"A demo of the Joule Work mobile app, part of SAP Joule, and selected SAP mobile apps, showing the mobile AI features meant for using SAP Autonomous Suite on the go, followed by the mobile AI patterns and how to build your own Mobile apps with SAP Business AI Platform. The abstract names the apps and the patterns and states no feature or tool, so what building your own involves is not said. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Sandeep Tetali and Thilo Berndt, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-jw129":{"href":"/content/teched-2026-jw129","name":"SAP’s compositional design system: Craft enterprise UIs with AI on the fly","kind":"talk","short":"Talk on the design system behind generated UIs in Joule Work","line":"SAP's compositional design system is the engine behind the generated interface in Joule Work, the front of SAP Joule: SAP's abstract says AI assembles the UI at runtime from primitives and composites under a body of design knowledge, inside a brand-safe design system, and that the session covers the architecture that keeps the result consistent. A third shape of Generative UI beside the two the capability describes, since here the model composes the interface at runtime. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Philip Miseldine and Sophia Levens, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-jw213":{"href":"/content/teched-2026-jw213","name":"SAP Fiori elements and the age of AI: Build apps that are future ready","kind":"talk","short":"Talk on building SAP Fiori elements apps ready for AI","line":"Building SAP Fiori elements apps so they work with AI and fit SAP's next products: the abstract names AI-assisted development, OData and annotation design, and intent- and action-ready semantics that keep an app secure, discoverable and upgrade safe. Annotation design is the Fiori annotations concern and the OData service under it the other; the atlas holds no entry for SAP Fiori elements itself, and the abstract names no tool, annotation or version. A TechEd 2026 session (Thursday 29 October, Berlin), presented by Katja Zoch and Sebastian Steinhauer, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-jw214":{"href":"/content/teched-2026-jw214","name":"AI-enhanced analytics with SAP Business AI Platform","kind":"talk","short":"Talk on data products, an ontology and MCP read from Joule Work","line":"SAP Business Data Cloud data products joined to an ontology, a semantic layer the abstract says is supported by the Model Context Protocol, and read from Joule Work (SAP Joule) and SAP Analytics Cloud: that is the architecture SAP's abstract states for its AI-enabled analytics. The abstract names the parts and not how the semantic layer is modelled or what an analytics developer builds against. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Hacen Benkhedah, Joaquin Recio Huertas, Matilda Hyka and Oliver Huth, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-jw262":{"href":"/content/teched-2026-jw262","name":"OData to outcomes—Build AI-enabled SAP Fiori apps using SAP Fiori elements","kind":"talk","short":"Hands-on Fiori elements app built through SAP's MCP servers","line":"A Fiori elements app built through SAP's MCP servers: the OData V4 service comes from the MCP server for RAP, which the atlas holds as the ADT MCP Server, or from @cap-js/mcp-server for CAP, and the UI from @sap-ux/fiori-mcp-server, with annotations and actions added before the app is tied to SAP's AI features. Agent access to your code on both the service and the UI side; SAP's abstract names the servers and the steps and says nothing about which AI features or which agent host. A TechEd 2026 session (Thursday 29 October, Berlin), presented by Benedikt Schoelch, Sebastian Steinhauer, Sebastian Werner and Stefan Engelhardt, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-jw300":{"href":"/content/teched-2026-jw300","name":"Joule without walls: From personal skills to enterprise interoperability","kind":"talk","short":"Talk on SAP Joule connecting outward over A2A and MCP","line":"SAP Joule connects outward over two protocols, A2A and MCP, which SAP's abstract names as the foundation of its open ecosystem, with Joule Assistants as composable agents and extensibility built in. The session draws the line between a personal extension of Joule and one that needs enterprise governance; the abstract does not say where that line falls. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Mathis Boerner and Thomas Mueller, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-jw301":{"href":"/content/teched-2026-jw301","name":"Joule and related AI offerings from SAP: One platform, many systems","kind":"talk","short":"Talk on running SAP Joule across many SAP systems","line":"SAP Joule run across dozens of SAP systems: the SAP for Me portal, orchestration across systems, configuration and credential management, monitoring and tenant isolation are the topics SAP's abstract lists. It stays on the operating side and says nothing about building on Joule. A TechEd 2026 session (Wednesday 28 October, Berlin; also JW301V, virtual), presented by Lukas Lochner, Marvin Klaus and Mathias Rup, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-jw809":{"href":"/content/teched-2026-jw809","name":"The road map for SAP Joule for Consultants—your go-to SAP consulting tool","kind":"talk","short":"Road map talk for SAP Joule for Consultants","line":"SAP's road map for SAP Joule for Consultants, which the abstract describes as becoming the tool for SAP software projects: landscape awareness and secure system connectivity, so that Joule understands an organisation's SAP environments and gives project teams more contextual guidance. The atlas holds no entry for Joule for Consultants, so the piece enters on SAP Joule, the product it is an edition of; the abstract states outcomes and no feature or date. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Natalie Han and Sachin Kaura, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-par1102":{"href":"/content/teched-2026-par1102","name":"Spec first: The disciplined way to develop ABAP with agents","kind":"talk","short":"Talk on spec-driven ABAP development with a Kiro-powered plug-in","line":"Spec-driven ABAP development with a new AWS Toolkit for Eclipse plug-in powered by Kiro, in SAP's words, working inside ABAP Development Tools for Eclipse: SAP's abstract says it reads the codebase, helps with new features, explains legacy code, refactors and generates tests, for S/4HANA modernisation or a new business feature. It answers agent access to your code from inside Eclipse; the plug-in itself is not yet in the atlas, and the abstract does not say how it reaches the ABAP system. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Jon Friesen and Stephan Kremer, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-par1105":{"href":"/content/teched-2026-par1105","name":"Build agentic SAP extensions with Google Cloud","kind":"talk","short":"Talk on agentic SAP extensions with Google Cloud and clean core","line":"Google Cloud's architectures for agentic AI apps on SAP with a clean core: SAP Business AI Platform, SAP S/4HANA and SAP Business Data Cloud joined with BigQuery, Gemini and Google's Agent Development Kit. The abstract names zero-copy data agents, developer API workflows and ABAP extensions for AI integration, the last of which is the Extensibility concern; Business Data Cloud is the one atlas entry it names, and how any piece connects to another is not stated. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Ekaterina Kruse, Ian Moria and Stany Winkler, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-par1113":{"href":"/content/teched-2026-par1113","name":"Evolution of the Code10 CI Accelerator add-on for SAP Integration Suite","kind":"talk","short":"Partner talk on the Code10 CI Accelerator add-on for Integration Suite","line":"The Code10 CI Accelerator, a partner add-on that puts a process monitor over pipeline concepts and patterns in Cloud Integration, the Edge Integration Cell runtime and more of SAP Integration Suite, and how it has changed as the suite has. The add-on is not in the atlas, so the edges rest on the Integration Suite capabilities it monitors; the abstract names no pipeline pattern and no feature of the add-on. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Antonio Valladares Fernandez, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-par1115":{"href":"/content/teched-2026-par1115","name":"B2B integration factory: How Versuni verified more than 200 EDI interfaces","kind":"talk","short":"Customer story on Versuni validating EDI interfaces with Int4 Suite","line":"How Versuni prepared its EDI landscape for a migration to SAP Integration Suite using Int4 Suite: automated validation across more than 200 interfaces, trading partner dependencies removed from the test, issues found earlier, and a repeatable approach for large B2B programmes. Int4 Suite is not in the atlas, so the piece enters on Integration Suite as the migration target and on the Platform migration concern; what was validated and how is not stated beyond the count. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Henk Wouda and Michal Ibrom, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-par1119":{"href":"/content/teched-2026-par1119","name":"Integrating automation with agentic AI and complex file transfer needs","kind":"talk","short":"Talk on automation, Joule Agents and managed file transfer","line":"Deterministic automation around SAP's agentic offerings, Joule Agents among them, with SAP Integration Suite on the automation side and new managed file transfer capabilities in it that SAP's abstract names without describing. A panel of automation practitioners and the suite's product managers; the abstract states that the file transfer feature exists and nothing of its shape. A TechEd 2026 session (Thursday 29 October, Berlin), presented by Morten Wittrock, Sven Kohlhaas and Udo Paltzer, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-par1120":{"href":"/content/teched-2026-par1120","name":"Accelerating SAP solution transformations with the agent-led toolchain","kind":"talk","short":"Partner talk on the Tricentis agent-led toolchain for transformations","line":"Tricentis's agent-led toolchain for SAP solution transformations: AI-driven impact analysis and automated testing, which the abstract says reduce risk and speed up change delivery toward release readiness. Nothing named is an atlas entry and the toolchain is not one; the piece attaches to Testing because automated testing is the one concern the abstract names, and it states no product, system or kind of test. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Charlene Smith, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ra106":{"href":"/content/teched-2026-ra106","name":"How SAP Document AI brings agentic intelligence to business documents","kind":"talk","short":"Talk on SAP Document AI as agent-ready document skills","line":"SAP Document AI as SAP's abstract now describes it: composable, agent-ready skills for schemaless extraction, classification and summarisation of business documents, so Joule Agents can read and act on unstructured content, plus new document foundation models and agentic validation in its workflow engine. That widens document extraction past the fixed-schema fields the atlas entry records; the abstract names the features and not their release state. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Dheeraj Diwan, Soeren Leibach and Tomasz Janasz, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ra107":{"href":"/content/teched-2026-ra107","name":"SAP AI Core deep dive: Models, agents, and business context at scale","kind":"talk","short":"Talk on SAP AI Core as the orchestration layer of an AI architecture","line":"SAP AI Core read as the management and orchestration layer of an AI architecture, beyond the model runtime: SAP's abstract lists extending Joule Agents, the model library in Joule Studio for contextual reasoning, connecting data products from SAP Business Data Cloud, and embedding AI in SAP S/4HANA. It names the connections and not the APIs behind them. A TechEd 2026 session (Tuesday 27 October, Berlin; also RA107V, virtual), presented by Franziska Dobrigkeit and Hadi Hares, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ra110":{"href":"/content/teched-2026-ra110","name":"Joule and SAP Knowledge Graph: Context-aware AI across SAP solutions","kind":"talk","short":"Session whose catalogue abstract describes SAP AI Core orchestration","line":"The catalogue carries RA107's abstract under this title, and what it describes is SAP AI Core as the management and orchestration layer of an AI architecture: extending Joule Agents in SAP Joule, the model library in Joule Studio for contextual reasoning, connecting data products from SAP Business Data Cloud, and embedding AI in SAP S/4HANA. The SAP Knowledge Graph the title names does not appear in that text, so the edges rest on the abstract as published, and whether the session follows the title or the abstract is not known until it is recorded. A TechEd 2026 session (Wednesday 28 October, Berlin; also RA110V, virtual), presented by Jan Portisch and Pavithra G K, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ra160":{"href":"/content/teched-2026-ra160","name":"Build business differentiation with SAP AI Core","kind":"talk","short":"Hands-on with SAP AI Core extending Joule Agents","line":"SAP AI Core as the orchestration layer for enterprise AI, worked through with SAP's engineers: extend Joule Agents with models from its library, ground them in SAP Business Data Cloud products, embed them in SAP S/4HANA flows, then govern, scale and monitor them from prototype to production. The abstract says what the layer does for an agent and not which services carry each step. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by David Knaack, Franziska Dobrigkeit, Hadi Hares and Jonas Israel, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ra162":{"href":"/content/teched-2026-ra162","name":"SAP-RPT and TabPFN: Get started with tabular foundation models","kind":"talk","short":"Hands-on with SAP-RPT and TabPFN tabular foundation models","line":"Tabular foundation models, SAP-RPT and TabPFN, in a hands-on with SAP and Prior Labs: the model families first, then predictions run through SAP AI Core with a workflow built on tabular orchestration and connected to the participant's own data for real-time predictions. A predictive models session with the models as the subject; the abstract does not name the SDK or API the workflow is built with. A TechEd 2026 hands-on session (Thursday 29 October, Berlin), presented by Eliott Kalfon, Janick Zaehringer-Frasch, Johannes Hoehne, Katharina Schell, Nilay Mehta and Sherene Tan, written here from SAP's abstract; no recording is announced.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ra163":{"href":"/content/teched-2026-ra163","name":"Building custom Joule Agents with SAP Knowledge Graph","kind":"talk","short":"Hands-on building custom Joule Agents with SAP Knowledge Graph","line":"Custom Joule Agents built in a hands-on with SAP Knowledge Graph and Joule Studio: discovering APIs from a user's intent, grounding an agent's answers in business context, and integrating data products for SAP Business Data Cloud. The agents are SAP Joule's; the Knowledge Graph is not an atlas entry, and the abstract does not say which Joule Studio edition the exercises use. A TechEd 2026 hands-on session (Wednesday 28 October, Berlin), presented by Jan Portisch, Lucas Kiesow, Pavithra G K and Rafael Martin, written here from SAP's abstract; no recording is announced.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-ra164":{"href":"/content/teched-2026-ra164","name":"Hands on SAP Document AI: Next-generation intelligent document processing","kind":"talk","short":"Hands-on configuring and running SAP Document AI","line":"SAP Document AI configured and run by hand: schema design, splitting and classifying documents, enriching the extracted data and custom prompting are the exercises SAP's abstract names. Document extraction from the configuring side, with the schema the participant's own; which document types or models the exercises use is not stated. A TechEd 2026 hands-on session (Thursday 29 October, Berlin), presented by Christoph Lenschow, Tobias Weller and Tomasz Janasz, written here from SAP's abstract; no recording is announced.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-st100":{"href":"/content/teched-2026-st100","name":"Architecting your data foundation for the Autonomous Enterprise","kind":"talk","short":"Talk on a data foundation on SAP Business Data Cloud","line":"Building a data foundation for what SAP calls the Autonomous Enterprise on SAP Business Data Cloud: a business data fabric that unifies trusted data, business context and governed data products across an organisation's systems, so that Joule Agents in SAP Joule have the context their answers rest on. The abstract states Business Data Cloud's role and no product, data product or integration beneath it. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Mudit Mittal and Prakash Nanduri, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-st103":{"href":"/content/teched-2026-st103","name":"Behind the Autonomous Enterprise: SAP Knowledge Graph and SAP Domain Models","kind":"talk","short":"Talk on SAP Knowledge Graph and SAP Domain Models in SAP Business AI","line":"The strategy behind SAP Business AI's intelligence layer: SAP Knowledge Graph for enterprise context, SAP Domain Models for SAP-specific expertise and tabular AI for predictions, unified on SAP AI Core with SAP Document AI. Knowledge Graph and Domain Models are not atlas entries, so the edges rest on the two products the abstract names as the infrastructure and on Predictive models for the tabular AI; nothing is stated about what any of them does in the layer. A TechEd 2026 session (Tuesday 27 October, Berlin; also ST103V, virtual), presented by Jan Portisch and Richard Grandpierre, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-st104":{"href":"/content/teched-2026-st104","name":"SAP Integration Suite as the foundation for enterprise agentic AI","kind":"talk","short":"Talk on SAP Integration Suite as agents' governed access to systems","line":"SAP Integration Suite as the way an agent reaches systems: SAP's abstract says it gives agents governed access to APIs, events, applications, trading partners and processes across SAP and third-party landscapes, with AI assistance in the design, deployment and operation of the integrations. That is agent access to your systems through middleware; the abstract names no protocol and no gateway. A TechEd 2026 session (Tuesday 27 October, Berlin; also ST104V, virtual), presented by Markus Winter and Udo Paltzer, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-st106":{"href":"/content/teched-2026-st106","name":"SAP HANA Cloud: The data foundation for contextualizing and reasoning","kind":"talk","short":"Talk on SAP HANA Cloud's direction in SAP's data strategy","line":"Where SAP is taking SAP HANA Cloud, described in the abstract as the anchor of SAP's data strategy and a unified layer to store, contextualise and reason across a business, and what that means for a data platform decision. The abstract is a direction statement and names no feature, release or date, so the one edge rests on the product itself. A TechEd 2026 session (Tuesday 27 October, Berlin; also ST106V, virtual), presented by Matthew Zenus and Stefan Baeuerle, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-st107":{"href":"/content/teched-2026-st107","name":"SAP HANA Cloud as the AI database for SAP Business Data Cloud","kind":"talk","short":"Talk on SAP HANA Cloud as the AI database in Business Data Cloud","line":"SAP HANA Cloud as the AI database at the centre of SAP Business Data Cloud: the strategy behind its AI-first direction, and a Carl Zeiss speaker on how it runs in production today. The abstract names the two products and the customer and no feature, workload or figure, so the edges rest on the products as its subject. A TechEd 2026 session (Thursday 29 October, Berlin), presented by Kush Kashyap and Thomas Hammer, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-st108":{"href":"/content/teched-2026-st108","name":"Build your custom knowledge layer with SAP HANA Cloud","kind":"talk","short":"Talk on a custom knowledge layer with SAP HANA Cloud engines","line":"SAP HANA Cloud's multi-model engines, the knowledge graph engine among them, as the base for a custom knowledge layer over the enterprise's data, with SAP Business Data Cloud as the product that includes the database. Graph, spatial and document data put to an AI use; the abstract names the graph engine and not the query language or the vector side. A TechEd 2026 session (Wednesday 28 October, Berlin; also ST108V, virtual), presented by Niklas Siemer and Sebastian Schmidt, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-st113":{"href":"/content/teched-2026-st113","name":"AkzoNobel: Modernizing integration at enterprise scale","kind":"talk","short":"Customer story on AkzoNobel moving onto SAP Integration Suite","line":"AkzoNobel moving webMethods, SAP Process Orchestration and Microsoft BizTalk onto SAP Integration Suite, with Rojo Consultancy: SAP's abstract states more than 100 third-party applications on the new platform and the preparation for event-driven and AI-enabled integration. A platform migration told by the customer; the abstract names the three source platforms and not the tooling used to convert them. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Oussama Zoubairi, Piyush Gakhar and Sander Kool, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-st115":{"href":"/content/teched-2026-st115","name":"Build real-time event-driven integrations for your enterprise","kind":"talk","short":"Talk on event-driven integration with advanced event mesh","line":"Event-driven integration with SAP Integration Suite, advanced event mesh inside SAP Integration Suite: where events beat request-response, how publish and subscribe decouple systems, and what a phased move to event-driven integration looks like. Event Mesh as architecture; the abstract names no broker protocol and no CDS mapping. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Daniel Dorst and Karsten Strothmann, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-st122":{"href":"/content/teched-2026-st122","name":"Extending SAP Autonomous Suite","kind":"talk","short":"Talk on AI-enabled extensibility across SAP Autonomous Suite","line":"Extensibility across SAP Autonomous Suite: AI-enabled development in SAP Build solutions, the ABAP Cloud model among them, as the way extensions are designed, generated and deployed, and a direction for making extensions ready for agentic AI. The abstract names the suite, SAP Build and the ABAP Cloud model and no single feature, so the edges are to Extensibility, the concern, and to SAP Build Code, the SAP Build solution held here in which Joule generates and deploys development; which other SAP Build solutions the session shows is not stated. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Alexander Rother and Khaled MUSILHY, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-st124":{"href":"/content/teched-2026-st124","name":"Strategy for agent-led development in ABAP","kind":"talk","short":"Strategy talk on agent-led ABAP development in ADT","line":"SAP Joule for Developers, ABAP AI capabilities moving ABAP development in ADT from AI-assisted to agent-led, across greenfield work and the migration and modernisation of existing solutions: SAP's strategy session for its ABAP AI add-on. The abstract states the direction and names no feature or release date. A TechEd 2026 session (Tuesday 27 October, Berlin; also ST124V, virtual), presented by Alexander Rother and Sonja Lienard, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-st200":{"href":"/content/teched-2026-st200","name":"The next evolution of SAP Business Data Cloud with Dremio and SAP Reltio","kind":"talk","short":"Talk on Business Data Cloud's data fabric with Dremio and SAP Reltio","line":"SAP Business Data Cloud's data fabric with two additions SAP's abstract names, Dremio and SAP Reltio: data products, open catalogues, unified master data and business semantics as the pieces of a data foundation for analytics and agentic AI. The abstract names the two products and not what each takes over in the fabric. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Florian Schmidt, Rene Kirchhoff and Sriraj Rajaram, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-tm100":{"href":"/content/teched-2026-tm100","name":"Speed up your cloud journey with agentic data management and configuration","kind":"talk","short":"Talk on the Configuration Assistant for SAP Cloud ERP","line":"The Configuration Assistant for SAP Cloud ERP: an agent that validates insights from an organisation's data and maps toward a target business configuration, under the heading of agentic data management, with data preparation, transparency and governance as the stated aims. The atlas holds no entry for the Configuration Assistant and no concern for business configuration of an ERP, so the edge is to Agent access to your systems, the nearest concern, an agent working on a system's data and configuration; the abstract's configuration is not the per-environment application settings the atlas files under that word. The abstract states aims and no feature detail. A TechEd 2026 session (Wednesday 28 October, Berlin; the same abstract runs as the hands-on TM267), presented by Felix Peter and Helen Sontowski, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-tm104":{"href":"/content/teched-2026-tm104","name":"Discover fast-track implementation of SAP Cloud ERP with AI","kind":"talk","short":"Talk on AI tooling for SAP S/4HANA Cloud Public Edition projects","line":"SAP's implementation practice for SAP S/4HANA Cloud Public Edition and the AI-driven tooling SAP says is changing stages of a project, with faster and more predictable deployments, less manual effort and lower risk as the stated outcomes. The abstract names the product, an external here, and no tool; the edge is to SAP Joule because SAP's AI tooling for implementation in the sibling sessions TM109, TM263 and TM265 is Joule for Consultants, and whether this session shows it is not stated. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Anurag Barua and Khaled MUSILHY, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-tm105":{"href":"/content/teched-2026-tm105","name":"Agent-led custom code migration: From planning to mass adaptation","kind":"talk","short":"Talk on the Custom Code Migration Agent for SAP Cloud ERP Private","line":"The Custom Code Migration Agent in SAP Joule for Developers, ABAP AI capabilities, applied to moving custom code from SAP ERP Central Component to SAP Cloud ERP Private: the abstract describes a toolchain that starts with planning in SAP Cloud ALM and ends in mass remediation by the agent, with newer custom code management features shown alongside. Which findings the agent remediates, and how far it goes without a developer, the abstract does not say. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Marco Matha and Olga Dolinskaja, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-tm108":{"href":"/content/teched-2026-tm108","name":"The journey with clean core continues for SAP Cloud ERP Private","kind":"talk","short":"Talk on clean core in SAP S/4HANA Cloud Private Edition in 2026","line":"Clean core in SAP S/4HANA Cloud Private Edition as it stands in 2026: what is new in extensibility, new capabilities in the dashboard for the RISE with SAP Methodology, how AI helps make custom code compliant with clean core, and new guidance on data, integration and clean core in relation to SAP's API policy. The edges are to Extensibility, the concern the session is about, and to ABAP Cloud readiness, the concern behind making custom code compliant; the abstract names no tool for either and the dashboard is not held here. A TechEd 2026 session (Wednesday 28 October, Berlin; also TM108V, virtual), presented by Markus Goebel and Olga Dolinskaja, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-tm109":{"href":"/content/teched-2026-tm109","name":"Discover how SAP Joule for Consultants transforms cloud implementations","kind":"talk","short":"Customer story on SAP Joule for Consultants in a cloud transformation","line":"A customer's use of SAP Joule for Consultants in a cloud transformation: grounding project data, running fit-to-standard workshops faster and keeping teams aligned, followed by the technical architecture behind those capabilities and an early road map preview on feasibility for developers and enterprise architects. The edge is to SAP Joule, of which Joule for Consultants is the offering for consultants and has no entry of its own here; the abstract leaves the customer as a placeholder and the architecture to the session. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Philipp Kandziora and Yi Hsuan Lin, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-tm215":{"href":"/content/teched-2026-tm215","name":"From intent to extension: Joule and the future of solution extensibility","kind":"talk","short":"Talk on Joule turning intent into extensions across Autonomous Suite","line":"How Joule turns natural-language intent into extensions across SAP Autonomous Suite: intent-based agent extensions, enriching the agents SAP delivers, packaging options for partners and what SAP calls a harmonised extensibility experience. The edges are to SAP Joule, which does the translating, and to Extensibility, the concern; the abstract names the directions and no feature that ships today. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Amitha Kamath, Oren Shatil and Richard Kuba, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-tm260":{"href":"/content/teched-2026-tm260","name":"Migrate and modernize your custom code using RISE with SAP and agentic AI","kind":"talk","short":"Hands-on custom code migration with the Custom Code Migration Agent","line":"The Custom Code Migration Agent in SAP Joule for Developers, ABAP AI capabilities, shown on the RISE with SAP path that moves custom extensions from SAP ERP Central Component to SAP Cloud ERP Private: the abstract says the agent adapts the code through MCP tools and the AI for ABAP features in the custom code tools, and that the adapted code is then reworked along the clean core approach, the concern ABAP Cloud readiness covers. Which MCP tools, and what the clean core step changes in the code, the abstract leaves open. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Hitesh Bindal, Ingo Braeuninger, Jonas Helin of GitHub, Olga Dolinskaja and Thomas Fiedler, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-tm261":{"href":"/content/teched-2026-tm261","name":"Agent-led test management: Hands-on lab with Joule in SAP Cloud ALM","kind":"talk","short":"Hands-on with the Test Management Assistant in SAP Cloud ALM","line":"The Test Management Assistant, a Joule capability in SAP Cloud ALM, worked through on project scenarios: scoping requirements, detecting coverage gaps and generating test cases with AI. The edge is to SAP Joule, which the assistant runs on; SAP Cloud ALM has no entry here, and the atlas's testing concern, proving a service's model and handlers, is not this session's test management. A TechEd 2026 hands-on session (Wednesday 28 October, Berlin), presented by Christina Pickhardt, Daniel Lorenz, Niclas Weidner and Tobias Keller, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-tm262":{"href":"/content/teched-2026-tm262","name":"Experience core foundational capabilities of SAP Cloud ERP","kind":"talk","short":"Guided exercises in SAP S/4HANA Cloud Public Edition","line":"Guided exercises in SAP S/4HANA Cloud Public Edition, which SAP calls the execution backbone of the Autonomous Enterprise: validating AI capabilities against master data for industry and domain needs, generating AI-driven KPIs and reporting summaries. The product is an external here and the abstract names no AI feature by name; the edge is to SAP Joule, SAP's AI layer across its applications and the one entry the AI capabilities of SAP Cloud ERP attach to, which the abstract itself does not name. A TechEd 2026 hands-on session (Wednesday 28 October, Berlin), presented by Akshat Kharial, Ankush Thareja and Nises Soni, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-tm263":{"href":"/content/teched-2026-tm263","name":"AI-accelerated RISE with SAP migration with the system transition workbench","kind":"talk","short":"Talk on the RISE with SAP system transition workbench and Joule","line":"SAP Joule for Consultants and the RISE with SAP system transition workbench in a move to SAP S/4HANA Cloud Private Edition: readiness assessments, migration workflows and the SAP tools involved. The edge is to SAP Joule, of which Joule for Consultants is a part; the system transition workbench has no entry here, and Platform migration covers applications leaving older BTP platforms, not an ERP system's move. A TechEd 2026 hands-on session (Wednesday 28 October, Berlin), presented by Daniel Funkert, Kristin Aleksandrova, Mirja Kempin and Moritz Gysler, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-tm265":{"href":"/content/teched-2026-tm265","name":"SAP Joule for Consultants: Unified knowledge for requirements and designs","kind":"talk","short":"Hands-on fit-to-standard analysis with SAP Joule for Consultants","line":"Fit-to-standard analysis as a consultant on a cloud transformation project: connecting an organisation's data to SAP Joule for Consultants through SAP AI Core, getting answers from SAP knowledge and that content, then building an expert, loading project files and running guided prompts. The edges are to SAP Joule, of which Joule for Consultants is a part, and to SAP AI Core, named as the connection path; how the data is grounded is left to the session. A TechEd 2026 hands-on session (Wednesday 28 October, Berlin), presented by Anantharaman Ravi, Natalie Han, Sachin Kaura and Yi Hsuan Lin, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-tm267":{"href":"/content/teched-2026-tm267","name":"Transform your configuration of SAP S/4HANA Cloud with agentic AI","kind":"talk","short":"Hands-on with the Configuration Assistant for SAP Cloud ERP","line":"The Configuration Assistant for SAP Cloud ERP, hands-on: an agent that validates insights from an organisation's data and maps toward a target business configuration, under the heading of agentic data management, with data preparation, transparency and governance as the stated aims. The atlas holds no entry for the Configuration Assistant and no concern for business configuration of an ERP, so the edge is to Agent access to your systems, the nearest concern, an agent working on a system's data and configuration; the abstract's configuration is not the per-environment application settings the atlas files under that word. The abstract is the same text as TM100 and states aims and no exercise detail. A TechEd 2026 hands-on session (Thursday 29 October, Berlin), presented by Felix Peter, Joerg Rupprecht, Joerg Singler and Simone Mundt, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-tm268":{"href":"/content/teched-2026-tm268","name":"Analyze and optimize ABAP Cloud model apps built on core data services","kind":"talk","short":"Talk on performance anti-patterns in ABAP CDS models and their tools","line":"Performance anti-patterns in data models built with ABAP CDS under ABAP Cloud applications, and the tools that find them: the abstract names ABAP cross trace, the SQL analyzer (PlanViz) in Visual Studio Code and the SAP HANA database explorer as what the session uses to follow a bottleneck from the application to the database. The anti-patterns are taken from real business applications, which is where the data modelling edge holds; which ones are shown is not in the abstract. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Ingo Braeuninger, Robert Werlich, Steffen Siegmund and Thomas Fiedler, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-tm815":{"href":"/content/teched-2026-tm815","name":"Navigating the road map for SAP Cloud ERP: Today, next, and beyond","kind":"talk","short":"Road map talk for SAP Cloud ERP by theme","line":"SAP's near-term and long-term plans for SAP Cloud ERP by theme: embedded AI, process automation, lifecycle management and extensibility, with timelines and adoption paths toward what SAP calls the Autonomous Enterprise. SAP Cloud ERP has no artifact here, so the edges are to the two concerns the road map names, Extensibility and Process automation; the abstract names no product or feature under either, and whether its process automation is SAP Build Process Automation is not stated. A TechEd 2026 session (Tuesday 27 October, Berlin; also TM815V, virtual), presented by Lawrence Martin and Sasa Markovic, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-tm817":{"href":"/content/teched-2026-tm817","name":"What's next in extensibility for SAP Autonomous Suite","kind":"talk","short":"Talk on agent-driven extensibility ahead for SAP Autonomous Suite","line":"Agent-driven extensibility across SAP Autonomous Suite as SAP sees it ahead: what is coming for making extensions ready for agentic AI and how SAP's assistants are meant to help with it. The edge is to Extensibility, the concern; the abstract names no assistant, no feature and no date. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Alexander Rother and Oren Shatil, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-tm818":{"href":"/content/teched-2026-tm818","name":"SAP Sovereign Cloud: A path to the cloud for highly regulated businesses","kind":"talk","short":"Talk on SAP Sovereign Cloud for regulated organisations","line":"SAP Sovereign Cloud for regulated organisations moving SAP solutions to the cloud: which SAP solutions are available there and which deployment scenarios fit which regulatory needs. SAP Sovereign Cloud has no entry here and the abstract names nothing else the atlas holds; the edge is to Deployment only because the abstract names deployment scenarios, which are a cloud offering's and not the concern of getting an application onto a runtime that the capability covers. A TechEd 2026 session (Thursday 29 October, Berlin), presented by Mary Carol Falk, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-xp100":{"href":"/content/teched-2026-xp100","name":"Evolving the identity lifecycle for an AI-first future","kind":"talk","short":"Talk on Cloud Identity Services and agent identity","line":"Cloud Identity Services as the foundation for authentication, identity lifecycle management and access across SAP landscapes, and the agent identity concepts and SAP-managed identity and access management scenarios SAP says reduce operational effort. The edges are to the service and to the two concerns the abstract names it for, Authentication and Identity provisioning; the abstract names the agent identity concepts and does not say what they are. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Sonia Petrescu and Swetta Singh, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-xp101":{"href":"/content/teched-2026-xp101","name":"Building trusted applications on SAP Business AI Platform by design","kind":"talk","short":"Talk on secure-by-design apps on SAP Business AI Platform","line":"Building cloud applications on SAP Business AI Platform with security and compliance built in: the identity, connectivity, governance and security services SAP groups under the platform, secure-by-design development, and authorisation and access controls for AI agents. The edges are to Authorization and to Tool governance, the concern of what an agent may call with which authorisations; the abstract names the service categories and no service by name. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Christian Cohrs and Regine Schimmer, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-xp104":{"href":"/content/teched-2026-xp104","name":"Future-ready access governance from SAP: Strategy and innovation","kind":"talk","short":"Road map talk for SAP Access Control and Identity Access Governance","line":"Strategy and road map for SAP Access Control and SAP Cloud Identity Access Governance: AI-enabled governance, hybrid deployment options and identity services for securing SAP landscapes and compliance. Neither product has an entry here; the edge is to Identity provisioning, the nearest concern, since access governance decides which users hold which roles in which systems, and the abstract names no identity service by name. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Sonia Petrescu and Swetta Singh, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-xp108":{"href":"/content/teched-2026-xp108","name":"Inside Joule Studio runtime: Agent deployment and integrations","kind":"talk","short":"Talk on Joule Studio runtime for deploying and running agents","line":"Joule Studio runtime from the inside: the tools and services SAP manages to deploy, integrate, run, extend and operate agents at scale, and the integrations through the agent gateway and SAP S/4HANA Cloud Private Edition. The edge is to SAP Joule, whose agents the runtime runs; the atlas reaches that runtime through @sap/joule-work-dev-cli-early-adopters, which deploys a solution to it, and the abstract names neither the CLI nor a service by name. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Andre Lamego and Jens Huesken, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-xp112":{"href":"/content/teched-2026-xp112","name":"How SAP secures enterprise AI agents with identity propagation","kind":"talk","short":"Talk on identity propagation for AI agents in Cloud Identity Services","line":"Cloud Identity Services as the identity layer for AI agents as well as people: the abstract states that both are managed in one directory, that user context is propagated by token exchange, and that authorisation is enforced at every hop, so no agent holds back-end credentials. Agents from Microsoft, Google and partners take the same flow through the agent gateway. Token exchange across a hop is the authentication side and the per-hop check the authorisation side; what the agent gateway is, and whether it is a product, the abstract does not say. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Gunnar Kosche and Sebastian Ries, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-xp113":{"href":"/content/teched-2026-xp113","name":"Build AI agents on SAP and non-SAP data and context in an open lakehouse","kind":"talk","short":"Talk on SAP Business Data Cloud as an open lakehouse for AI agents","line":"SAP Business Data Cloud as an open lakehouse: the abstract states that it holds third-party data beside SAP data and its semantic context on Apache Iceberg and Apache Polaris, that architects and developers publish governed data products and ontologies from it, which is the cataloguing and lineage concern, and that agents built on them for SAP Joule can be reached from outside over A2A. How a data product is defined, and what the ontology layer adds to it, is not in the abstract. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Rahim Bhojani and Sivakumar N, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-xp160":{"href":"/content/teched-2026-xp160","name":"Enhancing cyber resilience through AI-enabled tabletop exercises","kind":"talk","short":"Talk on AI-generated incident response tabletop exercises","line":"An AI-enabled platform that generates incident response tabletop exercises, evaluates them and improves them over time, built on cybersecurity frameworks, incident response documentation, system architecture and historical incident data, and producing a scenario and an ideal response model for each. The platform has no entry here and the abstract names nothing the atlas holds; the edge is to Documentation only because the abstract names incident response documentation as an input, which is not the concern of documenting your own project that the capability covers. A TechEd 2026 hands-on session (Tuesday 27 October, Berlin), presented by Cedric HEBERT, Colleen Hebbert, John Bauer and Slim TRABELSI, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-xp200":{"href":"/content/teched-2026-xp200","name":"Use change and deployment management in an ABAP environment with confidence","kind":"talk","short":"Talk on moving ABAP Cloud changes with Cloud Transport Management","line":"SAP Cloud Transport Management with SAP Cloud ALM as the governed way to move changes from a cloud-optimised ABAP environment into production: the abstract says the session sets out the process, where it differs from classic transport mechanisms, the current state of every content type it carries, and an outlook on deploying agents through it, which is the transport management concern on the cloud side. What each content type covers, and when agent deployment arrives, is not stated. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Moritz Gysler and Sven Rullmann, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-xp201":{"href":"/content/teched-2026-xp201","name":"AI-assisted operations: SAP Cloud ALM and SAP Cloud Logging in action","kind":"talk","short":"Talk on operations with SAP Cloud ALM and SAP Cloud Logging","line":"SAP Cloud Logging in an operations loop for the SAP Business AI Platform, with SAP Cloud ALM: the abstract assigns detecting a problem to Cloud ALM, supporting its resolution to AI, and the deeper analysis to Cloud Logging, and names the loop as automated detection, alerting and AI-guided troubleshooting with a person deciding, which is what operations automation covers. Which AI, and what it may do without that person, the abstract does not say. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Stephanie Jerch and Thorsten Sandfuchs, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-xp260":{"href":"/content/teched-2026-xp260","name":"Deploy, review, break, fix: Govern cloud transports with agility and AI","kind":"talk","short":"Hands-on transport chain across five SAP BTP services","line":"Five BTP services in one delivery chain, as the abstract lays it out: a transport is triggered in SAP Content Agent Service, tested in SAP Cloud Transport Management, its failure is raised by SAP Alert Notification service for SAP BTP and remediated by a SAP Joule agent with SAP Automation Pilot, and SAP Cloud Logging keeps the history for root-cause analysis. The chain from alert to remediation is the operations automation concern; what the Joule agent decides on its own is not in the abstract. A TechEd 2026 session (Thursday 29 October, Berlin), presented by Biser Simeonov, Daniel Funkert, Sven Rullmann and Thorsten Sandfuchs, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-xp263":{"href":"/content/teched-2026-xp263","name":"Identity lifecycle and governance with SAP services and Microsoft Entra","kind":"talk","short":"Talk on one user lifecycle with Cloud Identity Services and Entra","line":"Cloud Identity Services beside SAP Cloud Identity Access Governance and Microsoft Entra for one user lifecycle across SAP and third-party applications: the abstract states that SAP business roles can be included in Entra access packages, so that provisioning and governance run from Entra in a hybrid environment, which is the identity provisioning concern. Which SAP systems' roles, and over which protocol, is not stated. A TechEd 2026 session (Tuesday 27 October, Berlin), presented by Martin Raepple of Microsoft, Plamen Pavlov, Regine Schimmer and Swetta Singh, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-xp265":{"href":"/content/teched-2026-xp265","name":"Define, generate, deploy: AI-driven spec-first Terraform","kind":"talk","short":"Hands-on generating Terraform for a BTP account from a written spec","line":"Account provisioning written as a spec first: the abstract has participants write a structured description of a BTP account, its subaccounts, entitlements, governance, best practices and more, and an AI turns it into Terraform scripts that build it. The abstract does not name the Terraform provider the scripts use, the spec format or the AI behind the generation. A hands-on TechEd 2026 session (Wednesday 28 October, Berlin), presented by Christian Lechner, DJ Adams, Piotr Tesny and Vipin VijayKumar, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-xp266":{"href":"/content/teched-2026-xp266","name":"Ship your own sandboxed AI operations agent to Kyma in two hours","kind":"talk","short":"Hands-on operations agent deployed to SAP BTP, Kyma runtime","line":"An operations agent built and then broken on purpose: the abstract has participants deploy a reasoning agent to SAP BTP, Kyma runtime, connect it to SAP AI Core, give it observability over the runtime and cause a failure for it to diagnose, the operations automation concern with an agent doing the diagnosis. Patterns for cost control and monitoring are promised at the end; the agent framework and how the sandbox is drawn are not named. A TechEd 2026 session (Tuesday 27 October, Berlin, two hours), presented by Christian Lechner, Piotr Tesny, Thorsten Sandfuchs and Vipin VijayKumar, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-xp822":{"href":"/content/teched-2026-xp822","name":"Road map: SAP Business AI Platform security and SAP Cloud Identity Services","kind":"talk","short":"Road map talk for SAP Business AI Platform security services","line":"The road map for SAP Business AI Platform's security and compliance services, Cloud Identity Services and SAP Key Management Service among them, and the upcoming changes SAP files under security, governance and compliance. The edge is to Cloud Identity Services, the one named service with an entry here; SAP Key Management Service has none, and the abstract names no item of the road map. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Michael Friedrich and Sascha Vierlinger, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:teched-2026-xp825":{"href":"/content/teched-2026-xp825","name":"What’s next for the core platform capabilities of SAP Business AI Platform","kind":"talk","short":"Road map talk on the operations layer of SAP Business AI Platform","line":"A preview of the operations layer beneath SAP Business AI Platform: selected road map highlights across Joule Studio runtime, Cloud Identity Services and SAP Cloud Logging, on how enterprise AI is governed and run. The edges are to the two named services and to SAP Joule, whose agents the Joule Studio runtime runs; the abstract names the three areas and no highlight. A TechEd 2026 session (Tuesday 27 October, Berlin; also XP825V, virtual), presented by Andre Lamego and Jens Huesken, written here from SAP's abstract; the recording is not yet published.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:testing-cap-hana-artifacts-with-jest":{"href":"/content/testing-cap-hana-artifacts-with-jest","name":"Testing your CAP HANA Artifacts with jest – including multitenancy, hdbprocedure and hdbview","kind":"blog","short":"Testing hdbprocedure and hdbview artifacts with jest in HDI","line":"cds.test covers the service; this covers what is underneath it, where the artifact is an hdbprocedure or an hdbview that CDS never sees. That means a real HDI container, so most of the post is about where to get one and how to give CAP access to it — the tests are the easy part once that is true.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Tristan, published 2022-08-30"},"content:testing-sap-build-process-automation-task-ui-in-bas":{"href":"/content/testing-sap-build-process-automation-task-ui-in-bas","name":"Testing SAP Build Process Automation task UI in SAP Business Application Studio","kind":"blog","short":"Running a workflow task UI in Business Application Studio","line":"A task UI built from the Workflow Task UI template cannot be run in Business Application Studio: it expects the task model and the inbox API as startup parameters, and without them it fails before the view renders. The post shows the error, explains why it happens, and supplies a wrapper that provides the missing context locally, so the alternative to deploying on every change is not deploying on every change.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-10-15"},"content:the-capstone-project-a-journey-from-component-to-cloud":{"href":"/content/the-capstone-project-a-journey-from-component-to-cloud","name":"The CAPstone Project: A Journey from Component to Cloud","kind":"blog","short":"React and Vite front end on a CAP backend","line":"A React and Vite front end on a CAP backend, written for two readers at once — the React developer curious about SAP, and the CAP developer wondering about modern front ends. Predates CAP's own React and Vue support.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"LOKESH_GHOSH, published 2025-07-05"},"content:the-complete-guide-to-calling-actions-in-ui5-with-custom-code":{"href":"/content/the-complete-guide-to-calling-actions-in-ui5-with-custom-code","name":"The Complete Guide to Calling Actions in UI5 with Custom Code","kind":"blog","short":"Hand-coding OData action calls in UI5","line":"Written because the documentation is thin and the samples sparse, and openly as a note to the author's future self — hand-coding an action call has become a rare task for anyone mostly working in Fiori elements, which is exactly why it is hard to look up when it comes round. Comes with a CAP sample project, so the service half is there too.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-07-21"},"content:the-easiest-way-to-expose-a-cap-nodejs-project-as-an-mcp-server":{"href":"/content/the-easiest-way-to-expose-a-cap-nodejs-project-as-an-mcp-server","name":"The Easiest Way to Expose a CAP Node.js Project as an MCP Server","kind":"blog","short":"From cds init to a CAP Node.js MCP server checked in MCP Inspector","line":"From cds init to a running MCP server in a handful of steps, ending at the MCP Inspector so the result is something you can see rather than something you have to trust. The claim it makes for the plugin is the absence of work: no REST wiring by hand, the CAP application exposed as a server because the package is installed. A walkthrough rather than an argument — the reasoning about what should be exposed lives elsewhere.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Jacky Liu, published 2026-07-03"},"content:the-end2end-journey-advocates-service-odata-v2-v4-and-rest":{"href":"/content/the-end2end-journey-advocates-service-odata-v2-v4-and-rest","name":"The End2End Journey: Advocates Service – CAP Service, OData V2/4 & REST in One single Project","kind":"blog","short":"One CAP service exposing OData V2, OData V4 and REST together","line":"One CAP service exposing OData V2, OData V4 and REST at the same time, which is unusual enough to be worth the read on its own. Part of an end-to-end series, deployed on Cloud Foundry against HANA Cloud, so the protocol question sits inside a whole application rather than a snippet.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"KRiedelsheimer, published 2021-05-06"},"content:the-fastest-way-to-a-deployable-cap-app-on-cloud-foundry":{"href":"/content/the-fastest-way-to-a-deployable-cap-app-on-cloud-foundry","name":"The fastest way to a deployable CAP app on SAP BTP Cloud Foundry","kind":"blog","short":"Getting a local CAP app deployable on SAP BTP Cloud Foundry","line":"The gap between an application that runs locally and one that runs deployed — binding, bundling, the database connection, authorization — treated as the problem rather than as setup. Since updated for cds up, which is the shortest answer the core now offers, and the post carries that update inline rather than leaving the original standing.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-02-13"},"content:the-fastest-way-to-run-full-stack-applications-in-bas":{"href":"/content/the-fastest-way-to-run-full-stack-applications-in-bas","name":"The fastest and easiest way to run full-stack applications in SAP Business Application Studio","kind":"blog","short":"Running full-stack apps on live data in Business Application Studio","line":"The gap between a mocked local run and a real one, and the tooling that closes it — live data, remote services, defaults overridden. The same author's Run Configurations post is the reference for the tool; this is the case it was built for.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"liat_b, published 2023-08-02"},"content:the-fourth-way-to-go-offline-in-ui5-and-why-the-service-worker-stays-dumb":{"href":"/content/the-fourth-way-to-go-offline-in-ui5-and-why-the-service-worker-stays-dumb","name":"The Fourth Way to Go Offline in UI5 (And Why the Service Worker Stays Dumb)","kind":"blog","short":"Offline architecture for a UI5 warehouse scanning app","line":"Reporting on the UI5Con session run by Viktor Sperling and Lars Kissel, the post proposes a fourth offline architecture for a warehouse scanning app: a service worker kept deliberately ignorant of OData, and a JSONModel/IndexedDB layer that does an explicit download, work, submit cycle, queuing local mutations before posting one $batch with a single changeSet at the end of a session. It also works through the alternative v4.ODataModel change-buffer pattern (updateGroupId, submitBatch) and explains why Fiori elements' annotation-driven, live OData V4 interactions resist offline replay. The session-token and XSRF-expiry problem for long offline periods is named as an open gap rather than solved.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Noel_Hendrikx, published 2026-07-15"},"content:the-future-of-abap-is-here-vs-code-adt-zero-config-mcp-and-ai-co-pilots":{"href":"/content/the-future-of-abap-is-here-vs-code-adt-zero-config-mcp-and-ai-co-pilots","name":"The Future of ABAP is Here: VS Code ADT, Zero-Config MCP, and AI Co-pilots","kind":"blog","short":"Walkthrough of ABAP Development Tools for VS Code and its MCP server","line":"A walkthrough of ABAP Development Tools for VS Code's general-availability release: connecting to an on-premise or BTP ABAP system, editing classes, CDS and RAP objects, and turning on the extension's built-in ADT MCP Server. Enabled, it lets a co-pilot such as GitHub Copilot or SAP Joule for Developers, ABAP AI capabilities read code, trace dependencies, and run ABAP Unit and ATC checks against the real system rather than guessing from training data.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"lpodile, published 2026-06-01"},"content:the-future-of-continuous-delivery-for-cloud-sdk-and-cap":{"href":"/content/the-future-of-continuous-delivery-for-cloud-sdk-and-cap","name":"The Future of Continuous Delivery for SAP Cloud SDK and SAP Cloud Application Programming Model","kind":"blog","short":"2020 note on the Continuous Delivery Pipeline for Cloud SDK and CAP","line":"A direction note on the Continuous Delivery Pipeline that Cloud SDK and CAP projects were expected to start from, written by someone on the inside as its future was being decided. Dated 2020, so read it for what was being weighed rather than for what to run — and as one of the few places the reasoning behind a tooling direction was written down at all.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2020-11-23"},"content:the-new-way-to-consume-service-bindings-on-kyma-runtime":{"href":"/content/the-new-way-to-consume-service-bindings-on-kyma-runtime","name":"The new way to consume Service Bindings on Kyma Runtime","kind":"blog","short":"Consuming BTP service bindings in workloads on Kyma","line":"Service bindings on Kyma, which had until then been a Cloud Foundry idea — how a BTP service reaches a workload in Kubernetes, and what changes for an application that expects VCAP_SERVICES.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Uwe_Klinger, published 2022-07-12"},"content:the-sap-fiori-elements-feature-showcase-with-cap-cds-annotations":{"href":"/content/the-sap-fiori-elements-feature-showcase-with-cap-cds-annotations","name":"The SAP Fiori elements feature showcase with CAP CDS annotations","kind":"blog","short":"Fiori elements feature showcase with its CAP CDS annotations","line":"The feature showcase, which is the closest thing to a reference for what the annotations can do, presented here with its CAP CDS side. Short, because the value is in what it points at.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"stefaniehager, published 2021-12-07"},"content:tips-and-tricks-for-annotations-in-cap-projects-using-lsp":{"href":"/content/tips-and-tricks-for-annotations-in-cap-projects-using-lsp","name":"Tips and Tricks for Working with Annotations in CAP Projects using Language Server Protocol (LSP) capabilities","kind":"blog","short":"Four language server settings for annotations in CAP projects","line":"Four settings, from somebody who works on the annotation language server. The premise is the interesting part: CAP's annotation syntax is looser than ABAP CDS or EDMX — a record can be written with or without an explicit type — so the completion has to guess how verbose you want it, and this is where you tell it. Then filtering the completion list, reading the icons, ordering diagnostics by severity, and turning i18n problems on only when you want them.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"maryana_naboka, published 2021-10-25"},"content:tips-for-running-cap-nodejs-in-sap-btp":{"href":"/content/tips-for-running-cap-nodejs-in-sap-btp","name":"Tips for running CAP nodejs in SAP BTP","kind":"blog","short":"Configuration tips for running CAP Node.js cloud-natively on SAP BTP","line":"Deliberately not a summary of capire: the author says up front that nothing here repeats the documented best practices, and the subject is configuration for running cloud-natively rather than correctly. Examples target Cloud Foundry, with the claim that they hold for Kyma too.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-06-21"},"content:tips-vs-code-extensions":{"href":"/content/tips-vs-code-extensions","name":"Tips: VS Code Extensions","kind":"blog","short":"List of VS Code extensions for this stack, from 2020","line":"A short list of the VS Code extensions worth having for this stack, from 2020. Dated by definition and still the kind of page people go looking for.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"jhodel18, published 2020-07-13"},"content:tree-table-support-in-cap-is-now-generally-available":{"href":"/content/tree-table-support-in-cap-is-now-generally-available","name":"Tree-Table Support in CAP is Now Generally Available","kind":"blog","short":"Announcement of tree table support in CAP becoming generally available","line":"The announcement that closes a gap other posts here worked around for years — hierarchy maintenance for Java in February, recursive support in March, generally available since July. Read it beside the 2022 post that had to build hierarchies by hand.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-09-01"},"content:trigger-an-sbpa-workflow-from-cap-with-cap-js-process":{"href":"/content/trigger-an-sbpa-workflow-from-cap-with-cap-js-process","name":"Trigger an SAP Build Process Automation Workflow from CAP Using the @cap-js/process Plugin","kind":"blog","short":"Starting a Build Process Automation workflow with @cap-js/process","line":"A step-by-step setup for starting a Build Process Automation workflow from CAP through the plugin rather than through direct REST calls, which is how it had to be done before. Covers both ends: deploying the process in the SBPA designer and finding the workflow instance id it produces, then wiring the CAP side to it. Written against the first beta, released 26 April 2026, so the shape is settled but the surface may not be.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Jacky Liu, published 2026-07-02"},"content:triggering-background-jobs-from-rap-actions-a-practical-guide":{"href":"/content/triggering-background-jobs-from-rap-actions-a-practical-guide","name":"Triggering Background Jobs from RAP Actions – A Practical Guide","kind":"blog","short":"Scheduling classic background jobs from a RAP action's save phase","line":"Walks through a RAP business object whose Saver Class calls a function module IN BACKGROUND TASK from the save phase, and that function module in turn uses JOB_OPEN, SUBMIT ... VIA JOB and JOB_CLOSE to schedule a classic background job that finishes the long-running work, so the triggering UI transaction stays lightweight. The mechanism shown — an asynchronous function-module call plus a submitted executable report — is Standard ABAP background processing rather than ABAP Cloud's released scheduling APIs.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Arshiya2, published 2026-04-15"},"content:triggering-sap-build-process-automation-processes-from-cap-apps":{"href":"/content/triggering-sap-build-process-automation-processes-from-cap-apps","name":"Triggering SAP Build Process Automation Processes from SAP Cloud Application Programming (CAP) Apps","kind":"blog","short":"Two routes from a CAP app into a Build Process Automation process","line":"The two routes out of a CAP application into a process, side by side: a destination with OAuth2ClientCredentials, the same destination with principal propagation, and Event Mesh with a CloudEvents payload. Written before @cap-js/process existed, so it is the record of what the plugin now does for you — useful when the plugin does not fit, and useful for reading what it is actually doing underneath.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ATheobaldt, published 2024-12-09"},"content:troubleshooting-deploying-a-cap-project-to-hana-cloud":{"href":"/content/troubleshooting-deploying-a-cap-project-to-hana-cloud","name":"Simple steps to deploy your CAP project to HANA cloud","kind":"blog","short":"Troubleshooting steps for deploying a CAP project to HANA Cloud","line":"Written from the far side of a failed deploy — the author says these are the troubleshooting steps that ended up working, not a designed procedure. Short, and honest about being a record rather than a recommendation.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"OmPrakashJha, published 2021-02-11"},"content:turn-sap-apis-into-mcp-tools-for-ai-agents-using-sap-integration-suite-free-tria":{"href":"/content/turn-sap-apis-into-mcp-tools-for-ai-agents-using-sap-integration-suite-free-tria","name":"Turn SAP APIs into MCP Tools for AI Agents using SAP Integration Suite Free Trial","kind":"blog","short":"Building an MCP server from an API artifact on Integration Suite trial","line":"Walks through building an MCP server on SAP Integration Suite's free trial from an existing API artifact — the Business Partner API against a public S/4HANA Cloud sandbox — rather than from an HTTP endpoint with an OpenAPI specification or from RFC-enabled function modules, the creation wizard's other two source types, left unexplained here. Covers the API artifact's Content Modifier policy that injects the Business Accelerator Hub API key before the backend call, and the \"Trust Upstream MCP Authorization\" setting that lets the MCP server delegate authorization checks to that source API instead of duplicating them. Ends by fetching an OAuth token from a Process Integration Runtime service key and pointing an MCP client at the deployed server over streamable HTTP.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-07-13"},"content:typescript-sheriff-how-can-i-use-typescript-in-the-sap-ecosystem":{"href":"/content/typescript-sheriff-how-can-i-use-typescript-in-the-sap-ecosystem","name":"TypeScript Sheriff: How can I use TypeScript in the SAP ecosystem? (Part 2 of 3)","kind":"blog","short":"Where TypeScript is supported across a BTP side-by-side extension","line":"The middle part of three, and the one about SAP: where TypeScript is supported across a side-by-side extension on BTP, as of July 2023. It says the SAP Cloud SDK already generates OData clients as .ts files and UI5 ships types for its controls and modules, the ground of TypeScript support in UI5, while CAP offers standard types and the new @cap-js/cds-typer generates types for a service, which is typing, with the caveat that running cds-ts commands could overwrite what cds-typer generated.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"MikeDoyle, published 2023-07-05"},"content:ui-composition-with-application-frontend-service":{"href":"/content/ui-composition-with-application-frontend-service","name":"UI Composition with Application Frontend Service","kind":"blog","short":"Shared UI code and what Application Frontend changes about it","line":"Why shared UI code is hard, and what Application Frontend changes about it. The piece first lays out the three usual answers and what each costs — copying files at development time and repatching every consumer, publishing an npm package and rebuilding every consumer, or hosting the code separately and paying for it in CORS and session handling, or in an extra network hop through a server-side proxy. It then shows a fourth that only this service can do: runtime server-side composition without the hop, configured through routes in the consuming application's xs-app.json, across three cases — a reusable application embedded in a consumer, and two further composition shapes. Read alongside the generator, which scaffolds the mta.yaml, xs-app.json and zipper configuration this model needs.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Vadim Tomnikov, published 2026-05-18"},"content:ui-for-the-btp-application-vulnerability-report":{"href":"/content/ui-for-the-btp-application-vulnerability-report","name":"UI for the BTP Application Vulnerability Report","kind":"blog","short":"SAPUI5 and CAP front end for the Application Vulnerability Report API","line":"An open-source SAPUI5 front end for SAP's Application Vulnerability Report API, backed by a CAP Node.js service that projects the external findings as an OData V4 entity and forwards each query with api.run(req.query). The CAP service reaches that API through a Destination service instance configured with OAuth2ClientCredentials authentication from a service key, so the address and credentials stay out of the application code.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-02-10"},"content:ui5-ai-features-library-is-now-an-npm-package":{"href":"/content/ui5-ai-features-library-is-now-an-npm-package","name":"UI5 AI Features library is now an npm Package","kind":"blog","short":"Release note on the UI5 AI Features library becoming an npm package","line":"The release note for a demo turning into a dependency, and it is explicit about why that matters: the earlier version worked, but using it meant cloning the repo and copying both halves, which stops working the moment one of them changes. The post walks through what shipping the CAP plugin and the be.wl.ai control library in one npm version buys — a client and server contract that cannot drift — then lists the eleven controls by group, shows the two-line configuration that activates each half, and notes that this version is actually deployed on BTP behind both a standalone approuter and Work Zone. It closes on the demo repository, written with no library source in it as the test that the package stands alone.","chip":{"label":"Compatibility","tier":"poor","evidence":"cds 8, line ended"},"ai":true,"meta":"published 2026-08-31"},"content:ui5-has-entered-the-chat-building-interactive-mcp-apps-for-sap":{"href":"/content/ui5-has-entered-the-chat-building-interactive-mcp-apps-for-sap","name":"UI5 Has Entered the Chat: Building Interactive MCP Apps for SAP","kind":"blog","short":"Walkthrough of five UI5 MCP Apps samples from UI5con 2026","line":"MCP Apps let an MCP tool point at a ui:// resource that a compatible host renders in a sandboxed iframe, and the post walks through the five samples of UI5con_2026_MCPApps, built with Mike Zaschka for UI5con, from a plain HTML time tool through UI5 Web Components and UI Integration Cards to UI5 lint findings from @ui5/mcp-server and an ARC-1 transport review. In the samples the model selects the tool and does not generate the interface, the prebuilt kind of generative UI, and the subject is the server side of MCP servers: register the resource, link it from the tool's _meta.ui.resourceUri, return text content as a fallback beside structuredContent, call callServerTool() only for tools of the server that owns the app, and send a message to the host when another server such as ARC-1 has to act. It stops at the host, whose support differs by client and whose iframe sandbox is not a complete security model, and Joule support for MCP Apps could not be verified at the time of writing.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-07-13"},"content:ui5-mcp-server-got-extended-for-ui-integration-cards-generation":{"href":"/content/ui5-mcp-server-got-extended-for-ui-integration-cards-generation","name":"UI5 MCP Server Got Extended for UI Integration Cards Generation","kind":"blog","line":"Version 0.2.1 of the UI5 MCP Server adds three tools for UI Integration Cards: get_integration_cards_guidelines feeds an agent current best practices and API versions, create_integration_card scaffolds a new card project, and run_manifest_validation checks the generated manifest against the schema. The post frames these as closing the same gaps as the server's existing tools — an LLM's outdated or wrong card API knowledge — this time for scaffolding and validating a card rather than a full app.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"daniel_vladinov, published 2026-01-22"},"content:ui5-plugins-for-coding-agents-now-supporting-github-copilot":{"href":"/content/ui5-plugins-for-coding-agents-now-supporting-github-copilot","name":"UI5 Plugins for Coding Agents: Now Supporting GitHub Copilot","kind":"blog","line":"UI5/plugins-coding-agents renames itself from \"UI5 Plugins for Claude\", since the plugin concept — skills, MCP server, guidelines — was always agent-agnostic, and with v0.1.3 adds GitHub Copilot support alongside Claude Code through Awesome GitHub Copilot. Three skills join the ui5 plugin: ui5-best-practices-integration-cards for UI Integration Card manifest and binding rules, ui5-best-practices-opa5, which uses a TestRecorder to inspect the running app's control tree and generate waitFor snippets, and ui5-best-practices-tables, a selection guide across UI5's table controls. Installing the skills alone, for an agent that reads neither marketplace, still leaves @ui5/mcp-server to be set up by hand.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-06-25"},"content:ui5ers-buzz-56-full-stack-ui5-sample-app-with-cap-odata-v4-and-draft":{"href":"/content/ui5ers-buzz-56-full-stack-ui5-sample-app-with-cap-odata-v4-and-draft","name":"UI5ers Buzz #56: New full-stack UI5 sample app featuring CAP + OData V4 + draft mode","kind":"blog","short":"Full-stack SAPUI5 sample app on CAP with OData V4 and draft","line":"A sample app published as code rather than described — SAPUI5 over a CAP service with OData V4 and draft mode — and the note that it was built on what the team learned from an application written in March 2020 to help the German Foreign Office repatriate citizens. That provenance is unusual and worth keeping.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"AndreasKunz, published 2020-11-06"},"content:understanding-and-developing-fiori-plugins-with-extension-api-typescript":{"href":"/content/understanding-and-developing-fiori-plugins-with-extension-api-typescript","name":"Understanding and Developing Fiori Plugins with Extension API & TypeScript","kind":"blog","short":"Building Fiori launchpad plugins with the Extension API in TypeScript","line":"Describes a launchpad plugin as a UI5 component without views that the shell loads for every app, SAPUI5 only, and compares extending the shell through the renderer with the Extension service from 1.120 and FrameBoundExtension from 1.124, down to the placement options each allows. It builds fiori-fullscreen-plugin as the sample, and ends with activation: globally through /UI2/FLP_CONF_DEF and /UI2/FLP_CUS_CONF or per role through a Shell-plugin target mapping on an ABAP launchpad, and as an HTML5 app assigned to a role in SAP Build Work Zone.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-06-15"},"content:understanding-csn-and-its-role-in-embedded-analytics":{"href":"/content/understanding-csn-and-its-role-in-embedded-analytics","name":"SAP Incentive Management - Understanding of CSN file & CLI Command to generate","kind":"blog","short":"CSN as the format Incentive Management hands to Analytics Cloud","line":"CSN met from the far end: not as CAP's compiled model but as the interchange format a product hands to Analytics Cloud so a story knows the shape of the data. Explains what CSN is, why the format matters here, and the command that produces one.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Yogananda, published 2024-11-19"},"content:understanding-entity-relationships-in-cds":{"href":"/content/understanding-entity-relationships-in-cds","name":"Understanding entity relationships in CDS","kind":"blog","line":"Models a CAP task-management domain in CDS — Users, Roles, Tasks and Categories joined by to-one associations, a composition of tasks owned by a user, and a self-referencing association from a user to its parent — using the managed and cuid aspects from @sap/cds/common. It then visualises that model in Business Application Studio's CDS Graphical Modeler and adds a CAP Java before-handler that sets a generated password on user creation.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Avinash_Vaidya, published 2022-11-22"},"content:understanding-fuzzy-search-in-sap-fiori-applications":{"href":"/content/understanding-fuzzy-search-in-sap-fiori-applications","name":"Understanding Fuzzy Search in SAP Fiori Applications","kind":"blog","short":"Fuzzy search in Fiori apps and tuning it from a CAP CDS project","line":"Explains SAP HANA Enterprise Search's fuzzy, relevance-ranked matching behind Fiori's global search bar, its exact-match Search Query Syntax operators, and how a CAP CDS project on @sap/cds tunes the gap between them with @cds.search and @Search.fuzzinessThreshold, shown on a Contracts entity's contractNumber field. Raising the threshold to 0.95 narrows that field to near-exact matches for structured identifiers such as contract numbers, while an unset field keeps HANA's default (~80%) fuzziness for broader free-text discovery.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Ruchi5, published 2026-07-27"},"content:understanding-projections-in-capm":{"href":"/content/understanding-projections-in-capm","name":"Understanding Projections in CAPM: Select Only What You Need!","kind":"blog","short":"Beginner's explanation of projections in CAP","line":"One concept, explained by someone who had just learned it and says so — what a projection is, why it matters, and an analogy. The register is unusual here and suits the subject: projections are the first thing that makes CDS feel different from a table.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Avisek_, published 2025-06-10"},"content:understanding-security-approaches-in-cap-using-xsuaa-nodejs-and-mta":{"href":"/content/understanding-security-approaches-in-cap-using-xsuaa-nodejs-and-mta","name":"Understanding security approaches in SAP CAP using XSUAA in node.js flavor and MTA.","kind":"blog","short":"XSUAA security in CAP Node.js from the MTA descriptor outward","line":"The long version, from the MTA project outward: what the deployment descriptor has to contain, how the authentication flow actually runs, and then the npm modules doing the work — @sap/xssec and @sap/xsenv named and explained rather than left as dependencies. Old, and the module names have moved on, but the flow it draws has not.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"balbinosoares, published 2020-03-16"},"content:unleashing-abap-potential-an-introduction-to-extension-libraries-xco":{"href":"/content/unleashing-abap-potential-an-introduction-to-extension-libraries-xco","name":"Unleashing ABAP Potential: An introduction to Extension Libraries (XCO)","kind":"blog","short":"Introduction to ABAP's Extension Libraries (XCO)","line":"Introduces ABAP's Extension Libraries (XCO), a library framework that puts reusable functionality behind one interface. The post places it as part of the ABAP RESTful Application Programming Model but versatile enough for other ABAP contexts, and says it works in both on-premise ABAP and the ABAP environment on SAP Business Technology Platform. It walks through a worked Logging example: xco_log=>factory->create_new_log opens a log keyed by object, subobject and external ID, logger->add_message appends a typed message, and logger->add_last_symsg attaches a problem class and level of detail for later traceability.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"tamitdassharma, published 2024-11-27"},"content:unlocking-mcp-servers-in-bas-right-now":{"href":"/content/unlocking-mcp-servers-in-bas-right-now","name":"Don't Wait for SAP: Unlocking MCP Servers in BAS Right Now","kind":"blog","short":"Workaround for running MCP servers in Business Application Studio","line":"A workaround post with a grievance behind it: MCP servers were promoted heavily at SAP TechEd, most IDEs support them, and Business Application Studio limits you to Joule. This is how to run them there anyway. Worth reading as evidence of where the tooling gap sits rather than only for the recipe, which by nature has a shelf life.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-11-27"},"content:unlocking-the-power-of-llms-in-cap-llms-txt":{"href":"/content/unlocking-the-power-of-llms-in-cap-llms-txt","name":"⚡Unlocking the Power of LLMs in CAP: Understanding llms.txt and llms-full.txt","kind":"blog","short":"llms.txt and llms-full.txt for the CAP documentation","line":"llms.txt and llms-full.txt for CAP — a plain-text map of the documentation, written for an agent that arrived by fetching a URL rather than one somebody configured. The convention the atlas uses for itself, applied to capire.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Yogananda, published 2025-05-18"},"content:upload-attachments-in-a-freestyle-ui5-and-cap-app":{"href":"/content/upload-attachments-in-a-freestyle-ui5-and-cap-app","name":"Upload attachments in a Freestyle UI5 and CAP app","kind":"blog","short":"Attachment upload in a freestyle UI5 app on CAP","line":"Attachments where the UI is freestyle rather than Fiori elements, so none of the generated upload behaviour applies and both ends have to be written.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-12-19"},"content:upload-data-from-excel-in-cap-nodejs":{"href":"/content/upload-data-from-excel-in-cap-nodejs","name":"Upload data from excel in CAP (Node.js)","kind":"blog","short":"Mass upload from an Excel file into CAP Node.js","line":"Mass upload from a spreadsheet, both halves shown: an entity marked @cds.persistence.skip to receive the file, an INSERT built from the parsed rows, and a list report extended with the upload button that starts it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"KM11, published 2022-11-21"},"content:uploading-attachments-to-cap-js-attachments-from-an-external-app":{"href":"/content/uploading-attachments-to-cap-js-attachments-from-an-external-app","name":"Uploading attachment with cap-js/attachment plugins but via External App/Postman","kind":"blog","short":"Calling the cap-js attachments plugin from Postman or a React app","line":"The plugin is written for a Fiori elements front end; this is the case where the caller is neither — Postman and a React app. Short, and it exists because the request shape is not obvious from outside the generated UI: what to POST, what to PUT, and in which order.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-07-24"},"content:usage-of-expand-entity-in-odata-service-consumption-model":{"href":"/content/usage-of-expand-entity-in-odata-service-consumption-model","name":"Usage of Expand Entity in OData Service Consumption Model","kind":"blog","short":"Using OData $expand through a service consumption model in ABAP","line":"Explains how to use OData's $Expand option when SAP BTP, ABAP Environment consumes a remote service through a generated client proxy, the way HTTP clients describes it, using stubs ABAP Development Tools for Eclipse generates from the service's $metadata. The expanded association only comes back from get_business_data when the caller supplies its own ABAP type that redeclares the association as a nested table, in place of the generated CDS entity type. The same workaround still applies from release 2311 on, where the consumption model generates flat ABAP types rather than abstract CDS entities.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"alrikx, published 2024-02-08"},"content:use-aspects-associations-and-convert-odata-v4-to-v2-using-proxy":{"href":"/content/use-aspects-associations-and-convert-odata-v4-to-v2-using-proxy","name":"Use Aspects, Association and Convert OData V4 to V2 using Proxy","kind":"blog","short":"Aspects, associations and an OData V4-to-V2 proxy in CAP","line":"Two halves that turn out to belong together: aspects and associations in the model, and then the v4-to-v2 proxy in front of it. The model decides what the proxy has to carry, which is why the author put them in one post.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"rahul_rajagopal, published 2023-08-28"},"content:use-cap-to-do-native-development-on-hana-cloud":{"href":"/content/use-cap-to-do-native-development-on-hana-cloud","name":"SAP BTP Showcase - Use SAP Cloud Application Programming to do Native Development on HANA Cloud","kind":"blog","short":"Using CAP to reach HANA-native artifacts on HANA Cloud","line":"The fifth of a seven-post showcase, and the one where CAP is used to reach HANA-native artifacts rather than to avoid them. Long, and it sits inside a series whose other parts are about Data Warehouse Cloud and CI/CD.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"former_member271284, published 2021-01-31"},"content:use-datastore-to-avoid-too-many-duplicate-mpl-attachments-in-exception-retries":{"href":"/content/use-datastore-to-avoid-too-many-duplicate-mpl-attachments-in-exception-retries","name":"Use Datastore to avoid too many duplicate MPL attachments in exception retries","kind":"blog","short":"Cloud Integration DataStore pattern against duplicate MPL attachments","line":"Walks through an Integration flows design on Cloud Integration: an exception subprocess that writes the source and in-flight payloads to a DataStore entry, keyed by the message's correlation header and overwritten on each retry, instead of a Groovy script attaching both payloads to the message processing log on every run. With unrestricted retries left in place, one interface the author retried 14 times produced two DataStore entries instead of up to 28 message processing log attachments; the post also notes that deleting the DataStore entry for a retrying message marks it Cancelled in monitoring without stopping the retries.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"pdimri, published 2025-11-26"},"content:use-free-tier-to-create-a-service-instance-for-sap-document-ai":{"href":"/content/use-free-tier-to-create-a-service-instance-for-sap-document-ai","name":"Use Free Tier to Create a Service Instance for SAP Document AI","kind":"tutorial","short":"Creating a free tier SAP Document AI instance and service key","line":"Four steps in the SAP BTP cockpit that end with a service key for SAP Document AI: open the cockpit, check the subaccount's entitlements and add the service on the free tier plan if it is not listed, create the instance, then create the key. It names the plans to use in production instead, blocks_of_100, embedded_edition and premium_edition, and stops at the credentials, before any document is uploaded.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:use-free-tier-to-subscribe-to-sap-document-ai-basic-ui":{"href":"/content/use-free-tier-to-subscribe-to-sap-document-ai-basic-ui","name":"Use Free Tier to Subscribe to SAP Document AI Basic UI","kind":"tutorial","short":"Subscribing to the SAP Document AI basic UI on the free tier","line":"Eight steps from an entitled subaccount to the SAP Document AI basic UI open in a browser, and most of them are identity work rather than document work: getting a tenant for Cloud Identity Services, which the basic UI requires, activating the account and establishing trust with the subaccount, then subscribing, creating a user and assigning the Document_Information_Extraction_UI_Templates_Admin role collection. Using the UI to read a document is the subject of Use Machine Learning to Extract Information from Documents with the SAP Document AI Basic UI, which this tutorial names as what to read next.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true},"content:use-rest-services-in-graph":{"href":"/content/use-rest-services-in-graph","name":"Use REST services in Graph","kind":"blog","short":"Turning a REST service into an SAP Graph business data graph","line":"SAP Graph turns a REST service into a business data graph by pairing a data destination with a metadata destination that supplies its OpenAPI document, since plain REST has no $metadata endpoint of the kind OData exposes. It walks through creating both destinations on SAP BTP, including the OAuth2ClientCredentials authentication needed when the OpenAPI file is hosted through an API artifact, and shows how Graph flattens each REST operation's path and method into an unbound OData action or function, such as turning a DELETE on /users/pets into a POST to users_pets__delete.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"florian_moritz, published 2026-01-20"},"content:use-sap-document-management-service-plugin-in-cap-nodejs":{"href":"/content/use-sap-document-management-service-plugin-in-cap-nodejs","name":"Use SAP Document Management Service Plugin In CAP NODEJS Step by Step Guidance","kind":"blog","short":"Setting up the Document Management Service plugin in CAP Node.js","line":"The official plugin is documented in capire; this is somebody who set it up anyway and wrote down where it went wrong. The author says as much — the point is to spare customers the troubles, so the value is in the order of the steps and the prerequisites, not in the API.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Jacky_Liu1, published 2025-03-06"},"content:use-the-destination-service-in-nodejs-locally":{"href":"/content/use-the-destination-service-in-nodejs-locally","name":"Use SCP CF Destination service in NodeJs locally","kind":"blog","short":"Reading a BTP destination from Node.js on a local machine","line":"Reading a destination from a laptop, where the environment variable the destination service normally provides does not exist. A small gap with a real cost, since the alternative is deploying to test every change to a remote call.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"WouterLemaire, published 2020-05-28"},"content:use-typescript-with-the-sap-cloud-application-programming-model":{"href":"/content/use-typescript-with-the-sap-cloud-application-programming-model","name":"Use TypeScript with the SAP Cloud Application Programming Model","kind":"blog","short":"Getting started with TypeScript in CAP","line":"Written from the position of someone who avoided JavaScript for years and then had to cover CAP, which gives it a useful angle: what TypeScript buys a person arriving from a typed language, and where to start rather than how to finish. Ends on a worked example rather than a survey.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"KevinR, published 2024-06-24"},"content:useful-cap-cds-and-fiori-commands-to-accelerate-development-and-deployment":{"href":"/content/useful-cap-cds-and-fiori-commands-to-accelerate-development-and-deployment","name":"Useful CAP CDS and Fiori Commands to Accelerate Development and Deployment","kind":"blog","short":"Walkthrough of the cds add and fiori add generators","line":"A command-by-command walkthrough of @sap/cds-dk's cds add and fiori add generators: cds add xsuaa writes an XSUAA security configuration from the CDS model's authorization annotations, and cds add hana together with cds deploy --to hana switches persistence from the default SQLite database to SAP HANA Cloud. cds add mta and fiori add deploy-config, from @sap/generator-fiori, build the Cloud Foundry deployment descriptor together, adding a destination-service block and an xs-app.json that routes the Fiori app's calls through a named destination.","chip":{"label":"Compatibility","tier":"poor","evidence":"cds 6, line ended"},"ai":true,"meta":"TiaXu, published 2022-10-19"},"content:using-apache-kafka-for-messaging-in-cap-part-1":{"href":"/content/using-apache-kafka-for-messaging-in-cap-part-1","name":"Using Apache Kafka for messaging in the SAP Cloud Application Programming Model (CAP) – Part 1/2","kind":"blog","short":"Introduction to cds-kafka and event-driven architecture in CAP","line":"The theory half of a pair introducing cds-kafka: what the plugin is for and what it can do, with event-driven architecture set up as the reason rather than assumed. Nothing is deployed here — the running application is part two — so this is the post to read if the question is whether Kafka belongs in the picture at all rather than how to wire it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-01-02"},"content:using-apache-kafka-for-messaging-in-cap-part-2":{"href":"/content/using-apache-kafka-for-messaging-in-cap-part-2","name":"Using Apache Kafka for messaging in the SAP Cloud Application Programming Model (CAP) – Part 2/2","kind":"blog","short":"Use cases for cds-kafka, run locally and on BTP","line":"The practical half: concrete use cases for cds-kafka, running locally and on BTP. It opens by placing the plugin among SAP's own event-driven offerings rather than beside them, which is the part that decides whether you reach for this or for Event Mesh — a comparison a plugin's own README rarely makes about itself.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-01-13"},"content:using-btp-document-extraction-service-into-actual-app-development":{"href":"/content/using-btp-document-extraction-service-into-actual-app-development","name":"Using BTP Document Extraction Service into actual App development","kind":"blog","line":"Walks through calling SAP Document AI's REST API directly: getting a client-credentials bearer token from the service key's UAA, then POSTing to /document/jobs with a file and an options body naming the document type and the header fields and line items to extract (paymentTerms, documentDate, taxId, description for an invoice), and polling the returned job id until the status resolves. Covers the trial-account booster and its own UI for uploading a document and testing extraction before moving to Postman and a small Python script that lists jobs over the same bearer token.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Ace_D, published 2024-07-31"},"content:using-claude-for-sap-abap-development-on-rfc-only-saprouter-systems-even-ecc-r-3":{"href":"/content/using-claude-for-sap-abap-development-on-rfc-only-saprouter-systems-even-ecc-r-3","name":"Using Claude for SAP ABAP development on RFC-only / SAProuter systems (even ECC R/3)","kind":"blog","short":"Claude on ABAP over RFC-only SAProuters with vibing-steampunk","line":"vibing-steampunk gives Claude read, search, edit and check access to ABAP source over ADT's REST API, but some SAProuters permit only SAP's native RFC and DIAG routes and block raw HTTP to the ICM, so that link can't reach them even though Eclipse ADT can. Eclipse gets through because it tunnels ADT over RFC through the standard SADT_REST_RFC_ENDPOINT function module instead of HTTP, a path the post traces by capturing a live Eclipse session. adt-rfc-bridge reproduces that tunnel as a local HTTP-to-RFC proxy built on PyRFC, put in front of vsp, and the author reports it working on both S/4HANA and classic ECC/R/3 systems where Eclipse ADT already connects.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"enrico_andreoli, published 2026-06-09"},"content:using-cloud-sdk-for-ai-in-a-commonjs-cap-project":{"href":"/content/using-cloud-sdk-for-ai-in-a-commonjs-cap-project","name":"How to use Cloud SDK for AI in an existing CAP NodeJS Project in CommonJS","kind":"blog","short":"Using ESM-only Cloud SDK for AI in a CommonJS CAP project with esbuild","line":"A dependency that is ESM-only inside a project that is CommonJS, and the author's judgement that converting the project was too risky. What follows is the esbuild workaround, which is the honest answer when the ecosystem has moved and your codebase has not.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Jacky_Liu1, published 2025-08-01"},"content:using-communication-targets-for-outbound-rfc-communication-in-abap":{"href":"/content/using-communication-targets-for-outbound-rfc-communication-in-abap","name":"Using Communication Targets for Outbound RFC Communication in ABAP","kind":"blog","short":"Outbound RFC calls through communication targets in ABAP","line":"Walks through calling a remote-enabled ABAP function module through a communication target instead of a direct RFC destination: on-premise, the APPLDEST transaction creates an application destination (client, CPIC type, host from SM51, authentication); in the cloud, saving a communication arrangement for an outbound-RFC communication scenario creates one automatically. ABAP code reaches the function with CALL FUNCTION (...) IN REMOTE SESSION, naming the application_destination parameter when a communication target has more than one assigned destination, and the piece walks a worked call to RFC_SYSTEM_INFO.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Nikolina_MH, published 2025-11-10"},"content:using-github-actions-to-deploy-a-cap-app-mta":{"href":"/content/using-github-actions-to-deploy-a-cap-app-mta","name":"Using Github Actions to Deploy a CAP App (MTA)","kind":"blog","line":"Walks through a GitHub Actions workflow that deploys a CAP project's MTA to SAP BTP, Cloud Foundry: secrets and variables for the BTP credentials, a push-triggered job that checks out the repository, installs Node.js, runs npx mbt build and then cf deploy against the target org and space, plus an optional test job and a note on reusable workflow templates. Written because capire's own CI/CD guide is Docker-based and the linked sample is marked broken, so this fills the gap with the plain cds add mta / mbt build / cf deploy sequence driven by a pipeline instead of a terminal. That sequence is exactly what cds up, beta since @sap/cds-dk 8.9.0 (March 2025), now runs as one command, so the pipeline mechanics still hold but the three manual build-and-deploy steps it scripts are no longer the only way there.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Christopher_Ketzler, published 2024-08-26"},"content:using-hana-clouds-vector-embedding-function-in-cap":{"href":"/content/using-hana-clouds-vector-embedding-function-in-cap","name":"Using HANA Cloud’s \"VECTOR_EMBEDDING\" Function in CAP","kind":"blog","short":"Generating embeddings in HANA Cloud with VECTOR_EMBEDDING from CAP","line":"Embeddings generated inside the database rather than fetched from AI Core or an external model — a Q4 2024 HANA Cloud function, used from CAP. The shift it describes is where the embedding step lives, which changes what has to be deployed and what has to be called.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-03-02"},"content:using-postgresql-database-in-cloud-application-programming-model":{"href":"/content/using-postgresql-database-in-cloud-application-programming-model","name":"Using Postgresql Database in Cloud Application Programming model","kind":"blog","short":"Step-by-step run through CAP's PostgreSQL guide","line":"A straight run through the official PostgreSQL guide with the steps spelled out, from initialising the server onward. Says as much itself — it follows the documentation rather than departing from it, which makes it the plainest of the PostgreSQL entries here.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-05-14"},"content:using-postman-for-api-testing-with-xsuaa":{"href":"/content/using-postman-for-api-testing-with-xsuaa","name":"Using Postman for API Testing with XSUAA","kind":"blog","short":"Getting an XSUAA JWT for Postman without the approuter","line":"A way to get a JWT without routing traffic through the approuter and picking the token out of it. The author walks the alternatives first — redirect through the router, intercept the token — and says what is wrong with each, before requesting the token from the service directly.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"mariusobert, published 2020-03-02"},"content:using-rfc-function-modules-and-bapis-in-sap-build-process-automation":{"href":"/content/using-rfc-function-modules-and-bapis-in-sap-build-process-automation","name":"Using RFC Function Modules and BAPIs in SAP Build Process Automation","kind":"blog","short":"Calling an S/4HANA BAPI from a Build Process Automation action","line":"Walks through calling an S/4HANA BAPI (BAPI_BILLINGDOC_CREATEMULTIPLE, to create a billing document) from an SAP Build Process Automation action: mapping the virtual host to the internal system in SAP Cloud Connector over the RFC protocol and exposing the needed function modules, then creating an RFC-type destination in the BTP cockpit with the virtual message server and SMLG logon group. Once those two are in place, SAP Build lists the exposed BAPIs and RFCs for use in an action.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"MrRaj, published 2026-07-09"},"content:using-sap-hana-tools-with-cap-projects-in-bas":{"href":"/content/using-sap-hana-tools-with-cap-projects-in-bas","name":"SAP Business Application Studio – Using SAP HANA Tools with SAP Cloud Application Programming Model projects","kind":"blog","short":"Native HDB artifacts inside a CAP project","line":"Native HDB artifacts inside a CAP project — the case where CDS is not enough and something has to be written as a database object. Most of the work is making the two build outputs agree: an HDB module path, a CDS build output directory, and a package.json for the module, before the artifact is added and deployed. Published under an account that has since been closed, so the byline reads Former Member.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Former Member, published 2021-01-14"},"content:using-sap-managed-iflows-for-time-series-data-integration-in-sap-ibp-part-1-read":{"href":"/content/using-sap-managed-iflows-for-time-series-data-integration-in-sap-ibp-part-1-read","name":"Using SAP managed iFlows for Time series data Integration in SAP IBP – Part 1 - Reading data","kind":"blog","short":"Custom iFlow reading time-series data out of SAP IBP","line":"Walks through a custom iFlow that reads time-series and master data out of SAP IBP by calling the RFC function modules IBP exposes under communication scenario SAP_COM_0931, reusing SAP's own \"SAP IBP – Reusable Integration Flows\" package discovered inside SAP Integration Suite and run from SAP Cloud Integration. The call itself goes through an SAP Destination service destination of type RFC — Proxy Type Internet, a communication-user's credentials and jco.client.* properties for host, port and serialization — rather than a connection wired by hand, which is the destination handling RFC connectivity asks for. It also covers the asynchronous read: a UUID transaction id and an offset-driven paging loop for pulling large result sets in packages.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Domnic, published 2025-07-18"},"content:using-sap-managed-iflows-for-time-series-data-integration-in-sap-ibp-part-2-writ":{"href":"/content/using-sap-managed-iflows-for-time-series-data-integration-in-sap-ibp-part-2-writ","name":"Using SAP managed iFlows for Time series data Integration in SAP IBP – Part 2 - Writing data","kind":"blog","short":"Custom iFlow writing time-series data into SAP IBP","line":"Walks through building a custom integration flow in Cloud Integration that writes time-series and master data into SAP IBP by calling the SAP-managed reusable iFlows behind communication scenario SAP_COM_0931, which consume RFC function modules through a communication user. It details the BTP destination needed to reach them (Type RFC, Proxy Type Internet, and the jco.client.* properties), and the main-flow and local-integration-process design — payload validation in a Groovy script, batch creation, then the XML attributes and payloads for posting master data and key-figure values and for triggering post-processing.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Domnic, published 2025-07-18"},"content:using-the-sap-approuter-at-dev-time":{"href":"/content/using-the-sap-approuter-at-dev-time","name":"SAP Tech Bytes: Using the SAP Approuter at dev time - a full-stack journey with UI5 and CAP","kind":"blog","short":"UI5 tooling and the CAP server on one port with cds-plugin-ui5","line":"Getting UI5 Tooling and the CAP server onto one port under one command, using cds-plugin-ui5 — which the post presents as the thing that removes the proxy and destination configuration a full-stack dev setup otherwise needs. Part one of a journey that goes on to put the approuter in front at development time.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2023-10-13"},"content:using-the-terraform-provider-for-btp-to-simplify-tenant-onboarding":{"href":"/content/using-the-terraform-provider-for-btp-to-simplify-tenant-onboarding","name":"Using the Terraform Provider for SAP BTP to simplify Subscriber Tenant Onboarding","kind":"blog","short":"Subscriber tenant onboarding with the Terraform provider for SAP BTP","line":"Subscriber onboarding expressed as infrastructure rather than as a runbook — the BTP Terraform provider doing the account-side work that a SaaS provider otherwise does by hand for every tenant. Part of the same author's multitenancy series.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"martinfrick, published 2023-08-21"},"content:using-the-ui5-mockserver-for-client-specific-data-and-testing":{"href":"/content/using-the-ui5-mockserver-for-client-specific-data-and-testing","name":"Using the UI5 Mockserver for Client-Specific Data and Testing","kind":"blog","line":"Walks through a same-day feature in @sap-ux/ui5-middleware-fe-mockserver, 'Support autoloading mockdata file for specific tenants', which loads a <Entity>-<client>.json file keyed to the sap-client URL parameter and falls back to the entity's plain JSON file when no client-specific one exists. Shows the setup replacing generated mock data with hand-written JSON, then drives the same sap-client parameter through separate package.json scripts so wdi5 end-to-end tests can run against distinct tenant datasets.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-11-18"},"content:visualizing-your-sap-bill-of-materials-using-cap-and-fiori-elements":{"href":"/content/visualizing-your-sap-bill-of-materials-using-cap-and-fiori-elements","name":"Visualizing Your SAP Bill of Materials Using CAP, Fiori elements, and the UI5 Network Graph","kind":"blog","short":"Bill of materials as a UI5 network graph in Fiori elements on CAP","line":"A parent-child structure rendered as a network graph inside a Fiori Elements application, with the CAP service modelling the bill of materials behind it. Useful as one of the few worked examples of putting a non-standard visualisation into an annotation-driven floorplan rather than building a freestyle app around it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-02-24"},"content:vs-code-tasks-to-start-a-cds-service-an-approuter-and-a-browser":{"href":"/content/vs-code-tasks-to-start-a-cds-service-an-approuter-and-a-browser","name":"Use Tasks in Visual Studio Code to start a cds service, an approuter and launch a browser in one go","kind":"blog","short":"VS Code task starting a cds service, an approuter and a browser","line":"cds watch serves the service and the app folder but not the approuter, so anything needing a JWT means a second terminal started by hand. This replaces that with a VS Code task definition — the tasks.json is in the post — so the whole local stack comes up on one command.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"pieterjanssens, published 2021-04-09"},"content:websocket-rfc-to-cloud-using-sap-business-connector":{"href":"/content/websocket-rfc-to-cloud-using-sap-business-connector","name":"WebSocket RFC to Cloud Using SAP Business Connector","kind":"blog","short":"RFC between on-premise and cloud ABAP via SAP Business Connector","line":"Walks through wiring RFC connectivity between an on-premise ABAP system and a cloud ABAP system (SAP S/4HANA Cloud or Steampunk) through SAP Business Connector, which tunnels classic RFC over a WebSocket/HTTPS connection past firewalls. Covers the RFC destination of type T on the source system, the Communication User, Communication Scenario and Communication Arrangement needed on the cloud side to allow-list the function modules being called, and the three configuration steps on the Business Connector itself, closing with a list of common connection errors and their fixes.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Ulrich_Schmidt1, published 2022-10-17"},"content:what-a-second-document-ai-workshop-taught-me-about-governance":{"href":"/content/what-a-second-document-ai-workshop-taught-me-about-governance","name":"What a Second Document AI Workshop Taught Me About Governance","kind":"blog","short":"Data retention and governance questions in SAP Document AI","line":"From questions raised at a second SAP Document AI workshop: the retention period for extracted data is a setting in the service's administration rather than a fixed property, with the source file deleted after processing and the decommissioning period for the extracted data configured to the customer's own policy. It also draws a boundary readers kept merging: Document AI extracts across languages but does not translate, so turning a document into a reviewer's own language is a separate step, pointing on BTP at SAP Translation Hub.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Nicolas_BacaStorni, published 2026-08-25"},"content:what-an-ai-infra-engineer-sees-when-opening-sap-s-ai-stack-1-3-the-model-gateway":{"href":"/content/what-an-ai-infra-engineer-sees-when-opening-sap-s-ai-stack-1-3-the-model-gateway","name":"What an AI infra engineer sees when opening SAP's AI stack (1/3): the model gateway","kind":"blog","line":"A first look at SAP AI Core's Generative AI Hub from someone who builds gateways outside SAP for a living: the orchestration service harmonizes provider calls onto one API (a model name string switches providers, and SAP Note 3437766 carries the current model list, token rates and deprecation dates), runs a fixed, non-reorderable module pipeline — templating, masking through SAP Data Privacy Integration, grounding, content filtering, then the model call — and retries down an ordered fallback list whose entries can each carry their own model and rules. It places @sap-ai-sdk/orchestration among the official JavaScript, Java and Python SDKs, and notes SAP's own LiteLLM provider as a way to put a different gateway in front of it.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"amishkush, published 2026-09-30"},"content:what-happens-to-your-data-when-you-enable-sap-s-ai-features":{"href":"/content/what-happens-to-your-data-when-you-enable-sap-s-ai-features","name":"What Happens to Your Data When You Enable SAP's AI Features?","kind":"blog","short":"Where prompts go when SAP AI features call third-party models","line":"Traces where a prompt goes when Joule, the Generative AI Hub or the orchestration service calls a third-party model through SAP AI Core: the prompt and the business context around it travel to a model such as GPT-4o, Claude or Gemini for inference, and masking through SAP Data Privacy Integration is an optional orchestration module rather than a default, so with no masking block in the @sap-ai-sdk/orchestration client config nothing is masked. On the masking options, which the author says he confirmed with SAP AI Core product management, anonymization discards the original value and pseudonymization keeps it reversible; DPI recognizes person names, email addresses and phone numbers, plus custom entities defined by regex, which leaves commercially sensitive non-PII such as a revenue forecast or a project codename to pass through unless someone writes a pattern for it, and whether that data is covered at all is one of three answers the post marks as still pending. The \"no training\" assurance for third-party providers is read as contractual rather than technical, and models hosted and managed by SAP, Mistral among them, are named as a path other than a US-hyperscaler-hosted one.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"jaripie, published 2026-04-23"},"content:what-s-new-in-mobile-development-kit-client-26-9":{"href":"/content/what-s-new-in-mobile-development-kit-client-26-9","name":"What’s new in Mobile development kit client 26.9","kind":"blog","short":"Release note for Mobile development kit client 26.9","line":"This Mobile development kit client 26.9 release note explains that @sap/mdk-mcp-server is now reachable from SAP Business Application Studio's AI chat, giving an assistant real knowledge of the MDK metadata schema rather than generic code generation. With it an assistant can scaffold an MDK project, generate pages, actions, rules, i18n, services and styles into it, iterate on it conversationally, and answer schema and client-API questions inline through mdk-docs.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-09-27"},"content:what-s-new-in-sap-cloud-application-programming-model-september-2026":{"href":"/content/what-s-new-in-sap-cloud-application-programming-model-september-2026","name":"What's new in SAP Cloud Application Programming Model – September 2026","kind":"blog","line":"The September 2026 release turns CAP services into A2A-callable agents through the new @cap-js/agents plugin, which generates MCP tools from a service's entities and actions, adds an @agent.hitl approval gate and can read an AGENTS.md/SKILL.md pair for custom behaviour. The @cap-js/mcp plugin for Node.js and com.sap.cds:cds-adapter-mcp for Java reach general availability, serving describe, query and call tools over existing CAP authentication and authorisation. It also names capire/skills, SAP's curated skill library that teaches coding agents current CAP practice.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-09-24"},"content:whats-new-in-cap-january-2026":{"href":"/content/whats-new-in-cap-january-2026","name":"What's new in SAP Cloud Application Programming Model – January 2026","kind":"blog","short":"CAP release roundup for December 2025 and January 2026","line":"December and January together: the new @assert feature, revised documentation, CDS editor work, and Kyma deployment additions.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2026-02-09"},"content:whats-new-in-cap-november-2025":{"href":"/content/whats-new-in-cap-november-2025","name":"What's new in SAP Cloud Application Programming Model – November 2025","kind":"blog","short":"CAP release roundup for November 2025","line":"The November edition, led by the Status Transition Flows feature presented at reCAP 2025.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-12-08"},"content:whats-new-in-cap-september-2025":{"href":"/content/whats-new-in-cap-september-2025","name":"What's new in SAP Cloud Application Programming Model – September 2025","kind":"blog","short":"CAP release roundup for September 2025","line":"The monthly release communication for CAP itself, and this edition carries the MCP servers and the Application Frontend Service integration. Kept because a dated list of what shipped when is the only record of that; three editions are indexed here rather than the whole run.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2025-10-14"},"content:where-ord-is-used-in-sap-datasphere-sap-business-data-cloud-sap-databricks":{"href":"/content/where-ord-is-used-in-sap-datasphere-sap-business-data-cloud-sap-databricks","name":"Where ORD Is Used in SAP Datasphere, SAP Business Data Cloud & SAP Databricks","kind":"blog","short":"Where Open Resource Discovery is used across Business Data Cloud","line":"Open Resource Discovery (ORD) is the metadata standard SAP's Business Accelerator Hub attaches to APIs, and the one SAP Business Data Cloud requires of any data product — including ones Databricks publishes — before SAP Datasphere can discover it. Data products moving from Databricks into Business Data Cloud carry both ORD and CSN metadata side by side.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Yogananda, published 2026-03-01"},"content:why-developers-should-care-about-credential-types-for-xsuaa":{"href":"/content/why-developers-should-care-about-credential-types-for-xsuaa","name":"Why developers should care about credential-types for xsuaa?","kind":"blog","short":"XSUAA credential types and rotating secrets","line":"Rotating secrets, argued from a habit rather than a feature: the author names the practice implicit in many beginner tutorials — lifting a secret out of a binding to use it elsewhere — and notes CAP has features that make it unnecessary in development. Then the three credential types side by side, configured on a CAP application's uaa resource in mta.yaml and through a deployment extension.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"former_member2839, published 2022-07-05"},"content:why-our-first-document-ai-exercise-was-a-r-sum-not-an-invoice":{"href":"/content/why-our-first-document-ai-exercise-was-a-r-sum-not-an-invoice","name":"Why Our First Document AI Exercise Was a Résumé, Not an Invoice","kind":"blog","short":"Why a SAP Document AI workshop starts extraction on a résumé","line":"Working through a SAP Document AI workshop, the author explains why its exercises teach extraction on a résumé before an invoice: a résumé has no stable layout to map fields against, so it forces the point that the tool extracts from a written description of a schema rather than from position-matched templates. Describing the schema is shown to carry real judgment — what a missing end date should become, what a vague field name like \"number\" costs the model, who in a company should decide these things — and the piece argues that preparing for a project is chiefly a business task of writing down knowledge that otherwise stays in people's heads.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Mariano_BacaStorni, published 2026-09-03"},"content:why-sap-cloud-identity-matters-for-sap-task-center-it-s-about-trust-and-global-u":{"href":"/content/why-sap-cloud-identity-matters-for-sap-task-center-it-s-about-trust-and-global-u","name":"Why SAP Cloud Identity Matters for SAP Task Center: It’s About Trust and Global User ID","kind":"blog","short":"Configuring Cloud Identity Services as trust layer for SAP Task Center","line":"A step-by-step configuration walkthrough for wiring SAP Cloud Identity Services as the trust and user-correlation layer behind SAP Task Center: establishing Identity Authentication as the sole trusted identity provider for the BTP subaccount, and generating the Global User ID — carried in the token's user_uuid claim rather than the SAML name identifier — that Task Center uses to match logged-in users to their tasks. It also covers syncing that ID between Microsoft Entra ID, the Identity Directory and SAP S/4HANA through Identity Provisioning jobs, and the principal-propagation trust the cloud connector needs to pass it through to an on-premise task provider.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ivelinakiryakov, published 2024-11-25"},"content:workflow-development-using-cap-and-sap-build-process-automation":{"href":"/content/workflow-development-using-cap-and-sap-build-process-automation","name":"Workflow development using SAP Cloud Application Programming Model and SAP Build Process Automation","kind":"blog","short":"Where logic belongs between CAP and Build Process Automation","line":"An argument about where logic belongs rather than a wiring guide. The author's case is that pulling mapping, preprocessing and JavaScript into the process model makes it unreadable to the process owner who has to maintain it, so the model should stay thin and CAP should hold the domain model, the authorisation annotations, the events and the API consumption. Each of those is then shown in turn against SBPA — including publishing CAP events into process visibility.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"Venugopal, published 2025-02-18"},"content:working-with-the-attachment-plugin-cloud-application-programming":{"href":"/content/working-with-the-attachment-plugin-cloud-application-programming","name":"Working with the Attachment plugin - Cloud Application Programming","kind":"blog","short":"Working through the CAP attachments plugin","line":"One instalment of the author's own series working through the CAP plugins one at a time, and it reads as that: what the plugin does, how it does it, and how to put it in a service. Written from the plugin list in capire rather than from a problem, which makes it the plainest introduction here.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"published 2024-05-18"},"content:xml-annotations-the-essentials-before-adapting-documentation-samples":{"href":"/content/xml-annotations-the-essentials-before-adapting-documentation-samples","name":"XML Annotations: The Essentials Before Adapting Documentation Samples to Your Project","kind":"blog","short":"What to know before adapting UI5 annotation samples","line":"What to understand before copying an annotation out of the UI5 Demo Kit, which is what everybody actually does. The samples assume context the sample does not carry, and adapting one without that context is where the afternoon goes.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"MioYasutake, published 2026-04-09"},"content:xsuaa-attribute-based-vs-authority-based-configuration":{"href":"/content/xsuaa-attribute-based-vs-authority-based-configuration","name":"SAP BTP XSUAA Security Configuration Comparison: Attribute-Based vs. Authority-Based Approaches","kind":"blog","short":"Attribute-based and authority-based xs-security.json compared","line":"Two shapes of the same xs-security.json set against each other, with the resulting JWT printed for both. The consequence for application code is what makes it worth reading: under the attribute-based configuration a CAP handler reads req.user.attr.department, and under the authority-based one it does not, because the attribute is not there. Carries a migration guide between the two.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"rajeshkputumbaka, published 2026-02-18"},"content:xsuaa-based-authentication-using-managed-approuter":{"href":"/content/xsuaa-based-authentication-using-managed-approuter","name":"XSUAA Based Authentication - Using Managed Approuter","kind":"blog","short":"End-to-end XSUAA authentication with the managed approuter","line":"One half of a pair published the same day, both starting from capire's list of authentication kinds and then going end to end on XSUAA. This is the managed approuter route, where the platform runs the router and the application supplies configuration rather than a module.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"rahul_rajagopal, published 2023-09-25"},"content:xsuaa-based-authentication-using-standalone-approuter":{"href":"/content/xsuaa-based-authentication-using-standalone-approuter","name":"XSUAA Based Authentication - Using Standalone Approuter","kind":"blog","short":"End-to-end XSUAA authentication with a standalone approuter","line":"The other half: the same end-to-end XSUAA setup with an approuter you deploy and own. Published alongside the managed version, and the two are worth reading together because the difference between them is the whole decision.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"rahul_rajagopal, published 2023-09-25"},"content:xsuaa-local-testing":{"href":"/content/xsuaa-local-testing","name":"XSUAA Local Testing","kind":"blog","short":"Adding XSUAA to a CAP project and testing authorisation locally","line":"Adding XSUAA to a CAP project two ways, and then the part that is usually missing: getting the authorisation to behave on a laptop rather than only after deployment. The default authentication mechanism is the easy half; testing it without a landscape is the reason this exists.","chip":{"label":"Compatibility","tier":"unknown","evidence":"not yet checked"},"ai":true,"meta":"ManasaManu, published 2024-10-17"},"actor:lutzi3":{"href":"/actors/lutzi3","name":"Lutzi3","kind":"person","glyph":{"type":"avatar","name":"Lutzi3","src":"/avatars/lutzi3.png"},"line":"wrote 1 post, contributed to 1 entry"},"actor:guilherme-segantini":{"href":"/actors/guilherme-segantini","name":"Guilherme Segantini","kind":"person","glyph":{"type":"avatar","name":"Guilherme Segantini","src":"/avatars/guilherme-segantini.png"},"line":"designed 1 reference architecture, contributed to 2 entries"},"actor:mponce":{"href":"/actors/mponce","name":"Mario Ponce","kind":"person","glyph":{"type":"avatar","name":"Mario Ponce","src":"/avatars/mponce.png"},"line":"designed 1 reference architecture"},"actor:jung-thomas":{"href":"/actors/jung-thomas","name":"Thomas Jung","kind":"person","glyph":{"type":"avatar","name":"Thomas Jung","src":"/avatars/jung-thomas.png"},"line":"created 6 pieces, contributed to 15 entries"},"actor:rupamaity":{"href":"/actors/rupamaity","name":"rupamaity","kind":"person","glyph":{"type":"avatar","name":"rupamaity"},"line":"wrote 4 posts"},"actor:palak":{"href":"/actors/palak","name":"Palak","kind":"person","glyph":{"type":"avatar","name":"Palak"},"line":"created 2 pieces"},"actor:ayhamt":{"href":"/actors/ayhamt","name":"AyhamT","kind":"person","glyph":{"type":"avatar","name":"AyhamT"},"line":"wrote 1 post"},"actor:dj-adams":{"href":"/actors/dj-adams","name":"DJ Adams","kind":"person","glyph":{"type":"avatar","name":"DJ Adams","ring":"sap-official","src":"/avatars/dj-adams.png"},"line":"created 22 pieces, contributed to 20 entries","meta":"sap official"},"actor:ajitkp91":{"href":"/actors/ajitkp91","name":"Ajit Kumar Panda","kind":"person","glyph":{"type":"avatar","name":"Ajit Kumar Panda","src":"/avatars/ajitkp91.png"},"line":"wrote 3 posts, contributed to 1 entry"},"actor:pandayo":{"href":"/actors/pandayo","name":"Lukas Schwabe","kind":"person","glyph":{"type":"avatar","name":"Lukas Schwabe","src":"/avatars/pandayo.png"},"line":"wrote 2 posts, contributed to 1 entry"},"actor:michal-majer":{"href":"/actors/michal-majer","name":"Michał Majer","kind":"person","glyph":{"type":"avatar","name":"Michał Majer","ring":"independent","src":"/avatars/michal-majer.png"},"line":"wrote 1 post","meta":"independent"},"actor:daniilbolobonov":{"href":"/actors/daniilbolobonov","name":"Daniil Bolobonov","kind":"person","glyph":{"type":"avatar","name":"Daniil Bolobonov"},"line":"wrote 1 post"},"actor:vl-leon":{"href":"/actors/vl-leon","name":"Vladislav Leonkev","kind":"person","glyph":{"type":"avatar","name":"Vladislav Leonkev","src":"/avatars/vl-leon.png"},"line":"wrote 1 post, contributed to 12 entries"},"actor:sirsimon04":{"href":"/actors/sirsimon04","name":"Simon Engel","kind":"person","glyph":{"type":"avatar","name":"Simon Engel","src":"/avatars/sirsimon04.png"},"line":"created 4 pieces, contributed to 14 entries"},"actor:stefanrudi":{"href":"/actors/stefanrudi","name":"Stefan Rudi","kind":"person","glyph":{"type":"avatar","name":"Stefan Rudi","src":"/avatars/stefanrudi.png"},"line":"created 5 pieces, contributed to 13 entries"},"actor:danschlachter":{"href":"/actors/danschlachter","name":"Daniel Schlachter","kind":"person","glyph":{"type":"avatar","name":"Daniel Schlachter","ring":"sap-official","src":"/avatars/danschlachter.png"},"line":"created 9 pieces, contributed to 10 entries","meta":"sap official"},"actor:chrisobar":{"href":"/actors/chrisobar","name":"chrisobar","kind":"person","glyph":{"type":"avatar","name":"chrisobar","ring":"independent"},"line":"wrote 2 posts","meta":"independent"},"actor:walteraguerom":{"href":"/actors/walteraguerom","name":"Walter Andres Aguero Machado","kind":"person","glyph":{"type":"avatar","name":"Walter Andres Aguero Machado","ring":"partner"},"line":"wrote 1 post","meta":"partner"},"actor:dragolea":{"href":"/actors/dragolea","name":"Daniel Dragolea","kind":"person","glyph":{"type":"avatar","name":"Daniel Dragolea","src":"/avatars/dragolea.png"},"line":"wrote 4 posts, contributed to 2 entries"},"actor:fabianfellhauer":{"href":"/actors/fabianfellhauer","name":"Fabian Fellhauer","kind":"person","glyph":{"type":"avatar","name":"Fabian Fellhauer","src":"/avatars/fabianfellhauer.png"},"line":"created 2 pieces, contributed to 1 entry"},"actor:saranyasampath":{"href":"/actors/saranyasampath","name":"SaranyaSampath","kind":"person","glyph":{"type":"avatar","name":"SaranyaSampath"},"line":"wrote 1 post"},"actor:siddhartharouth":{"href":"/actors/siddhartharouth","name":"Siddhartha Routh","kind":"person","glyph":{"type":"avatar","name":"Siddhartha Routh"},"line":"wrote 1 post"},"actor:rashmiangadi":{"href":"/actors/rashmiangadi","name":"rashmiangadi","kind":"person","glyph":{"type":"avatar","name":"rashmiangadi"},"line":"wrote 1 post"},"actor:birgits":{"href":"/actors/birgits","name":"BirgitS","kind":"person","glyph":{"type":"avatar","name":"BirgitS"},"line":"wrote 8 posts"},"actor:hari-kumar-talari":{"href":"/actors/hari-kumar-talari","name":"Talari Hari Kumar","kind":"person","glyph":{"type":"avatar","name":"Talari Hari Kumar"},"line":"wrote 2 posts"},"actor:grego952":{"href":"/actors/grego952","name":"Grzegorz Karaluch","kind":"person","glyph":{"type":"avatar","name":"Grzegorz Karaluch","src":"/avatars/grego952.png"},"line":"wrote 1 tutorial, contributed to 1 entry"},"actor:lnoenssap":{"href":"/actors/lnoenssap","name":"Ludo Noens","kind":"person","glyph":{"type":"avatar","name":"Ludo Noens","src":"/avatars/lnoenssap.png"},"line":"wrote 1 post, contributed to 2 entries"},"actor:anarguri":{"href":"/actors/anarguri","name":"Andreas Riehl","kind":"person","glyph":{"type":"avatar","name":"Andreas Riehl","src":"/avatars/anarguri.png"},"line":"gave 1 talk, contributed to 2 entries"},"actor:uenal-akkaya":{"href":"/actors/uenal-akkaya","name":"Uenal Akkaya","kind":"person","glyph":{"type":"avatar","name":"Uenal Akkaya","src":"/avatars/uenal-akkaya.png"},"line":"gave 1 talk, contributed to 2 entries"},"actor:mkemeter":{"href":"/actors/mkemeter","name":"Mathias Kemeter","kind":"person","glyph":{"type":"avatar","name":"Mathias Kemeter","src":"/avatars/mkemeter.png"},"line":"gave 1 talk, contributed to 1 entry"},"actor:nkaputnik":{"href":"/actors/nkaputnik","name":"Nick Josipovic","kind":"person","glyph":{"type":"avatar","name":"Nick Josipovic","src":"/avatars/nkaputnik.png"},"line":"gave 1 talk, contributed to 4 entries"},"actor:danjoa":{"href":"/actors/danjoa","name":"Daniel Hutzel","kind":"person","glyph":{"type":"avatar","name":"Daniel Hutzel","ring":"sap-official","src":"/avatars/danjoa.png"},"line":"gave 3 talks, contributed to 32 entries","meta":"sap official"},"actor:sygyzmundovych":{"href":"/actors/sygyzmundovych","name":"Vitaliy Rudnytskiy","kind":"person","glyph":{"type":"avatar","name":"Vitaliy Rudnytskiy","src":"/avatars/sygyzmundovych.png"},"line":"gave 1 talk, contributed to 6 entries"},"actor:smarchesini-avvale":{"href":"/actors/smarchesini-avvale","name":"Sebastiano Marchesini","kind":"person","glyph":{"type":"avatar","name":"Sebastiano Marchesini","src":"/avatars/smarchesini-avvale.png"},"line":"gave 1 talk, contributed to 1 entry"},"actor:anfisc":{"href":"/actors/anfisc","name":"Andre Fischer","kind":"person","glyph":{"type":"avatar","name":"Andre Fischer","src":"/avatars/anfisc.png"},"line":"created 5 pieces, contributed to 19 entries"},"actor:olgadolinskaja":{"href":"/actors/olgadolinskaja","name":"olgadolinskaja","kind":"person","glyph":{"type":"avatar","name":"olgadolinskaja","src":"/avatars/olgadolinskaja.png"},"line":"gave 1 talk, contributed to 1 entry"},"actor:ashutosh-ksingh":{"href":"/actors/ashutosh-ksingh","name":"Ashutosh Kumar Singh","kind":"person","glyph":{"type":"avatar","name":"Ashutosh Kumar Singh"},"line":"wrote 2 posts"},"actor:mariusfreitag":{"href":"/actors/mariusfreitag","name":"Marius Freitag","kind":"person","glyph":{"type":"avatar","name":"Marius Freitag","src":"/avatars/mariusfreitag.png"},"line":"wrote 1 post, contributed to 10 entries"},"actor:prajnaparmita":{"href":"/actors/prajnaparmita","name":"prajnaparmita","kind":"person","glyph":{"type":"avatar","name":"prajnaparmita"},"line":"wrote 1 post"},"actor:willempardaens":{"href":"/actors/willempardaens","name":"Willem Pardaens","kind":"person","glyph":{"type":"avatar","name":"Willem Pardaens","src":"/avatars/willempardaens.png"},"line":"wrote 1 post, contributed to 3 entries"},"actor:ale-biagi":{"href":"/actors/ale-biagi","name":"Alessandro Biagi","kind":"person","glyph":{"type":"avatar","name":"Alessandro Biagi","src":"/avatars/ale-biagi.png"},"line":"wrote 2 posts, contributed to 4 entries"},"actor:kaztakata":{"href":"/actors/kaztakata","name":"Kazuhiko Takata","kind":"person","glyph":{"type":"avatar","name":"Kazuhiko Takata","ring":"independent","src":"/avatars/kaztakata.png"},"line":"wrote 3 posts, contributed to 1 entry","meta":"independent"},"actor:sandraros":{"href":"/actors/sandraros","name":"sandraros","kind":"person","glyph":{"type":"avatar","name":"sandraros","src":"/avatars/sandraros.png"},"line":"wrote 1 post, contributed to 3 entries"},"actor:cfg74":{"href":"/actors/cfg74","name":"Christoph Gollmick","kind":"person","glyph":{"type":"avatar","name":"Christoph Gollmick","src":"/avatars/cfg74.png"},"line":"wrote 1 post, contributed to 11 entries"},"actor:nacho-munoz":{"href":"/actors/nacho-munoz","name":"Nacho Muñoz Álvarez","kind":"person","glyph":{"type":"avatar","name":"Nacho Muñoz Álvarez"},"line":"wrote 1 post"},"actor:leoirudayam":{"href":"/actors/leoirudayam","name":"leoirudayam","kind":"person","glyph":{"type":"avatar","name":"leoirudayam"},"line":"wrote 2 posts"},"actor:randombyte":{"href":"/actors/randombyte","name":"Merlin Beutlberger","kind":"person","glyph":{"type":"avatar","name":"Merlin Beutlberger","src":"/avatars/randombyte.png"},"line":"wrote 1 post, contributed to 18 entries"},"actor:azhariqbal":{"href":"/actors/azhariqbal","name":"azhariqbal","kind":"person","glyph":{"type":"avatar","name":"azhariqbal"},"line":"wrote 1 post"},"actor:volkersaggau":{"href":"/actors/volkersaggau","name":"Volker Saggau","kind":"person","glyph":{"type":"avatar","name":"Volker Saggau","src":"/avatars/volkersaggau.png"},"line":"wrote 1 post, contributed to 1 entry"},"actor:frank-xie":{"href":"/actors/frank-xie","name":"frank_xie","kind":"person","glyph":{"type":"avatar","name":"frank_xie"},"line":"wrote 1 post"},"actor:arleytm":{"href":"/actors/arleytm","name":"Arley Triana Morin","kind":"person","glyph":{"type":"avatar","name":"Arley Triana Morin","src":"/avatars/arleytm.png"},"line":"wrote 1 post, contributed to 9 entries"},"actor:sarfaraz-musa-shaikh":{"href":"/actors/sarfaraz-musa-shaikh","name":"Sarfaraz_Musa_Shaikh","kind":"person","glyph":{"type":"avatar","name":"Sarfaraz_Musa_Shaikh","ring":"partner"},"line":"wrote 1 post","meta":"partner"},"actor:shiromani-soni1":{"href":"/actors/shiromani-soni1","name":"shiromani_soni1","kind":"person","glyph":{"type":"avatar","name":"shiromani_soni1"},"line":"wrote 1 post"},"actor:flovogt":{"href":"/actors/flovogt","name":"Florian Vogt","kind":"person","glyph":{"type":"avatar","name":"Florian Vogt","src":"/avatars/flovogt.png"},"line":"wrote 2 posts, contributed to 50 entries"},"actor:alperdedeoglu":{"href":"/actors/alperdedeoglu","name":"Alper Dedeoglu","kind":"person","glyph":{"type":"avatar","name":"Alper Dedeoglu","src":"/avatars/alperdedeoglu.png"},"line":"wrote 2 posts, contributed to 3 entries"},"actor:davidtill":{"href":"/actors/davidtill","name":"davidtill","kind":"person","glyph":{"type":"avatar","name":"davidtill"},"line":"wrote 1 post"},"actor:piyush-003":{"href":"/actors/piyush-003","name":"Piyush_003","kind":"person","glyph":{"type":"avatar","name":"Piyush_003"},"line":"wrote 1 post"},"actor:hector-enriquez":{"href":"/actors/hector-enriquez","name":"Héctor Enríquez","kind":"person","glyph":{"type":"avatar","name":"Héctor Enríquez"},"line":"wrote 1 post"},"actor:carinetd":{"href":"/actors/carinetd","name":"Carine Tchoutouo Djomo","kind":"person","glyph":{"type":"avatar","name":"Carine Tchoutouo Djomo","src":"/avatars/carinetd.png"},"line":"gave 1 talk, contributed to 17 entries"},"actor:maxstreifeneder":{"href":"/actors/maxstreifeneder","name":"Max Streifeneder","kind":"person","glyph":{"type":"avatar","name":"Max Streifeneder","src":"/avatars/maxstreifeneder.png"},"line":"gave 1 talk, contributed to 2 entries"},"actor:fath-markus":{"href":"/actors/fath-markus","name":"Markus Fath","kind":"person","glyph":{"type":"avatar","name":"Markus Fath","src":"/avatars/fath-markus.png"},"line":"gave 3 talks, contributed to 1 entry"},"actor:thomham":{"href":"/actors/thomham","name":"Thomas Hammer","kind":"person","glyph":{"type":"avatar","name":"Thomas Hammer","src":"/avatars/thomham.png"},"line":"gave 5 talks, contributed to 1 entry"},"actor:manisha-debnath":{"href":"/actors/manisha-debnath","name":"Manisha Debnath","kind":"person","glyph":{"type":"avatar","name":"Manisha Debnath"},"line":"gave 1 talk"},"actor:udo-paltzer":{"href":"/actors/udo-paltzer","name":"Udo Paltzer","kind":"person","glyph":{"type":"avatar","name":"Udo Paltzer","ring":"sap-official"},"line":"gave 2 talks","meta":"sap official"},"actor:shilpa-vij":{"href":"/actors/shilpa-vij","name":"Shilpa Vij","kind":"person","glyph":{"type":"avatar","name":"Shilpa Vij","ring":"sap-official"},"line":"gave 1 talk","meta":"sap official"},"actor:joaquinrecio":{"href":"/actors/joaquinrecio","name":"Joaquin Recio Huertas","kind":"person","glyph":{"type":"avatar","name":"Joaquin Recio Huertas","src":"/avatars/joaquinrecio.png"},"line":"gave 1 talk, contributed to 3 entries"},"actor:stefan0816":{"href":"/actors/stefan0816","name":"Stefan Engelhardt","kind":"person","glyph":{"type":"avatar","name":"Stefan Engelhardt","src":"/avatars/stefan0816.png"},"line":"gave 1 talk, contributed to 5 entries"},"actor:frij-aws":{"href":"/actors/frij-aws","name":"Jon Friesen","kind":"person","glyph":{"type":"avatar","name":"Jon Friesen","src":"/avatars/frij-aws.png"},"line":"gave 1 talk, contributed to 1 entry"},"actor:davidkna-sap":{"href":"/actors/davidkna-sap","name":"David Knaack","kind":"person","glyph":{"type":"avatar","name":"David Knaack","src":"/avatars/davidkna-sap.png"},"line":"gave 1 talk, contributed to 13 entries"},"actor:sschmidt":{"href":"/actors/sschmidt","name":"Sebastian Schmidt","kind":"person","glyph":{"type":"avatar","name":"Sebastian Schmidt","src":"/avatars/sschmidt.png"},"line":"gave 1 talk"},"actor:sapgunnar":{"href":"/actors/sapgunnar","name":"Gunnar Kosche","kind":"person","glyph":{"type":"avatar","name":"Gunnar Kosche","src":"/avatars/sapgunnar.png"},"line":"gave 1 talk, contributed to 1 entry"},"actor:thsandfuchs":{"href":"/actors/thsandfuchs","name":"Thorsten Sandfuchs","kind":"person","glyph":{"type":"avatar","name":"Thorsten Sandfuchs","src":"/avatars/thsandfuchs.png"},"line":"gave 3 talks, contributed to 3 entries"},"actor:lechnerc77":{"href":"/actors/lechnerc77","name":"Christian Lechner","kind":"person","glyph":{"type":"avatar","name":"Christian Lechner","src":"/avatars/lechnerc77.png"},"line":"gave 2 talks, contributed to 12 entries"},"actor:fwilhe":{"href":"/actors/fwilhe","name":"Florian Wilhelm","kind":"person","glyph":{"type":"avatar","name":"Florian Wilhelm","src":"/avatars/fwilhe.png"},"line":"wrote 1 post, contributed to 6 entries"},"actor:claudiacsrosalino":{"href":"/actors/claudiacsrosalino","name":"claudiacsrosalino","kind":"person","glyph":{"type":"avatar","name":"claudiacsrosalino","ring":"sap-official"},"line":"wrote 1 post","meta":"sap official"},"actor:juliana-morais":{"href":"/actors/juliana-morais","name":"Juliana Morais","kind":"person","glyph":{"type":"avatar","name":"Juliana Morais","src":"/avatars/juliana-morais.png"},"line":"wrote 2 tutorials"},"actor:arunkrishnamoorthy":{"href":"/actors/arunkrishnamoorthy","name":"Arun Krishnamoorthy","kind":"person","glyph":{"type":"avatar","name":"Arun Krishnamoorthy","ring":"partner","src":"/avatars/arunkrishnamoorthy.png"},"line":"wrote 2 posts, contributed to 2 entries","meta":"partner"},"actor:jitendrakansal":{"href":"/actors/jitendrakansal","name":"JITENDRA KANSAL","kind":"person","glyph":{"type":"avatar","name":"JITENDRA KANSAL","src":"/avatars/jitendrakansal.png"},"line":"wrote 1 post, contributed to 3 entries"},"source:capire":{"href":"/sources/capire","name":"capire","kind":"source","line":"CAP's official documentation — the source for what the core does, and the only admissible one for a core_coverage claim. capire:plugins is the curated official plugin list.","meta":"site, weekly"},"source:architecture-center":{"href":"/sources/architecture-center","name":"SAP Architecture Center","kind":"source","line":"Reference architectures published in SAP Architecture Center and maintained as dated frontmatter in the SAP/architecture-center repository, entered as reference-architecture content.","meta":"repo, weekly"},"source:sap-community":{"href":"/sources/sap-community","name":"SAP Community","kind":"source","line":"Blogs under SAP's managed tags. The tag pages are a JavaScript shell but the activity endpoint behind them answers a plain form POST and needs no session. Each tile carries title, author, date, board and excerpt, so a sweep is one request per page. The endpoint's age parameter is ignored — verified 2026-09-12, age=7 and age=1460 return the same posts back to 2018 — so a sweep is bounded by date instead: each tag keeps its own watermark, and since is the floor on first contact, which is what stops a broad tag emptying its whole history into the backlog in one run. Every door the atlas has is fed: CAP, the Integration Suite and BTP families, UI5 and Fiori, ABAP and the two ABAP environments, with the agent tags beside them. The ids are from the community's own A-Z of managed tags; a numeric id and a GUID are both valid.","meta":"site, weekly"},"source:sap-developers":{"href":"/sources/sap-developers","name":"SAP Developer Center","kind":"source","line":"Tutorials, missions and groups. The product tag lives in the public GraphQL endpoint and the group hierarchies live in /build/catalog, so a useful sweep joins the two. Both anonymous.","meta":"api, weekly"},"source:sap-help":{"href":"/sources/sap-help","name":"SAP Help Portal","kind":"source","line":"First-party documentation for things outside CAP — the ABAP platform above all. A single-page app, so a fetcher needs a browser, not curl.","meta":"site, on-demand"},"source:zeis":{"href":"/sources/zeis","name":"blog.zeis.de — Marian Zeis","kind":"source","line":"An author's own site, where the posts on his own tools are written first: ARC-1, open-rfc, the draw.io and API policy skills, the SAP AI tools catalogue. 31 posts, some of them on things outside SAP development (Bluesky bots, a browser extension, the decline of SAP Community). The index pages ten at a time, and the RSS feed at /posts/index.xml carries all of them, so the feed is the source for a sweep.","meta":"site, weekly"},"source:software-heroes":{"href":"/sources/software-heroes","name":"Software-Heroes","kind":"source","line":"A multi-author ABAP, RAP, Fiori and BTP blog — about 596 posts in the English RSS feed (mirrored in German), running since roughly 2018, each with its own byline, date and permalink; recent posts are all under one author, Björn S. Its 'My Community' in-app feature is a feed reader that links out to community.sap.com and other community blogs rather than republishing them — nothing should be ingested through it as Software-Heroes content, and a SAP Community post worth indexing belongs to the sap-community source instead. The site also hosts eight standalone SAP developer utilities under /en/<tool>; five entered as artifact_type web-tool, added to the schema for exactly this shape. The feed's own pubDate carries the date, so post_pattern here is a URL-shape filter only, with no date capture groups — unlike qmacro and zeis, whose URLs carry the date themselves.","meta":"site, on-demand"},"source:youtube":{"href":"/sources/youtube","name":"YouTube — SAP Developers playlists","kind":"source","line":"Playlists, not the channel: SAP Developers publishes everything from CAP expert sessions to conference recaps, and a playlist is the channel's own selection. Each playlist has an Atom feed at /feeds/videos.xml?playlist_id=… — the latest fifteen, no key, no quota — which is the nightly delta; first contact walks the whole list with yt-dlp, which also answers what the feed cannot: whether a video has happened yet, how long it is, whether it has chapters, and the transcript. A playlist is a series (content.part_of), and the channel is an actor. Videos carry automatic captions only.","meta":"site, nightly"},"source:btp-ai-best-practices":{"href":"/sources/btp-ai-best-practices","name":"SAP BTP AI Best Practices","kind":"source","line":"SAP-authored implementation guidance for generative and agentic AI on BTP. Content pages are published here; individual claims still cite their exact pages.","meta":"site, on-demand"},"source:qiita":{"href":"/sources/qiita","name":"Qiita","kind":"source","line":"A developer publishing platform. It is a publication source when an attached reading is hosted there, not a blanket endorsement of the platform's content.","meta":"site, on-demand"},"source:kernich":{"href":"/sources/kernich","name":"kernich.de","kind":"source","line":"An author's own site. It is modeled because content in the graph is published there; the content-to-source edge is the useful connection.","meta":"site, on-demand"},"source:sap-teched":{"href":"/sources/sap-teched","name":"SAP TechEd — session catalogue","kind":"source","line":"SAP's own catalogue of a TechEd's sessions, read through the feed its page reads (/build/teched): a session's code, title, abstract, track, venue, time, room and speakers, and after the event the recording. The sessions stand in Explore as an event galaxy (docs/concepts/event-galaxies.md); a session enters the graph only as a reviewed talk through intake, written against the abstract until the recording exists. The crawl stops by itself 60 days after the event.","meta":"site, nightly"},"source:heliconia-labs":{"href":"/sources/heliconia-labs","name":"Heliconia Labs","kind":"source","line":"Technical publications by Heliconia Labs, including the overview of patterns for using LLMs in ABAP development.","meta":"site, on-demand"},"instrument:sap-api-policy-v4-2026a":{"href":"/instruments/sap-api-policy-v4-2026a","name":"SAP API Policy 4.2026a","kind":"policy","line":"SAP's policy for API availability, documented use and controls, including special limits for autonomous or generative AI call sequences and systematic or large-scale data extraction.","meta":"policy, version 4.2026a","ai":true},"instrument:sap-developer-license-3-1":{"href":"/instruments/sap-developer-license-3-1","name":"SAP Developer License Agreement 3.1","kind":"licence","line":"SAP's version 3.1 developer agreement for accompanying SAP materials, including conditions on customer applications and mass data extraction from an SAP product to a non-SAP product.","meta":"licence, version 3.1","ai":true},"instrument:sap-developer-license-3-2-cap":{"href":"/instruments/sap-developer-license-3-2-cap","name":"SAP Developer License Agreement 3.2 CAP","kind":"licence","line":"SAP's CAP-specific version 3.2 developer agreement, including deployment conditions for productive customer applications and a scoped interoperability exception to its mass-extraction restriction.","meta":"licence, version 3.2 CAP","ai":true},"instrument:sap-developer-license-3-2":{"href":"/instruments/sap-developer-license-3-2","name":"SAP Developer License Agreement 3.2","kind":"licence","line":"SAP's general version 3.2 developer agreement for accompanying SAP materials, with conditions for customer applications, data extraction and use for artificial-intelligence training.","meta":"licence, version 3.2","ai":true}},"sky":{"recent":[{"id":"content:devtoberfest-2026-abap-environment-partner-solutions-certification","date":"2026-10-12"},{"id":"content:devtoberfest-2026-cds-associations-and-joins","date":"2026-10-12"},{"id":"content:devtoberfest-2026-rap-authorizations-business-users","date":"2026-10-12"},{"id":"content:devtoberfest-2026-joule-work-agentic-thinking","date":"2026-10-15"},{"id":"content:devtoberfest-2026-tabular-foundation-models","date":"2026-10-15"},{"id":"content:cap-in-the-age-of-ai-7-vector-embeddings-wrap-up","date":"2026-10-16"},{"id":"content:devtoberfest-2026-agentic-ui-extensibility","date":"2026-10-16"},{"id":"content:devtoberfest-2026-ai-assisted-cap-development","date":"2026-10-16"},{"id":"content:devtoberfest-2026-ai-assisted-sap-development-with-mcp","date":"2026-10-16"},{"id":"content:devtoberfest-2026-cap-mcp-ui5-webmcp","date":"2026-10-16"}],"releases":[{"id":"artifact:babamba2-abap-mcp-adt-powerup","version":"18.0.0","date":"2026-10-12"},{"id":"artifact:cap-js-ai","version":"1.2.1","date":"2026-10-14"},{"id":"artifact:cap-js-agents","version":"0.9.9","date":"2026-10-23"},{"id":"artifact:arc-mcp-arc-1","version":"1.6.0","date":"2026-10-17"},{"id":"artifact:cap-js-community-event-queue","version":"2.3.2","date":"2026-10-15"},{"id":"artifact:cap-js-hana","version":"3.1.2","date":"2026-10-12"},{"id":"artifact:cap-js-mcp-server","version":"0.0.8","date":"2026-10-14"},{"id":"artifact:cap-js-community-websocket","version":"1.11.3","date":"2026-10-22"},{"id":"artifact:cap-js-data-inspector","version":"2.0.1","date":"2026-10-14"},{"id":"artifact:cap-js-db-service","version":"3.1.2","date":"2026-10-12"},{"id":"artifact:cap-js-postgres","version":"3.1.2","date":"2026-10-12"},{"id":"artifact:cap-js-sqlite","version":"3.1.2","date":"2026-10-12"},{"id":"artifact:cap-js-ord","version":"1.10.2","date":"2026-10-21"},{"id":"artifact:dnic-dev-bw-modeling-mcp","version":"1.8.0","date":"2026-10-15"},{"id":"artifact:marianfoo-open-rfc","version":"0.2.5","date":"2026-10-14"},{"id":"artifact:neoimpulse-cap-js-mcp","version":"1.0.7","date":"2026-10-21"},{"id":"artifact:odatano-nightgate-mcp","version":"0.14.0","date":"2026-10-18"},{"id":"artifact:odatano-nightgate","version":"0.36.2","date":"2026-10-25"},{"id":"artifact:openui5-core","version":"1.152.1","date":"2026-10-14"},{"id":"artifact:neoimpulse-cap-js-uppercase","version":"1.0.4","date":"2026-10-21"},{"id":"artifact:neoimpulse-cap-js-restore-model-defined-types","version":"1.0.2","date":"2026-10-21"},{"id":"artifact:neoimpulse-cap-js-trim","version":"1.2.4","date":"2026-10-21"},{"id":"artifact:odatano-core-mcp","version":"0.6.0","date":"2026-10-19"},{"id":"artifact:odatano-core","version":"2.0.0-rc.42","date":"2026-10-23"},{"id":"artifact:sap-ai-sdk-ai-api","version":"2.17.1-20261023012757.0","date":"2026-10-23"},{"id":"artifact:sap-ai-sdk-core","version":"2.17.1-20261023012757.0","date":"2026-10-23"},{"id":"artifact:sap-ai-sdk-foundation-models","version":"2.17.1-20261023012757.0","date":"2026-10-23"},{"id":"artifact:sap-ai-sdk-orchestration","version":"2.17.1-20261023012757.0","date":"2026-10-23"},{"id":"artifact:sap-ai-sdk-prompt-registry","version":"2.17.1-20261023012757.0","date":"2026-10-23"},{"id":"artifact:sap-cds-compiler","version":"6.9.6","date":"2026-10-13"},{"id":"artifact:sap-cloud-sdk-http-client","version":"4.9.2-20261025013308.0","date":"2026-10-25"},{"id":"artifact:sap-cloud-sdk-odata-common","version":"4.9.2-20261018013139.0","date":"2026-10-18"},{"id":"artifact:sap-cloud-sdk-connectivity","version":"4.9.2-20261025013308.0","date":"2026-10-25"},{"id":"artifact:sap-cloud-sdk-resilience","version":"4.9.2-20261025013308.0","date":"2026-10-25"},{"id":"artifact:sap-cloud-sdk-util","version":"4.9.2-20261025013308.0","date":"2026-10-25"},{"id":"artifact:sap-cloud-sdk-openapi","version":"4.9.2-20261025013308.0","date":"2026-10-25"},{"id":"artifact:sap-ux-eslint-plugin-fiori-tools","version":"10.17.3","date":"2026-10-23"},{"id":"artifact:sap-ux-fiori-generator-shared","version":"1.2.22","date":"2026-10-16"},{"id":"artifact:sap-mdk-mcp-server","version":"0.4.1","date":"2026-10-21"},{"id":"artifact:sap-ux-fiori-annotation-api","version":"1.1.4","date":"2026-10-16"},{"id":"artifact:sap-ux-cds-annotation-parser","version":"1.1.1","date":"2026-10-16"},{"id":"artifact:sap-ux-cds-odata-annotation-converter","version":"1.1.1","date":"2026-10-16"},{"id":"artifact:sap-ux-fiori-mcp-server","version":"1.15.15","date":"2026-10-23"},{"id":"artifact:ui5-community-ui5-tooling-modules","version":"3.40.0","date":"2026-10-13"},{"id":"artifact:ui5-webcomponents","version":"1.24.32","date":"2026-10-15"},{"id":"artifact:grknylmz-sap-ai-dev-toolkit","version":"0.9.9908","date":"2026-10-17"},{"id":"artifact:abaplint-transpiler","version":"2.14.8","date":"2026-10-16"},{"id":"artifact:abap-adt-api","version":"9.2.0","date":"2026-10-19"},{"id":"artifact:marianfoo-sap-note-search-mcp","version":"0.3.10","date":"2026-10-17"},{"id":"artifact:marianfoo-sap-api-hub-mcp","version":"0.1.5","date":"2026-10-17"},{"id":"artifact:marianfoo-sap-roadmap-mcp","version":"0.1.4","date":"2026-10-17"},{"id":"artifact:sap-ux-cap-config-writer","version":"1.0.44","date":"2026-10-16"},{"id":"artifact:sap-ux-fe-fpm-writer","version":"1.3.25","date":"2026-10-16"},{"id":"artifact:sap-ux-create","version":"1.5.3","date":"2026-10-23"},{"id":"artifact:sap-ux-i18n","version":"1.0.6","date":"2026-10-16"},{"id":"artifact:sap-ux-odata-service-writer","version":"1.0.26","date":"2026-10-16"},{"id":"artifact:sap-ux-odata-vocabularies","version":"1.1.3","date":"2026-10-16"},{"id":"artifact:sap-ux-telemetry","version":"2.0.11","date":"2026-10-16"},{"id":"artifact:sap-ux-ui5-application-writer","version":"2.1.6","date":"2026-10-16"},{"id":"artifact:abap2ui5-embed-control","version":"0.3.0","date":"2026-10-14"},{"id":"artifact:abap2ui5-mcp-server","version":"1.0.0","date":"2026-10-14"},{"id":"artifact:abap2ui5-linter","version":"0.9.0","date":"2026-10-14"},{"id":"artifact:marianfoo-sap-mcp-auth","version":"0.1.3","date":"2026-10-17"}],"series":[["content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-1","content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-2","content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-3"],["content:how-i-use-ai-for-development-and-why-context-matters","content:abap-and-agentic-ai-the-hidden-problem-in-real-projects","content:introducing-arc-1-a-secure-adt-mcp-server-for-enterprise-sap-development","content:arc-1-on-sap-btp-secure-abap-agentic-development-beyond-the-laptop","content:arc-1-with-copilot-studio-sap-system-context-beyond-developers","content:arc-1-with-joule-studio-bringing-real-abap-system-context-into-joule","content:from-segw-and-legacy-ui5-to-rap-with-arc-1","content:abap-development-automation-with-arc-1-and-github-workflows","content:before-you-upgrade-s4hana-static-ui5-checks-with-mcp","content:arc-1-1-0-one-deployment-multiple-sap-systems"],["content:cap-in-the-age-of-ai","content:cap-in-the-age-of-ai-1-the-mcp-adapter","content:cap-in-the-age-of-ai-2-more-on-the-mcp-adapter","content:cap-in-the-age-of-ai-3-from-mcp-to-a2a","content:cap-in-the-age-of-ai-4-more-on-agents","content:cap-in-the-age-of-ai-5-agents-wrap-up","content:cap-in-the-age-of-ai-6-vector-embeddings","content:cap-in-the-age-of-ai-7-vector-embeddings-wrap-up"],["content:sap-btp-ci-how-i-built-an-open-source-enterprise-custom-kafka-adapter-from-scrat","content:sap-btp-ci-building-open-source-custom-adapter-eventsmartkafka-from-zero-with-sa","content:sap-btp-ci-eventsmartkafka-custom-kafka-adapter-from-esa-v1-1-0-validated-runtim"]],"entered":{"abap":[{"id":"artifact:consetto-cloudalmlink","date":"2026-10-26"},{"id":"artifact:irumudipriyan-sap-tcode-runner","date":"2026-10-26"},{"id":"artifact:magpasulke-abap-string-interpreter","date":"2026-10-26"},{"id":"artifact:larshp-vscode-abap","date":"2026-10-25"},{"id":"artifact:erhan-epod-adt-mcp-server","date":"2026-10-23"},{"id":"artifact:b-tocs-abap-btocs-core","date":"2026-10-22"},{"id":"artifact:b-tocs-pyapi4abap","date":"2026-10-22"},{"id":"artifact:skybuffer-ai-mcp-server","date":"2026-10-22"}],"btp":[{"id":"artifact:qualiture-basenvsync","date":"2026-10-26"},{"id":"artifact:sap-samples-hana-cli-claude-plugin","date":"2026-10-24"},{"id":"artifact:b-tocs-scec","date":"2026-10-22"},{"id":"artifact:sap-joule-studio","date":"2026-10-15"},{"id":"artifact:saptools-bruno","date":"2026-10-15"},{"id":"artifact:saptools-cf-debugger","date":"2026-10-15"},{"id":"artifact:saptools-cf-explorer","date":"2026-10-15"},{"id":"artifact:saptools-cf-function-trace","date":"2026-10-15"}],"cap":[{"id":"artifact:qualiture-hana-linter","date":"2026-10-26"},{"id":"artifact:lemaiwo-btp-agent","date":"2026-10-24"},{"id":"artifact:mi8y-cap-agents-sdm-backend","date":"2026-10-22"},{"id":"artifact:mi8y-cap-agents-sdm-reports-assistant","date":"2026-10-22"},{"id":"artifact:kamilkov-supply-chain-rescue","date":"2026-10-19"},{"id":"artifact:lemaiwo-ui5-cap-serverside-rendering-demo","date":"2026-10-18"},{"id":"artifact:miyasuta-cap-openai","date":"2026-10-15"},{"id":"artifact:miyasuta-cap-openapi","date":"2026-10-15"}],"ui5":[{"id":"artifact:qualiture-ui5-task-check-eocp","date":"2026-10-26"},{"id":"artifact:aydin-ozcan-generator-ui5-react-nest","date":"2026-10-19"},{"id":"artifact:carlosorozco88-ui5-tools","date":"2026-10-19"},{"id":"artifact:hasanciftci26-ui5-antares","date":"2026-10-19"},{"id":"artifact:htammen-ui5-cc-timerbutton","date":"2026-10-19"},{"id":"artifact:iljapostnovs-ui5plugin","date":"2026-10-19"},{"id":"artifact:iljapostnovs-ui5plugin-linter","date":"2026-10-19"},{"id":"artifact:iljapostnovs-ui5plugin-parser","date":"2026-10-19"}],"digital-manufacturing":[{"id":"artifact:blumenkuebel-sap-dm-pod2-mcp-server","date":"2026-10-17"},{"id":"artifact:cogniac-sap-pod-extension","date":"2026-10-17"},{"id":"artifact:robertriedel-pod2-config-skill","date":"2026-10-17"},{"id":"artifact:sap-archive-digital-manufacturing-test-automation-samples","date":"2026-10-17"},{"id":"artifact:sap-samples-digital-manufacturing-extension-samples","date":"2026-10-17"}],"commerce":[{"id":"artifact:abinayaaa-sap-cx-developer-companion","date":"2026-10-09"},{"id":"artifact:andreescocard-hybris-mcp-lite","date":"2026-10-09"}]},"released":{"cap":[{"id":"artifact:odatano-nightgate","date":"2026-10-25","version":"0.36.2"},{"id":"artifact:sap-cloud-sdk-connectivity","date":"2026-10-25","version":"4.9.2-20261025013308.0"},{"id":"artifact:sap-cloud-sdk-http-client","date":"2026-10-25","version":"4.9.2-20261025013308.0"},{"id":"artifact:sap-cloud-sdk-openapi","date":"2026-10-25","version":"4.9.2-20261025013308.0"},{"id":"artifact:sap-cloud-sdk-resilience","date":"2026-10-25","version":"4.9.2-20261025013308.0"},{"id":"artifact:sap-cloud-sdk-util","date":"2026-10-25","version":"4.9.2-20261025013308.0"},{"id":"artifact:cap-js-agents","date":"2026-10-23","version":"0.9.9"},{"id":"artifact:odatano-core","date":"2026-10-23","version":"2.0.0-rc.42"}],"ui5":[{"id":"artifact:sap-ux-create","date":"2026-10-23","version":"1.5.3"},{"id":"artifact:sap-ux-fiori-mcp-server","date":"2026-10-23","version":"1.15.15"},{"id":"artifact:sap-ux-fe-fpm-writer","date":"2026-10-16","version":"1.3.25"},{"id":"artifact:sap-ux-i18n","date":"2026-10-16","version":"1.0.6"},{"id":"artifact:sap-ux-odata-service-writer","date":"2026-10-16","version":"1.0.26"},{"id":"artifact:sap-ux-odata-vocabularies","date":"2026-10-16","version":"1.1.3"},{"id":"artifact:sap-ux-ui5-application-writer","date":"2026-10-16","version":"2.1.6"},{"id":"artifact:ui5-webcomponents","date":"2026-10-15","version":"1.24.32"}],"btp":[{"id":"artifact:sap-mdk-mcp-server","date":"2026-10-21","version":"0.4.1"},{"id":"artifact:marianfoo-sap-api-hub-mcp","date":"2026-10-17","version":"0.1.5"},{"id":"artifact:marianfoo-sap-mcp-auth","date":"2026-10-17","version":"0.1.3"},{"id":"artifact:marianfoo-sap-note-search-mcp","date":"2026-10-17","version":"0.3.10"},{"id":"artifact:marianfoo-sap-roadmap-mcp","date":"2026-10-17","version":"0.1.4"},{"id":"artifact:dnic-dev-bw-modeling-mcp","date":"2026-10-15","version":"1.8.0"},{"id":"artifact:sap-joule-studio-cli","date":"2026-10-07","version":"2.0.4"},{"id":"artifact:sap-approuter","date":"2026-10-01","version":"23.3.0"}],"abap":[{"id":"artifact:abap-adt-api","date":"2026-10-19","version":"9.2.0"},{"id":"artifact:arc-mcp-arc-1","date":"2026-10-17","version":"1.6.0"},{"id":"artifact:grknylmz-sap-ai-dev-toolkit","date":"2026-10-17","version":"0.9.9908"},{"id":"artifact:abaplint-transpiler","date":"2026-10-16","version":"2.14.8"},{"id":"artifact:abap2ui5-linter","date":"2026-10-14","version":"0.9.0"},{"id":"artifact:abap2ui5-mcp-server","date":"2026-10-14","version":"1.0.0"},{"id":"artifact:babamba2-abap-mcp-adt-powerup","date":"2026-10-12","version":"18.0.0"},{"id":"artifact:arc-mcp-adt-ls","date":"2026-10-01","version":"0.7.0"}]},"topics":[{"id":"building-onedevatlas","title":"Building onedevatlas","summary":"Building onedevatlas: the idea, the back-and-forth with AI, the wrong turns, and an orb who lost his permanent spot in the atlas.","date":"2026-10-25","ai":true,"refs":["artifact:cds-caching","artifact:mikezaschka-cds-data-federation"]},{"id":"onedevatlas-is-open","title":"The atlas is now in beta","summary":"onedevatlas is open for browsing. Find tools for SAP development, compare their documented capabilities, ask your AI assistant, and join a flight during TechEd week.","date":"2026-10-26","ai":true,"refs":["artifact:sap-adt-mcp-server","artifact:freight-art-abapsmith","artifact:arc-mcp-arc-1","artifact:erhan-epod-adt-mcp-server","artifact:fr0ster-mcp-abap-adt","artifact:aws-modernization-agents-for-sap","artifact:oisee-vibing-steampunk"]}],"questions":[{"id":"access-external-system-through-mcp-service-cap-java-custom-api","title":"Access an external system through an application MCP service","outcome":"An AI agent queries external system data or invokes selected external operations through an application-owned service contract exposed over MCP.","date":"2026-10-12","ai":true,"door":"cap","refs":["capability:mcp-servers","artifact:cap-java-cds-feature-remote-odata","artifact:cap-java-cds-adapter-mcp","artifact:sanoberrehman-cap-mcp-bridge"]},{"id":"access-external-system-through-mcp-service-cap-java-sap-api","title":"Access an external system through an application MCP service","outcome":"An AI agent queries external system data or invokes selected external operations through an application-owned service contract exposed over MCP.","date":"2026-10-12","ai":true,"door":"cap","refs":["capability:mcp-servers","artifact:cap-java-cds-feature-remote-odata","artifact:cap-java-cds-adapter-mcp","artifact:sanoberrehman-cap-mcp-bridge"]},{"id":"access-external-system-through-mcp-service-cap-node-custom-api","title":"Access an external system through an application MCP service","outcome":"An AI agent queries external system data or invokes selected external operations through an application-owned service contract exposed over MCP.","date":"2026-10-12","ai":true,"door":"cap","refs":["capability:mcp-servers","artifact:sap-cds","artifact:cap-js-mcp","artifact:gavdi-cap-mcp","artifact:sleibach-cap-mcp-plugin","artifact:neoimpulse-cap-js-mcp","artifact:sanoberrehman-cap-mcp-bridge"]},{"id":"access-external-system-through-mcp-service-cap-node-sap-api","title":"Access an external system through an application MCP service","outcome":"An AI agent queries external system data or invokes selected external operations through an application-owned service contract exposed over MCP.","date":"2026-10-12","ai":true,"door":"cap","refs":["capability:mcp-servers","artifact:sap-cds","artifact:cap-js-mcp","artifact:gavdi-cap-mcp","artifact:sleibach-cap-mcp-plugin","artifact:neoimpulse-cap-js-mcp","artifact:sanoberrehman-cap-mcp-bridge"]},{"id":"answer-a-question-from-records-in-a-cap-service","title":"Answer a question from records in a CAP service","outcome":"A question asked in plain words is answered from rows the CAP model already holds: the records nearest to the question in meaning are found and put in front of a language model, so the answer rests on those records rather than on what the model remembers.","date":"2026-09-21","ai":true,"door":"cap","refs":["capability:retrieval-augmented-generation","artifact:sap-cds","artifact:btp-hana-cloud","artifact:cap-js-hana","artifact:cap-js-ai","artifact:cap-llm-plugin","artifact:saptarishi-cds-plugin-vector-hana","artifact:saptarishi-cds-plugin-llm"]},{"id":"answer-a-users-question-inside-a-cap-application","title":"Answer a user's question inside the application","outcome":"Someone using the application asks in plain words and the application answers from its own services, with the agent running inside the deployed application rather than in the asker's own AI client.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:agent-tooling","artifact:cap-js-agents","artifact:cap-java-cds-adapter-agent","artifact:nagarjundas1994-aiagents-cds-agents","artifact:a2a-plugin"]},{"id":"cache-a-remote-service-response-in-a-cap-application","title":"Cache a remote service response","outcome":"A read that would call out to a remote service on every request is answered from a retained response until it expires.","date":"2026-09-19","ai":true,"door":"cap","refs":["capability:caching","artifact:cds-caching","artifact:mikezaschka-cds-data-federation","artifact:sap-cds"]},{"id":"cache-the-result-of-a-function-call-in-a-cap-service","title":"Cache the result of a function call","outcome":"A function the application would otherwise run on every call returns a value retained from an earlier call until it expires.","date":"2026-09-27","ai":true,"door":"cap","refs":["capability:caching","artifact:cds-caching","artifact:sap-cds"]},{"id":"carry-a-vocabulary-sap-does-not-ship-into-the-odata-metadata-in-cap","title":"Carry a vocabulary SAP does not ship into the OData metadata","outcome":"Annotations written with terms of somebody's own reach the service's OData metadata, with the reference to their vocabulary document beside them, instead of being dropped in translation.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:fiori-annotations","artifact:sap-cds","artifact:kamlendra-urp-vocab"]},{"id":"catch-a-change-in-what-a-cap-ai-feature-answers","title":"Catch a change in what the application's AI feature answers","outcome":"A model, prompt or schema change is caught before it ships, by sending the application's own prompts over fixtures and judging the answers that come back.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:agent-evals","artifact:saptarishi-cds-plugin-llm","artifact:sap-cds","artifact:cap-java-cds-services-bom","artifact:cap-js-agents"]},{"id":"change-a-btp-service-from-an-agent-session","title":"Change a BTP service from an agent session","outcome":"A developer working with an agent wants the change made in their own BTP account or service, a Command deployed, an agent pushed, a deployment created, rather than a command to copy out and run themselves.","date":"2026-10-15","ai":true,"door":"btp","refs":["capability:agent-guidance","artifact:sap-automation-pilot-agent-skills","artifact:sap-aicore-skills","artifact:sap-samples-joule-a2a-agent-toolkit","artifact:sap-samples-html5-applications-migration-skills-for-sap-btp","artifact:cch-engineering-sap-cloud-integration-pipeline-concept-skill","artifact:sap-leanix-ai-plugins"]},{"id":"change-application-records-from-agent-btp","title":"Change application records from an agent","outcome":"Create or update application records through an MCP client.","date":"2026-10-12","ai":true,"door":"btp","refs":["capability:mcp-servers","artifact:btp-api-management"]},{"id":"change-application-records-from-agent-cap-java","title":"Change application records from an agent","outcome":"Create or update application records through an MCP client.","date":"2026-10-12","ai":true,"door":"cap","refs":["capability:mcp-servers","artifact:cap-java-cds-adapter-mcp"]},{"id":"change-application-records-from-agent-cap-node","title":"Change application records from an agent","outcome":"Create or update application records through an MCP client.","date":"2026-10-12","ai":true,"door":"cap","refs":["capability:mcp-servers","artifact:cap-js-mcp","artifact:gavdi-cap-mcp","artifact:sleibach-cap-mcp-plugin","artifact:sanoberrehman-cap-mcp-bridge","artifact:neoimpulse-cap-js-mcp","artifact:shahid-la-cds-db-nlquery-mcp"]},{"id":"change-the-model-a-cap-service-calls","title":"Change which model a CAP service calls","outcome":"A CAP service that already calls a language model is pointed at a different one — a newer version, a cheaper one, or a model from another vendor — and the handler that calls it is not rewritten.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:llm-integration","artifact:btp-ai-core","artifact:sap-ai-sdk-orchestration","artifact:cap-llm-plugin","artifact:saptarishi-cds-plugin-llm","artifact:jerome-benoit-sap-ai-provider"]},{"id":"check-a-btp-solution-diagram-against-the-guideline","title":"Check a BTP solution diagram against the guideline","outcome":"A BTP solution diagram exists, and before it goes into a document or a review someone wants to know whether it follows SAP's visual language rather than only looking about right.","date":"2026-09-28","ai":true,"door":"btp","refs":["capability:architecture-diagrams","artifact:architecture-center","artifact:sap-btp-solution-diagrams","artifact:marianfoo-btp-drawio-skill","artifact:lemaiwo-btp-drawio-skill","artifact:miyasuta-claude-drawio-btp-diagram","artifact:etosin-arc-draw"]},{"id":"check-a-coding-agent-still-writes-correct-cap-code","title":"Check that a coding agent still writes correct CAP code","outcome":"After a model, a prompt or a skill set changes, the agent is given prompts whose expected answer is written down, and what it produced is checked against them.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:agent-evals","artifact:capire-skills","artifact:dankromp-skilloverflow"]},{"id":"compare-two-models-for-a-cap-feature-before-choosing-one","title":"Compare two models for a CAP feature before choosing one","outcome":"Two models, or two versions of a prompt, answer the same cases and the results are put side by side before one of them is wired into the service.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:agent-evals","artifact:btp-ai-core","artifact:saptarishi-cds-plugin-llm"]},{"id":"count-a-business-event-as-a-metric-in-a-cap-service","title":"Count a business event as a metric","outcome":"A count the business asks for, how often an order is released or a document read, is emitted as a metric beside the runtime's technical ones, with the tenant on it.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:telemetry","artifact:cap-js-community-business-metrics","artifact:cap-js-telemetry","artifact:cap-java-cds-services-bom"]},{"id":"cut-the-tokens-a-cap-service-sends-to-a-model","title":"Cut the tokens a CAP service spends sending its data to a model","outcome":"The same rows a CAP service already hands a model are sent in fewer tokens, so the bill and the latency fall without the service code or the model changing.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:llm-integration","artifact:geertjanklaps-cds-toon-ai-protocol-adapter"]},{"id":"edit-draft-records-from-agent-cap-node","title":"Edit and activate draft records from an agent","outcome":"Create or edit a draft record and activate or discard the pending change through MCP.","date":"2026-10-12","ai":true,"door":"cap","refs":["capability:mcp-servers","artifact:sleibach-cap-mcp-plugin"]},{"id":"expose-service-to-agent-btp","title":"Expose an application service to an AI agent","outcome":"Let an MCP client discover and query application data and invoke selected business operations.","date":"2026-10-12","ai":true,"door":"btp","refs":["capability:mcp-servers","artifact:btp-api-management"]},{"id":"expose-service-to-agent-cap-java","title":"Expose an application service to an AI agent","outcome":"Let an MCP client discover and query application data and invoke selected business operations.","date":"2026-10-12","ai":true,"door":"cap","refs":["capability:mcp-servers","artifact:cap-java-cds-adapter-mcp"]},{"id":"expose-service-to-agent-cap-node","title":"Expose an application service to an AI agent","outcome":"Let an MCP client discover and query application data and invoke selected business operations.","date":"2026-10-12","ai":true,"door":"cap","refs":["capability:mcp-servers","artifact:cap-js-mcp","artifact:gavdi-cap-mcp","artifact:sanoberrehman-cap-mcp-bridge","artifact:sleibach-cap-mcp-plugin"]},{"id":"agent-generates-a-rap-business-object","title":"Generate a RAP business object by prompting an agent","outcome":"A developer describes the travel application they want and an agent creates the RAP objects in the ABAP system, instead of printing source for the developer to paste into the editor.","date":"2026-09-19","ai":true,"door":"abap","refs":["capability:agent-code-access","artifact:sap-adt-mcp-server","artifact:sap-adt-vscode","artifact:arc-mcp-arc-1"]},{"id":"btp-token-with-no-user","title":"Get a token for a protected BTP endpoint with no user signed in","outcome":"A script, a job or another service calls a protected endpoint of a deployed SAP BTP application and is accepted, with nobody at a browser.","date":"2026-10-15","ai":true,"door":"btp","refs":["capability:authentication","artifact:btp-authorization-and-trust-management","artifact:saptools-cf-xsuaa","artifact:btp-oauth"]},{"id":"follow-the-fiori-design-guidelines-with-an-agent","title":"Get an agent to follow the SAP Fiori design guidelines","outcome":"A developer wants the controls, colours and messages an agent writes into a Fiori application to follow SAP's design guidelines, without the guidelines being pasted into the prompt each time.","date":"2026-10-15","ai":true,"door":"ui5","refs":["capability:agent-guidance","artifact:sap-fiori-guidelines","artifact:sap-ui-theme-designer-plugins","artifact:ui5-webcomponents-agent-skills","artifact:secondsky-sap-skills"]},{"id":"get-an-agent-to-write-clean-abap","title":"Get an agent to write ABAP that follows Clean ABAP","outcome":"A developer wants the ABAP an agent writes to follow SAP's Clean ABAP conventions without the rules being pasted into the prompt each time, and wants what it wrote read back against them.","date":"2026-10-15","ai":true,"door":"abap","refs":["capability:agent-guidance","artifact:matt1as-claude-abap-skills","artifact:attilaberencsi-sapskills","artifact:coveles-claude-abap-dev","artifact:marcellourbani-vscode-abap-remote-fs"]},{"id":"get-rap-patterns-that-match-the-target-system","title":"Get RAP patterns that match the target system","outcome":"A developer building a RAP business object wants the patterns the agent follows to be the ones valid for the system it will be deployed to, rather than advice averaged across BTP ABAP Environment, S/4HANA Cloud and on-premise.","date":"2026-10-15","ai":true,"door":"abap","refs":["capability:agent-guidance","artifact:weiserman-rap-skills","artifact:matt1as-claude-abap-skills","artifact:arc-mcp-arc-1-skills","artifact:likweitan-abap-skills"]},{"id":"get-test-code-for-a-fiori-elements-screen","title":"Get test code for a Fiori elements screen without writing selectors by hand","outcome":"A test addresses the controls of a generated list report or object page without a developer working out locators for ids the framework generated.","date":"2026-10-15","ai":true,"door":"ui5","refs":["capability:ui5-testing","artifact:ui5-community-ui5-journey-recorder","artifact:ui5-community-wdi5-fe-selectors","artifact:openui5-core"]},{"id":"give-a-cap-agent-a-chat-screen-in-the-application","title":"Give the agent a chat screen in the application","outcome":"A user of the application opens a screen in it and talks to the agent there, instead of reaching it from a separate AI client or over HTTP by hand.","date":"2026-10-24","ai":true,"door":"cap","refs":["capability:agent-tooling","artifact:cap-js-agents","artifact:lemaiwo-cap-agent-ui5-webui","artifact:lemaiwo-btp-agent"]},{"id":"hand-an-agent-the-btp-diagram-rules","title":"Hand an agent SAP's BTP diagram rules","outcome":"Someone asks an agent for a BTP solution diagram and wants it drawn in SAP's own visual language without the rules being typed into the prompt.","date":"2026-10-23","ai":true,"door":"btp","refs":["capability:agent-guidance","artifact:lemaiwo-btp-drawio-skill","artifact:marianfoo-btp-drawio-skill","artifact:miyasuta-claude-drawio-btp-diagram","artifact:lofond-drawio-skill-sap","artifact:etosin-arc-draw"]},{"id":"handle-a-drafts-own-events-apart-from-the-active-entitys","title":"Handle a draft's own events apart from the active entity's","outcome":"A draft-enabled entity's own events — NEW, PATCH, EDIT, SAVE and DISCARD — are handled in places of their own in a CAP service written in TypeScript, apart from the CREATE, UPDATE and DELETE handlers of the active entity.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:typescript-patterns","artifact:sap-cds","artifact:mubuntu-cap-handler-framework","artifact:dxfrontier-cds-ts-dispatcher","artifact:mrbandler-cds-routing-handlers"]},{"id":"invoke-business-operation-from-agent-btp","title":"Invoke a business operation from an agent","outcome":"Invoke a selected application business operation through an MCP tool.","date":"2026-10-12","ai":true,"door":"btp","refs":["capability:mcp-servers","artifact:btp-api-management"]},{"id":"invoke-business-operation-from-agent-cap-java","title":"Invoke a business operation from an agent","outcome":"Invoke a selected application business operation through an MCP tool.","date":"2026-10-12","ai":true,"door":"cap","refs":["capability:mcp-servers","artifact:cap-java-cds-adapter-mcp"]},{"id":"invoke-business-operation-from-agent-cap-node","title":"Invoke a business operation from an agent","outcome":"Invoke a selected application business operation through an MCP tool.","date":"2026-10-12","ai":true,"door":"cap","refs":["capability:mcp-servers","artifact:cap-js-mcp","artifact:gavdi-cap-mcp","artifact:sleibach-cap-mcp-plugin","artifact:sanoberrehman-cap-mcp-bridge","artifact:neoimpulse-cap-js-mcp"]},{"id":"keep-a-cached-result-from-reaching-the-wrong-tenant-user-or-locale","title":"Keep a cached result from reaching the wrong tenant, user or locale","outcome":"A result retained for one tenant, one user or one language is not returned to a request that belongs to another.","date":"2026-09-19","ai":true,"door":"cap","refs":["capability:caching","artifact:cds-caching","artifact:cap-js-community-common"]},{"id":"keep-an-agent-conversation-after-a-cap-server-restarts","title":"Keep a conversation after the server restarts","outcome":"A conversation with the agent survives a restart, and a follow-up that lands on another instance carries on where the last one left off instead of starting again.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:agent-tooling","artifact:cap-js-agents","artifact:cap-java-cds-adapter-agent","artifact:mi8y-cds-langgraph-persistence"]},{"id":"keep-an-agent-inside-clean-core-in-abap","title":"Keep an agent's ABAP inside clean core","outcome":"A developer wants the agent to stay inside what the system allows — released APIs, and knowing which clean core level an object sits at — whether it is writing new code for a cloud system or auditing custom code that already exists in a classic one.","date":"2026-10-17","ai":true,"door":"abap","refs":["capability:agent-guidance","artifact:matt1as-claude-abap-skills","artifact:likweitan-abap-skills","artifact:coveles-claude-abap-dev","artifact:arc-mcp-arc-1-skills","artifact:grknylmz-sap-ai-dev-toolkit","artifact:sap-abap-atc-cr-cv-s4hc"]},{"id":"keep-attachment-content-out-of-the-application-database","title":"Keep attachment content out of the application database","outcome":"A deployed CAP application keeps uploaded file content in an object store or a document repository, and keeps only the metadata and a reference in its own database.","date":"2026-09-20","ai":true,"door":"cap","refs":["capability:attachments","artifact:cap-js-attachments","artifact:cap-java-cds-feature-attachments","artifact:cap-js-sdm","artifact:cap-java-sdm","artifact:cap-attachments-plus"]},{"id":"keep-data-access-out-of-a-cap-services-handlers","title":"Keep data access out of a CAP service's handlers","outcome":"The data access of a CAP service written in TypeScript is called through classes with methods rather than written as queries inside the event handlers, so a handler holds the business logic and the queries sit behind one object.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:typescript-patterns","artifact:dxfrontier-cds-ts-repository","artifact:dxfrontier-cds-ts-dispatcher","artifact:lemaiwo-cds-plugin-handlers","artifact:sap-cds"]},{"id":"separate-attachments-per-tenant-in-a-cap-saas-application","title":"Keep each subscriber's attachments apart in a multitenant CAP application","outcome":"Each subscriber of a multitenant CAP application uploads and reads only its own attachments, and that tenant's content is removed when it unsubscribes.","date":"2026-09-20","ai":true,"door":"cap","refs":["capability:attachments","artifact:cap-js-attachments","artifact:cap-java-cds-feature-attachments","artifact:cap-js-sdm","artifact:cap-java-sdm","artifact:tklein1801-cap-js-attachments"]},{"id":"keep-the-sap-knowledge-an-agent-follows-current","title":"Keep the SAP knowledge an agent follows current","outcome":"A developer wants what their agent is told about SAP to come from what SAP documents now, rather than from what the model learnt or what a skill file froze when it was written.","date":"2026-10-15","ai":true,"door":"btp","refs":["capability:agent-guidance","artifact:sap-samples-sap-devs-cli","artifact:sap-tutorials-content","artifact:marianfoo-btp-drawio-skill"]},{"id":"keep-version-history-for-an-attached-document","title":"Keep version history for an attached document","outcome":"A document attached to a business record keeps its earlier versions, so a reader can see what the file was before it was replaced.","date":"2026-09-20","ai":true,"door":"cap","refs":["capability:attachments","artifact:cap-js-sdm","artifact:cap-java-sdm","artifact:btp-document-management-integration","artifact:cap-js-attachments","artifact:cap-java-cds-feature-attachments"]},{"id":"agent-changes-abap-in-an-on-premise-system","title":"Let an agent change ABAP in an on-premise system","outcome":"An agent reads and changes ABAP in a system the customer runs themselves, on the classic development model, and the change is activated there.","date":"2026-10-23","ai":true,"door":"abap","refs":["capability:agent-code-access","artifact:arc-mcp-arc-1","artifact:oisee-vibing-steampunk","artifact:fr0ster-mcp-abap-adt","artifact:sap-adt-mcp-server","artifact:freight-art-abapsmith","artifact:aws-modernization-agents-for-sap","artifact:erhan-epod-adt-mcp-server"]},{"id":"make-a-fiori-application-callable-by-joule","title":"Make a Fiori application's own actions callable by Joule","outcome":"A developer wants the things their UI5 or Fiori application can already do, such as reading what is displayed, applying a filter, navigating or pressing a button, exposed as actions an assistant may call, without working out the bridge and the descriptor shapes from scratch.","date":"2026-10-15","ai":true,"door":"ui5","refs":["capability:agent-guidance","artifact:i562693-vkn-scaffold-fiori-ai-bridge"]},{"id":"modernise-a-legacy-ui5-application-with-an-agent","title":"Modernise a legacy UI5 application with an agent","outcome":"A developer wants an agent to take an existing UI5 application off deprecated APIs and legacy patterns, following a written procedure rather than whatever the model remembers about the framework.","date":"2026-10-15","ai":true,"door":"ui5","refs":["capability:agent-guidance","artifact:ui5-plugins-coding-agents","artifact:ui5-mcp-server","artifact:arc-mcp-arc-1-skills"]},{"id":"open-a-cap-application-through-its-router-on-a-laptop","title":"Open a CAP application through its router locally","outcome":"A developer opens the application on a laptop at the address the App Router serves, logs in through the real authentication flow, and reaches the CAP service and the UI modules behind it the way a deployed request would.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:local-development","artifact:sap-cds-dk","artifact:ui5-community-dev-approuter","artifact:neoimpulse-cap-js-bootstrap","artifact:cap-js-community-common"]},{"id":"pick-up-a-cds-model-change-without-restarting-by-hand","title":"Pick up a CDS model change without restarting by hand","outcome":"A developer edits a CDS file or a handler and the running service answers the next request against the changed model, without stopping and starting it.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:local-development","artifact:sap-cds-dk","artifact:cap-java-cds-maven-plugin"]},{"id":"provide-application-context-as-mcp-resources-btp","title":"Provide application context as MCP resources","outcome":"Let an MCP client retrieve application data or schema context through resource URIs.","date":"2026-10-12","ai":true,"door":"btp","refs":["capability:mcp-servers","artifact:btp-api-management"]},{"id":"provide-application-context-as-mcp-resources-cap-node","title":"Provide application context as MCP resources","outcome":"Let an MCP client retrieve application data or schema context through resource URIs.","date":"2026-10-12","ai":true,"door":"cap","refs":["capability:mcp-servers","artifact:gavdi-cap-mcp","artifact:sleibach-cap-mcp-plugin","artifact:neoimpulse-cap-js-mcp","artifact:sanoberrehman-cap-mcp-bridge"]},{"id":"publish-reusable-mcp-prompts-btp","title":"Publish reusable MCP prompts","outcome":"Let an MCP client discover and retrieve reusable, parameterized interaction templates.","date":"2026-10-12","ai":true,"door":"btp","refs":["capability:mcp-servers","artifact:btp-api-management"]},{"id":"publish-reusable-mcp-prompts-cap-node","title":"Publish reusable MCP prompts","outcome":"Let an MCP client discover and retrieve reusable, parameterized interaction templates.","date":"2026-10-12","ai":true,"door":"cap","refs":["capability:mcp-servers","artifact:gavdi-cap-mcp","artifact:sleibach-cap-mcp-plugin","artifact:neoimpulse-cap-js-mcp"]},{"id":"put-a-value-help-on-a-fiori-field-in-cap","title":"Put a value help on a field a Fiori client renders","outcome":"A field in a Fiori elements app offers the values it allows instead of a free-text input, with the list coming from the model rather than from code in the app.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:fiori-annotations","artifact:sap-cds","artifact:cap-java-cds-services-bom","artifact:mpah-enum-value-help"]},{"id":"btp-corporate-identity-provider-login","title":"Put the company's own identity provider behind a BTP application's login","outcome":"People sign in to a BTP application with their corporate account, under the company's own password and multifactor policy rather than SAP's.","date":"2026-10-15","ai":true,"door":"btp","refs":["capability:authentication","artifact:btp-cloud-identity-services","artifact:btp-authorization-and-trust-management"]},{"id":"query-application-data-from-agent-btp","title":"Query application data from an agent","outcome":"Retrieve selected application records through MCP without changing those records.","date":"2026-10-12","ai":true,"door":"btp","refs":["capability:mcp-servers","artifact:btp-api-management"]},{"id":"query-application-data-from-agent-cap-java","title":"Query application data from an agent","outcome":"Retrieve selected application records through MCP without changing those records.","date":"2026-10-12","ai":true,"door":"cap","refs":["capability:mcp-servers","artifact:cap-java-cds-adapter-mcp"]},{"id":"query-application-data-from-agent-cap-node","title":"Query application data from an agent","outcome":"Retrieve selected application records through MCP without changing those records.","date":"2026-10-12","ai":true,"door":"cap","refs":["capability:mcp-servers","artifact:cap-js-mcp","artifact:gavdi-cap-mcp","artifact:sleibach-cap-mcp-plugin","artifact:neoimpulse-cap-js-mcp","artifact:sanoberrehman-cap-mcp-bridge","artifact:shahid-la-cds-db-nlquery-mcp"]},{"id":"query-related-data-across-apis-from-agent-btp","title":"Query related data across APIs from an agent","outcome":"Retrieve related data from several application APIs through one composed interface exposed to an MCP client.","date":"2026-10-12","ai":true,"door":"btp","refs":["capability:mcp-servers","artifact:btp-api-composition","artifact:btp-api-management"]},{"id":"btp-propagate-user-to-on-premise","title":"Reach a system in the customer's own network as the signed-in user","outcome":"An application on SAP BTP calls a system inside the customer's network and that system sees the person who signed in, not a shared service user.","date":"2026-10-15","ai":true,"door":"btp","refs":["capability:authentication","artifact:sap-cloud-connector","artifact:btp-destination","artifact:arc-mcp-xsuaa-auth"]},{"id":"reach-every-ui5-app-of-a-cap-project-from-one-page","title":"Reach every UI app of a CAP project from one page while developing","outcome":"A project with more than one UI app gives a developer one page that links all of them, instead of a URL per app to keep and to type.","date":"2026-09-27","ai":true,"door":"cap","refs":["capability:ui5-dev-server","artifact:sap-cds","artifact:ui5-community-cds-plugin-ui5","artifact:geert-janklaps-cds-launchpad-plugin"]},{"id":"recall-a-users-preference-in-a-later-agent-conversation","title":"Recall a user's preference in a later conversation","outcome":"Something the agent was told or worked out in one conversation is available in the next one, so a returning user does not state their preferences again.","date":"2026-10-22","ai":true,"door":"cap","refs":["capability:agent-tooling","artifact:cap-js-agents","artifact:mi8y-cap-agents-memory","artifact:mi8y-cap-agents-sdm-backend"]},{"id":"receive-messages-from-an-apache-kafka-topic","title":"Receive messages from an Apache Kafka topic","outcome":"Records that another system writes to a topic on an Apache Kafka cluster reach a handler in the application, which processes each one as an event.","date":"2026-09-19","ai":true,"door":"cap","refs":["capability:event-mesh","artifact:sap-cds","artifact:cds-kafka","artifact:cap-java-cds-feature-kafka","artifact:btp-advanced-event-mesh","artifact:cap-js-advanced-event-mesh","artifact:cap-java-cds-feature-advanced-event-mesh","artifact:btp-cloud-integration"]},{"id":"receive-document-ai-results-in-an-application","title":"Receive SAP Document AI's extraction results in an application","outcome":"The fields SAP Document AI extracted from a document reach an application of the reader's own, pushed by an outbound channel when the document reaches a step, so the application can map them and post them on.","date":"2026-09-27","ai":true,"door":"cap","refs":["capability:service-integration","artifact:sap-cds","artifact:cap-java-cds-services-bom","artifact:btp-cloud-integration"]},{"id":"refresh-a-cached-read-after-a-write-in-cap","title":"Refresh cached reads after a write","outcome":"A read answered from a cache reflects a write to the underlying data within a bound the application sets.","date":"2026-09-19","ai":true,"door":"cap","refs":["capability:caching","artifact:cds-caching","artifact:mikezaschka-cds-data-federation","artifact:cap-js-community-common"]},{"id":"require-a-persons-approval-before-a-cap-agent-acts","title":"Require a person's approval before the agent acts","outcome":"Before the agent runs an action that changes something, the task stops and waits for a person to approve or reject it, and carries on from there.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:agent-tooling","artifact:cap-js-agents","artifact:cap-java-cds-adapter-agent"]},{"id":"restyle-a-ui5-web-component-without-breaking-on-upgrade","title":"Restyle a UI5 Web Component without breaking on the next release","outcome":"A developer wants an agent to restyle a UI5 Web Component through the surfaces the library documents, rather than reaching into its shadow DOM in a way that stops working when the component changes.","date":"2026-10-15","ai":true,"door":"ui5","refs":["capability:agent-guidance","artifact:ui5-webcomponents-agent-skills","artifact:sap-ui-theme-designer-plugins","artifact:sap-fiori-guidelines"]},{"id":"run-a-cap-service-against-a-cloud-service-instance-from-a-laptop","title":"Run a CAP service against a cloud service instance","outcome":"A service running on a laptop reads and writes through a service instance that exists in the cloud — a database, a destination, an authentication service — instead of through the local substitute, with nothing deployed.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:local-development","artifact:sap-cds-dk","artifact:sang2x-captools"]},{"id":"run-a-cap-service-against-a-model-without-an-ai-core-binding","title":"Run a CAP service's model calls with no SAP AI Core binding","outcome":"A CAP project whose handlers call a language model starts, serves and answers on a laptop or in a pipeline where no SAP AI Core instance is bound — either from a mock, or from a model running locally.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:llm-integration","artifact:cap-js-ai","artifact:cap-java-cds-ai","artifact:cap-js-agents","artifact:cap-java-cds-services-bom","artifact:saptarishi-cds-plugin-llm"]},{"id":"run-a-ui5-apps-tests-with-no-backend","title":"Run a UI5 app's tests with no backend behind it","outcome":"The application under test answers its own service calls from mock data, so the tests run with no backend reachable.","date":"2026-10-15","ai":true,"door":"ui5","refs":["capability:ui5-testing","artifact:openui5-core","artifact:marianfoo-ui5-middleware-odata-recorder"]},{"id":"run-a-ui5-projects-test-pages-unattended","title":"Run a UI5 project's existing QUnit and OPA5 pages unattended","outcome":"The test pages a project already has run from one command, with nobody opening them in a browser tab, and the run leaves a report a pipeline can read.","date":"2026-10-15","ai":true,"door":"ui5","refs":["capability:ui5-testing","artifact:openui5-core","artifact:arnaudbuchholz-ui5-test-runner","artifact:ui5-community-karma-ui5-transpile"]},{"id":"scan-an-uploaded-attachment-before-it-can-be-downloaded","title":"Scan an uploaded attachment before anyone can download it","outcome":"A file a user uploads is scanned for malware, and a file that was never scanned does not reach a reader carrying the same status as one that was.","date":"2026-09-20","ai":true,"door":"cap","refs":["capability:attachments","artifact:cap-js-attachments","artifact:cap-java-cds-feature-attachments","artifact:cap-js-sdm","artifact:cap-java-sdm","artifact:tklein1801-cap-js-attachments"]},{"id":"see-the-annotations-rendered-before-a-fiori-app-exists-in-cap","title":"See the annotations rendered before any Fiori app exists","outcome":"A developer changing @UI annotations sees the page they produce straight away, with no UI application in the project to generate or rebuild first.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:fiori-annotations","artifact:sap-cds","artifact:cap-java-cds-services-bom"]},{"id":"see-what-the-browser-did-before-a-cap-request-arrived","title":"See what the browser did before the request arrived","outcome":"The time a UI5 interaction took in the browser, and the JavaScript errors it hit, land in the backend beside the server's own telemetry, so a complaint about a slow or broken screen can be checked.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:telemetry","artifact:sleibach-cap-ui-telemetry","artifact:cap-js-telemetry"]},{"id":"see-where-a-slow-cap-request-spent-its-time","title":"See where a slow request spent its time","outcome":"A request that takes too long is broken down into the service calls, handlers and database statements it ran, with the elapsed time of each, so the slow part can be named.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:telemetry","artifact:cap-js-telemetry","artifact:cap-java-cds-services-bom","artifact:soontao-opentelemetry-cds"]},{"id":"send-a-document-to-document-ai","title":"Send a document to SAP Document AI","outcome":"A document that arrived somewhere an application or a flow can reach is uploaded to SAP Document AI for classification and extraction.","date":"2026-09-27","ai":true,"door":"cap","refs":["capability:service-integration","artifact:sap-cds","artifact:cap-java-cds-services-bom","artifact:btp-cloud-integration"]},{"id":"send-a-cap-services-traces-and-metrics-to-sap-cloud-logging","title":"Send a service's traces and metrics to SAP Cloud Logging","outcome":"The spans and metrics a deployed CAP service produces arrive in an SAP Cloud Logging instance, where they can be searched and put on a dashboard.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:telemetry","artifact:cap-js-telemetry","artifact:cap-java-cds-services-bom","artifact:btp-cloud-logging"]},{"id":"serve-a-ui5-cli-project-from-the-cap-server","title":"Serve a UI5 CLI project from the CAP server while developing","outcome":"A UI5 app that is a UI5 CLI project, its framework resources resolved and its middlewares configured by ui5.yaml, is reachable on the CDS server's own port while the services are running, with no second server and no proxy in front.","date":"2026-10-18","ai":true,"door":"cap","refs":["capability:ui5-dev-server","artifact:ui5-community-cds-plugin-ui5","artifact:sap-cds","artifact:lemaiwo-ui5-cap-serverside-rendering-demo"]},{"id":"serve-repeated-reads-from-a-cache-in-a-cap-service","title":"Serve repeated reads of a rarely written entity from a cache","outcome":"Reads of an entity that is read constantly and written rarely are answered inside the application instead of going to the database on every request.","date":"2026-09-19","ai":true,"door":"cap","refs":["capability:caching","artifact:cds-caching","artifact:cap-js-community-common","artifact:sap-cds"]},{"id":"share-one-cache-across-cap-application-instances","title":"Share one cache across application instances","outcome":"Several instances of the same application read and write one cache, so a result retained while serving one request answers a later request routed to a different instance.","date":"2026-09-19","ai":true,"door":"cap","refs":["capability:caching","artifact:cds-caching","artifact:btp-redis"]},{"id":"show-a-self-referencing-entity-as-a-fiori-tree-table-in-cap","title":"Show a self-referencing entity as a Fiori tree table","outcome":"An entity whose rows point at their own parent is rendered as an expandable tree in a Fiori elements list report instead of a flat list.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:fiori-annotations","artifact:sap-cds","artifact:cap-java-cds-services-bom"]},{"id":"show-application-ui-in-mcp-client-cap-node","title":"Show an application view inside an MCP client","outcome":"Render an interactive application list or detail view inside a supporting MCP client.","date":"2026-10-12","ai":true,"door":"cap","refs":["capability:mcp-servers","artifact:sleibach-cap-mcp-plugin"]},{"id":"btp-browser-login-and-backend-trust","title":"Sign a browser user in to a BTP application and have its backends accept the result","outcome":"A person opens a deployed SAP BTP application in a browser, logs in once, and each of the application's own backend endpoints accepts the request as that person.","date":"2026-10-15","ai":true,"door":"btp","refs":["capability:authentication","artifact:btp-cloud-identity-services","artifact:btp-authorization-and-trust-management","artifact:sap-approuter","artifact:sap-xssec"]},{"id":"skip-resending-a-record-the-client-already-has","title":"Skip resending a record the client already has","outcome":"A client that re-reads an entity it has already fetched gets 304 and no body back when the record has not changed since.","date":"2026-09-19","ai":true,"door":"cap","refs":["capability:caching","artifact:sap-cds","artifact:cap-java-cds-services-bom"]},{"id":"split-a-cap-service-implementation-into-a-class-per-entity","title":"Split one CAP service implementation into a class per entity","outcome":"The custom logic of a CAP service written in TypeScript sits in one class per entity rather than in a single service implementation file, and each class's methods still reach the framework as the before, on and after handlers for that entity.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:typescript-patterns","artifact:sap-cds","artifact:dxfrontier-cds-ts-dispatcher","artifact:mubuntu-cap-handler-framework","artifact:lemaiwo-cds-plugin-handlers","artifact:mrbandler-cds-routing-handlers","artifact:soontao-cds-hyper-app-service"]},{"id":"start-a-cap-service-on-a-laptop-with-nothing-bound","title":"Start a CAP service with nothing bound","outcome":"A CAP project whose model imports a remote service and whose endpoints are authenticated starts, serves and answers requests on a laptop with no service instance bound, no database provisioned and no upstream system reachable.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:local-development","artifact:sap-cds","artifact:sap-cds-dk","artifact:cap-java-cds-services-bom","artifact:cap-java-cds-maven-plugin"]},{"id":"stream-a-model-answer-from-a-cap-service","title":"Stream a model's answer out of a CAP service","outcome":"A CAP service receives a model's answer in pieces as the model writes it, rather than one payload after the model has finished, so a chat surface can show text appearing instead of a spinner.","date":"2026-10-15","ai":true,"door":"cap","refs":["capability:llm-integration","artifact:sap-ai-sdk-orchestration","artifact:sap-ai-sdk-foundation-models","artifact:saptarishi-cds-plugin-llm","artifact:jerome-benoit-sap-ai-provider","artifact:cap-js-agents"]},{"id":"tell-a-client-how-long-a-served-file-stays-fresh","title":"Tell a client how long a served file stays fresh","outcome":"A client that has fetched a file served by the application keeps using it for a stated number of seconds without asking the application again.","date":"2026-09-19","ai":true,"door":"cap","refs":["capability:caching","artifact:cap-java-cds-services-bom","artifact:sap-cds"]},{"id":"test-a-deployed-ui5-app-from-a-pipeline","title":"Test a UI5 app that is already deployed, from a pipeline","outcome":"A test reaches the application a user would open — deployed, served by somebody else, possibly behind a login — and the run happens in a pipeline rather than on a developer's machine.","date":"2026-10-15","ai":true,"door":"ui5","refs":["capability:ui5-testing","artifact:openui5-core","artifact:ui5-community-wdi5","artifact:arnaudbuchholz-ui5-test-runner"]},{"id":"upload-an-attachment-from-a-non-fiori-client","title":"Upload an attachment from a client that is not SAP Fiori elements","outcome":"A caller that is not an SAP Fiori elements UI, such as a test client, a custom front end or another service, creates an attachment record against an existing business record and uploads its content.","date":"2026-09-20","ai":true,"door":"cap","refs":["capability:attachments","artifact:cap-js-attachments","artifact:cap-js-sdm","artifact:cap-java-sdm","artifact:cap-java-cds-feature-attachments"]},{"id":"work-on-abap-with-an-agent-and-no-system-connection","title":"Work on ABAP with an agent and no system connection","outcome":"A developer wants to review, write or test ABAP with an agent on a machine that has no connection to an SAP system — a serialised repository checked out, or source pasted into the session, and nothing else.","date":"2026-10-17","ai":true,"door":"abap","refs":["capability:agent-guidance","artifact:alokm3hta-star-abap-offstack-testing","artifact:matt1as-claude-abap-skills","artifact:adam0thman-sap-basis-ops","artifact:arc-mcp-arc-1-skills","artifact:attilaberencsi-sapskills","artifact:abap2ui5-app-template","artifact:abap2ui5-mcp-server"]}],"neighbours":[{"id":"npm","name":"npm registry","url":"https://registry.npmjs.org","group":"sources","credit":"The registry the CAP and UI5 packages are published to. Versions, licences, publishers and publish dates on every card are read from it nightly.","checked":"2026-09-11"},{"id":"github","name":"GitHub API","url":"https://api.github.com","group":"sources","credit":"Stars, issue age, release cadence, last commit and contributors are read from its API nightly, and so is each maintainer's README, which the artifact page quotes.","checked":"2026-09-11"},{"id":"capire","name":"capire","url":"https://cap.cloud.sap/docs/","group":"sources","credit":"CAP's official documentation, and the only source admitted for a claim about what the CAP core does. Its plugin page is the official list of CAP plugins.","checked":"2026-09-11"},{"id":"architecture-center","name":"SAP Architecture Center","url":"https://architecture.learning.sap.com","group":"sources","credit":"Reference architectures with dated frontmatter, entered as readings attached to the capabilities they describe.","checked":"2026-09-11"},{"id":"sap-community","name":"SAP Community","url":"https://community.sap.com","group":"sources","credit":"Blog posts under the CAP product tag are swept weekly with their title, author, date and board, and a post enters only once it is attached to what it explains.","checked":"2026-09-11"},{"id":"sap-developers","name":"SAP Developer Center","url":"https://developers.sap.com","group":"sources","credit":"Tutorials, missions and groups, read from its public GraphQL endpoint and its build catalogue. Since mid-2026 it runs on an open platform with a knowledge graph of first-party learning content, which the atlas links into rather than repeats.","checked":"2026-09-11"},{"id":"sap-help","name":"SAP Help Portal","url":"https://help.sap.com","group":"sources","credit":"First-party documentation for what lies outside CAP, the ABAP platform above all.","checked":"2026-09-11"},{"id":"bestofcapjs","name":"bestofcapjs","url":"https://bestofcapjs.org","group":"sources","credit":"The CAP package directory, built from a curated list crawled against npm and GitHub. Its package names were an early seed for the atlas; its order was not taken.","checked":"2026-09-11"},{"id":"bestofui5","name":"bestofui5","url":"https://bestofui5.org","group":"sources","credit":"The same engine for UI5, and the directory that keeps applications apart from packages, a split the atlas kept. Its package names seeded the UI5 door.","checked":"2026-09-11"},{"id":"awesome-cap","name":"awesome-cap","url":"https://github.com/mauriciolauffer/awesome-cap","group":"sources","credit":"A curated list of CAP links, strongest on tutorials, videos and books, which is where the package sources are thinnest.","checked":"2026-09-11"},{"id":"sap-ai-mcp-servers","name":"sap-ai-mcp-servers","url":"https://github.com/marianfoo/sap-ai-mcp-servers","group":"sources","credit":"A generated catalogue of SAP MCP servers, agent skills and Claude plugins, each with its repository, licence and the date it was added, also published at sap-ai-tools.marianzeis.de. Names and repositories are taken from it; its sections are its own curation and stay there.","checked":"2026-09-11"},{"id":"sap-ai-skills-library","name":"SAP AI Skills Library","url":"https://github.com/SAP/ai-skills-library","group":"sources","credit":"SAP's registry of AI skills and MCP servers, with a front end at skills.cloud.sap. It registers each skill and leaves the code in the publisher's repository, which is how the atlas treats skills as well.","checked":"2026-09-11"},{"id":"qmacro","name":"qmacro.org — DJ Adams","url":"https://qmacro.org/blog/","group":"sources","credit":"A personal blog on CAP, the cds command line and the tools around them. Its index is swept weekly.","checked":"2026-09-11"},{"id":"software-heroes","name":"Software-Heroes","url":"https://software-heroes.com/en/","group":"sources","credit":"A community ABAP, RAP, Fiori and BTP blog, and a set of standalone SAP developer tools, run by Xexer.","checked":"2026-09-16"},{"id":"sap-samples","name":"SAP-samples/btp-service-metadata","url":"https://github.com/SAP-samples/btp-service-metadata","group":"sources","credit":"SAP's machine-readable catalogue of BTP services: names, plans, deprecations and the data centres each plan is offered in. The BTP service entries are read from it.","checked":"2026-09-11"},{"id":"youtube","name":"YouTube — SAP Developers playlists","url":"https://www.youtube.com/@sapdevs","group":"sources","credit":"Its playlists are read as series: a playlist is a run of videos, and each video enters as a reading in its place.","checked":"2026-09-11"},{"id":"abaplint","name":"abaplint.app","url":"https://abaplint.app","group":"sources","credit":"The abaplint figures on an ABAP repository's page are read nightly from abaplint.app's own record for it.","checked":"2026-10-18"},{"id":"dotabap","name":"dotabap","url":"https://dotabap.org","group":"alongside","credit":"The ABAP open-source list, admitting abapGit repositories against a published bar and running abaplint over each one for a cloud-readiness number. It computes a reading from the source itself, and its default order is not by stars.","checked":"2026-09-11"},{"id":"sap-dev-tech-radar","name":"SAP Development Tech Radar","url":"https://tobiashofmann.github.io/sap-dev-tech-radar/","group":"alongside","credit":"A community radar of SAP technology choices, placed through proposals that are discussed and voted on and published in dated six-month editions. The atlas took its governance and its dating from here, and for a time its rings, which were retired on 2026-09-06.","checked":"2026-09-11"},{"id":"arc-1","name":"ARC-1","group":"alongside","credit":"An ABAP MCP server over ADT, and where the atlas took its naming from: an organisation as the namespace, and SAP in the tagline, never in the name.","checked":"2026-09-11"},{"id":"sap-devs-cli","name":"sap-devs CLI","url":"https://github.com/SAP-samples/sap-devs-cli","group":"layers","credit":"A command line that puts SAP context packs into a coding agent, with a local MCP server of its own. The packs carry SAP's current core versions and known errors; the atlas carries what exists beside them.","checked":"2026-09-11"},{"id":"sap-mcp-servers","name":"SAP's MCP servers","group":"layers","credit":"Servers that let an agent act on a system: expose a CAP service as tools, generate and change a Fiori app. None of them says which option to choose, which is the question the atlas answers, and each is an entry here like any other option.","checked":"2026-09-11"}]},"extra":{"contributors":2067,"contributes":6090}}