https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/members/developer-advocates/qmacro.xml SAP Community - DJ Adams 2026-07-17T23:30:07.958387+00:00 python-feedgen DJ Adams in SAP Community https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge-analysis/bc-p/14418635#M504 Re: June Developer Challenge - CAP Knowledge - Analysis 2026-06-15T07:43:13.916000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>By the way, if anyone would like a "starter" OData query URL to see their responses, here's one which I'm sure&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1460081">@YLN</a>&nbsp;has come up with already - a way to find your own results for the questions to which you've responded. Here is an example, using&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1460081">@YLN</a>&nbsp;as an example:</P><P><A href="https://developer-challenge-june-2026.cfapps.eu10.hana.ondemand.com/odata/v4/main/Questions?$expand=responses($filter=communityID%20eq%20%27YLN%27)&amp;$filter=responses/communityID%20eq%20%27YLN%27" target="_self" rel="nofollow noopener noreferrer">https://developer-challenge-june-2026.cfapps.eu10.hana.ondemand.com/odata/v4/main/Questions?$expand=responses($filter=communityID eq 'YLN')&amp;$filter=responses/communityID eq 'YLN'</A></P><P>This uses a $filter query option both at the primary resource level but also within an expanded navigation property context.</P> 2026-06-15T07:43:13.916000+02:00 https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge-analysis/bc-p/14418775#M516 Re: June Developer Challenge - CAP Knowledge - Analysis 2026-06-15T09:00:35.021000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/168423">@SachinArtani</a>&nbsp;it is not case sensitive. I even point out that any case can be used, in the detailed instructions (see screenshot below). Here's the relevant line in the implementation:</P><pre class="lia-code-sample language-javascript"><code>const communityid = req.headers.communityid?.toLowerCase()</code></pre><P>I tried with your community ID in all lower case, and it worked fine, returning the same hash value to what's returned when "SachinArtani" is used.</P><P>When you say "I tried ... it failed" - can you be more specific? "it failed" isn't much to go on <span class="lia-unicode-emoji" title=":winking_face:">πŸ˜‰</span>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="qmacro_0-1781506445180.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/421823iC5A81EC8CDEAD043/image-size/medium?v=v2&amp;px=400" role="button" title="qmacro_0-1781506445180.png" alt="qmacro_0-1781506445180.png" /></span></P><P>&nbsp;</P> 2026-06-15T09:00:35.021000+02:00 https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge-task-12-query-mode-in-cds-repl/ba-p/14419288 June Developer Challenge - CAP Knowledge - Task 12 - Query mode in cds REPL 2026-06-16T07:00:00.033000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>The cds REPL is a powerful facility that helps us explore and debug. It's based on the regular <A href="https://nodejs.org/api/repl.html" target="_blank" rel="noopener nofollow noreferrer">Node.js REPL</A>, which has a number of REPL-level commands:</P><PRE><CODE>; node Welcome to Node.js v24.15.0. Type ".help" for more information. &gt; .help .break Sometimes you get stuck, this gets you out .clear Alias for .break .editor Enter editor mode .exit Exit the REPL .help Print this help message .load Load JS from a file into the REPL session .save Save all evaluated commands in this REPL session to a file Press Ctrl+C to abort current expression, Ctrl+D to exit the REPL</CODE></PRE><P>The cds REPL extends the Node.js REPL with various commands, two of which have been available for a good while:</P><PRE><CODE>.inspect Sets options for util.inspect, e.g. `.inspect .depth=1`. .run Runs a cds server from a given CAP project folder, or module name like @capire/bookshop.</CODE></PRE><P>Recently (in a CAP release earlier this year) the cds REPL gained a new "query mode" command, which enables us to write queries directly. In other words, instead of this:</P><PRE><CODE>&gt; await cds.ql`SELECT from Books {title, price}`</CODE></PRE><P>we can, within the new query mode, write simply:</P><PRE><CODE>cql&gt; select from Books {title, price}</CODE></PRE><P>What is the cds REPL command to enter this new query mode?</P><P><EM>This is a question from the <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge/ba-p/14405157" target="_blank">June Developer Challenge on CAP Knowledge</A>. And don't forget: always submit your answer as a hash, on its own - read the <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge/ba-p/14405157#taking-part" target="_blank">Taking part</A> section of the intro post for more info. At the end of today, this question will be updated with links to further reading on this topic.</EM></P><P>Further info:</P><UL><LI>The new command was announced in the <A href="https://cap.cloud.sap/docs/releases/2026/feb26#query-mode-in-cds-repl" target="_blank" rel="nofollow noopener noreferrer">Query Mode in cds repl</A> section of the February 2026 release notes.</LI><LI>You can read more about this new mode in the <A href="https://cap.cloud.sap/docs/cds/cxl#trying-it-with-cds-repl" target="_blank" rel="nofollow noopener noreferrer">Trying it with cds repl</A> section of the CXL topic.</LI><LI>For an introduction to the cds REPL, see the blog post <A href="https://qmacro.org/blog/posts/2025/03/21/level-up-your-cap-skills-by-learning-how-to-use-the-cds-repl/" target="_blank" rel="nofollow noopener noreferrer">Level up your CAP skills by learning how to use the cds REPL</A>.</LI><LI>For a deeper dive into the cds REPL, with examples, see the blog post <A href="https://qmacro.org/blog/posts/2025/07/21/a-recap-intro-to-the-cds-repl/" target="_blank" rel="nofollow noopener noreferrer">A reCAP intro to the cds REPL</A>.</LI></UL> 2026-06-16T07:00:00.033000+02:00 https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge-analysis/bc-p/14419522#M542 Re: June Developer Challenge - CAP Knowledge - Analysis 2026-06-16T07:06:31.407000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>Hi <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/122807">@aelghannam</a>&nbsp;- you're welcome! It just means that you are not quite in sync with the mechanism that gathers the responses and produces the analysis (e.g. you only posted a response to last Friday's question yesterday). You're on the list now, as the mechanism has just been rerun (as I mentioned in this post - updated daily). Cheers and good work!</P> 2026-06-16T07:06:31.407000+02:00 https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge-analysis/bc-p/14419624#M552 Re: June Developer Challenge - CAP Knowledge - Analysis 2026-06-16T09:23:57.745000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/168423">@SachinArtani</a>&nbsp;if you had provided some more detail than "it failed" in the first place, I would have perhaps known you meant the OData service rather than the hashing API <span class="lia-unicode-emoji" title=":winking_face:">πŸ˜‰</span>&nbsp;</P><P>Generally OData service system query option $filter, especially when used with the eq operator, is case-sensitive, by design. See&nbsp;<A href="https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#sec_Equals" target="_blank" rel="nofollow noopener noreferrer">https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#sec_Equals</A>&nbsp;for some details, for example.&nbsp;</P><P>The OData $search system query option is case-insensitive, but the use cases for this are slightly different of course. That said, you could retrieve the data you seem to be after like this:</P><P><A href="https://developer-challenge-june-2026.cfapps.eu10.hana.ondemand.com/odata/v4/main/Responses?$search=sachinartani&amp;$expand=question" target="_blank" rel="nofollow noopener noreferrer">https://developer-challenge-june-2026.cfapps.eu10.hana.ondemand.com/odata/v4/main/Responses?$search=sachinartani&amp;$expand=question</A>&nbsp;</P><P>HTH</P> 2026-06-16T09:23:57.745000+02:00 https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge-analysis/bc-p/14420619#M575 Re: June Developer Challenge - CAP Knowledge - Analysis 2026-06-17T06:58:37.425000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>Excellent&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/168423">@SachinArtani</a>&nbsp;! I like that, thanks for sharing. I will use HTH even more now <span class="lia-unicode-emoji" title=":rocket:">πŸš€</span></P> 2026-06-17T06:58:37.425000+02:00 https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge-task-13-optional-cdl-keyword/ba-p/14420276 June Developer Challenge - CAP Knowledge - Task 13 - Optional CDL keyword 2026-06-17T07:00:00.034000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>When building our CDS model, we describe, amongst other things:</P><UL><LI>types</LI><LI>aspects</LI><LI>entities</LI><LI>services</LI></UL><P>The CDL for each of these objects is clear and simple. That's because of the intent behind the design of CDS as a whole, but also because there's a particular keyword that is optional in such definitions, and is usually omitted.</P><P>What is that keyword?</P><P><EM>This is a question from the <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge/ba-p/14405157" target="_blank">June Developer Challenge on CAP Knowledge</A>. And don't forget: always submit your answer as a hash, on its own - read the <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge/ba-p/14405157#taking-part" target="_blank">Taking part</A> section of the intro post for more info. At the end of today, this question will be updated with links to further reading on this topic.</EM></P><P>Further info:</P><UL><LI>The entire <A href="https://cap.cloud.sap/docs/cds/cdl" target="_blank" rel="nofollow noopener noreferrer">CDL</A> topic in Capire has various notes on how this keyword is optional.</LI></UL> 2026-06-17T07:00:00.034000+02:00 https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge-analysis/bc-p/14421379#M598 Re: June Developer Challenge - CAP Knowledge - Analysis 2026-06-17T17:58:09.987000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/39917">@SergioG_TX</a>&nbsp;thanks for asking. Others are doing that, and I don't see any harm in it. There's no prize, except the glory of learning <span class="lia-unicode-emoji" title=":slightly_smiling_face:">πŸ™‚</span></P> 2026-06-17T17:58:09.987000+02:00 https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge-task-14-change-tracking/ba-p/14421382 June Developer Challenge - CAP Knowledge - Task 14 - Change tracking 2026-06-18T07:00:00.025000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>In an earlier question in this challenge, we looked at the <CODE>managed</CODE> aspect in the context of common and reusable definitions. This aspect causes each entity to which it is assigned to gain four new elements thus:</P><PRE><CODE>createdAt : Timestamp @cds.on.insert : $now; createdBy : User @cds.on.insert : $user; modifiedAt : Timestamp @cds.on.insert : $now @cds.on.update : $now; modifiedBy : User @cds.on.insert : $user @cds.on.update : $user;</CODE></PRE><P>This is change tracking at a very simple level, and often is all that is required.</P><P>But when more capable change tracking facilities are needed, there is a plugin that can be employed, which provides out-of-the-box support for automated capturing, storing, and viewing of the change records of modelled entities.</P><P>All one has to do, beyond installing the plugin as a dependency, is to annotate the parts of the model for which we want to have changes tracked.</P><P>What is the name of the annotation?</P><P><EM>This is a question from the <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge/ba-p/14405157" target="_blank">June Developer Challenge on CAP Knowledge</A>. And don't forget: always submit your answer as a hash, on its own - read the <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge/ba-p/14405157#taking-part" target="_blank">Taking part</A> section of the intro post for more info. At the end of today, this question will be updated with links to further reading on this topic.</EM></P><P>Further info:</P><UL><LI>See the <A href="https://cap.cloud.sap/docs/plugins/#change-tracking" target="_blank" rel="nofollow noopener noreferrer">Change Tracking</A> section of the Plugins topic in Capire for an overview.</LI><LI>The <A href="https://github.com/cap-js/change-tracking" target="_blank" rel="nofollow noopener noreferrer">plugin source repository</A> on GitHub has a lot more detail.</LI></UL> 2026-06-18T07:00:00.025000+02:00 https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge-task-15-local-binding-registry/ba-p/14422189 June Developer Challenge - CAP Knowledge - Task 15 - Local binding registry 2026-06-19T07:00:00.138000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>When embracing local-first development and using <CODE>cds watch</CODE>, we're actually using a convenience shortcut for:</P><DIV class=""><PRE><CODE><SPAN><SPAN class="">cds</SPAN> serve all <SPAN class="">--with-mocks</SPAN> <SPAN class="">--in-memory</SPAN><SPAN class="">?</SPAN></SPAN></CODE></PRE></DIV><P>That <CODE>--with-mocks</CODE> option for <CODE>cds serve</CODE> is described thus:</P><PRE><CODE>--with-mocks Use this in combination with the variants serving multiple services. It starts in-process mock services for all required services configured in package.json#cds.requires, which don't have external bindings in the current process environment. Note that by default, this feature is disabled in production and must be enabled with configuration 'features.mocked_bindings=true'.</CODE></PRE><P>Details of services that are <EM>provided</EM> by such server processes (or servers involved explicitly via <CODE>cds mock</CODE>, which is essentially another convenience shortcut for <CODE>cds serve --mocked ...</CODE>) are written to a special binding file which is for local-development only.</P><P>This binding file, also referred to as the "registry", is also read by other local server processes which <EM>require</EM> services, to see what's already available.</P><P>Technically the use of the bindings file is from <CODE>--with-bindings</CODE> which is described thus:</P><PRE><CODE>--with-bindings Use this option in local tests, to have all services provided by a process registered with their physical urls in a temporary file. All required services are bound automatically upon bootstrapping. Option --with-mocks subsumes this option.</CODE></PRE><P>i.e. if <CODE>--with-mocks</CODE> is used, then <CODE>--with-bindings</CODE> is implicit.</P><P>We can tell that this registry is for local-development just by looking at the file's location and name. Its location is in the developer user's home directory (very un-cloud-like), and its name starts with a dot (<CODE>.</CODE>), indicating it's a <A href="https://en.wikipedia.org/wiki/Hidden_file_and_hidden_directory" target="_blank" rel="noopener nofollow noreferrer">hidden file</A>.</P><P>What is this file's name (don't include any directory prefix parts to it)?</P><P><EM>This is a question from the <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge/ba-p/14405157" target="_blank">June Developer Challenge on CAP Knowledge</A>. And don't forget: always submit your answer as a hash, on its own - read the <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge/ba-p/14405157#taking-part" target="_blank">Taking part</A> section of the intro post for more info. At the end of today, this question will be updated with links to further reading on this topic.</EM></P><P>Further info:</P><UL><LI>The <A href="https://cap.cloud.sap/docs/guides/services/consuming-services#run-local-with-mocks" target="_blank" rel="nofollow noopener noreferrer">Run Local with Mocks</A> section of the Consuming Services topic in Capire has some practical information on how this registry is used.</LI><LI>For reference, see the <A href="https://cap.cloud.sap/docs/guides/integration/reuse-and-compose#bindings-via-cds-watch" target="_blank" rel="nofollow noopener noreferrer">Automatic Bindings by cds watch</A> section of the Reuse and Compose topic in Capire.</LI></UL> 2026-06-19T07:00:00.138000+02:00 https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge-task-16-escaped-names/ba-p/14423893 June Developer Challenge - CAP Knowledge - Task 16 - Escaped names 2026-06-22T07:00:00.051000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>As in most contexts, there are some name restrictions in the underlying database systems, with regards to unusual or special characters, or reserved words. When you use names like this in your CDS models they are escaped when they're converted to the equivalent DDL, and in all queries sent to the database.</P><P>The names are escaped in the DDL by enclosing them in double quotes. Here's an example:</P><DIV class=""><PRE><CODE><SPAN><SPAN class="">CREATE</SPAN> <SPAN class="">TABLE</SPAN> BadNames (</SPAN> <SPAN> <SPAN class="">"a name"</SPAN> <SPAN class="">NVARCHAR</SPAN>(<SPAN class="">255</SPAN>),</SPAN> <SPAN> <SPAN class="">"drΓ΄le"</SPAN> <SPAN class="">NVARCHAR</SPAN>(<SPAN class="">255</SPAN>),</SPAN> <SPAN> <SPAN class="">"select"</SPAN> <SPAN class="">NVARCHAR</SPAN>(<SPAN class="">255</SPAN>),</SPAN> <SPAN> <SPAN class="">"group"</SPAN> <SPAN class="">NVARCHAR</SPAN>(<SPAN class="">255</SPAN>)</SPAN> <SPAN>);</SPAN></CODE></PRE></DIV><P>While it's not good practice to define element names like this, CDS allows for such definitions.</P><P>Take the first element in this DDL definition: <CODE>"a name"</CODE>. To express this name, which contains whitespace, in the CDS model, it would also need to be escaped. Not using double quotes as above, but using the CDS model convention.</P><P>In other words, here's what the CDS model source might have started out looking like:</P><PRE><CODE>entity BadNames { SOMETHING : String; }</CODE></PRE><P>But what would have needed to appear in place of the <CODE>SOMETHING</CODE> here?</P><P><EM>This is a question from the <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge/ba-p/14405157" target="_blank">June Developer Challenge on CAP Knowledge</A>. And don't forget: always submit your answer as a hash, on its own - read the <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge/ba-p/14405157#taking-part" target="_blank">Taking part</A> section of the intro post for more info. At the end of today, this question will be updated with links to further reading on this topic.</EM></P><P>Further info:</P><UL><LI>The <A href="https://cap.cloud.sap/docs/guides/databases/cdl-to-ddl#cdl-%E2%87%92-ddl-translation" target="_blank" rel="nofollow noopener noreferrer">CDL β‡’ DDL Translation</A> section of Capire's <A href="https://cap.cloud.sap/docs/guides/databases/cdl-to-ddl" target="_blank" rel="nofollow noopener noreferrer">CDL Compilation to Database-Specific DDLs</A> topic contains lots of interesting detail here, including a subsection on invalid names.</LI></UL> 2026-06-22T07:00:00.051000+02:00 https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge-task-17-schema-evolution-testing/ba-p/14424779 June Developer Challenge - CAP Knowledge - Task 17 - Schema evolution testing 2026-06-23T07:00:00.033000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>When thinking about schema evolution and starting to plan changes while still in development, the "drop-create" strategy is common.</P><P>The <CODE>cds deploy</CODE> command will generate the appropriate SQL/DDL statements to effect schema changes. Most commonly this command is run in the planning stages with an option to allow the to-be-executed SQL/DDL statements to be checked, but not executed.</P><P>What is that option?</P><P><EM>This is a question from the <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge/ba-p/14405157" target="_blank">June Developer Challenge on CAP Knowledge</A>. And don't forget: always submit your answer as a hash, on its own - read the <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge/ba-p/14405157#taking-part" target="_blank">Taking part</A> section of the intro post for more info. At the end of today, this question will be updated with links to further reading on this topic.</EM></P><P>Further info:</P><UL><LI>See the <A href="https://cap.cloud.sap/docs/guides/databases/schema-evolution" target="_blank" rel="nofollow noopener noreferrer">Schema Evolution</A> topic in Capire.</LI></UL> 2026-06-23T07:00:00.033000+02:00 https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge-task-18-rfc-for-uuids/ba-p/14425139 June Developer Challenge - CAP Knowledge - Task 18 - RFC for UUIDs 2026-06-24T07:00:00.021000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>The Internet Engineering Task Force (<A href="https://www.ietf.org/" target="_blank" rel="noopener nofollow noreferrer">IETF</A>) is the premier standards development organisation for the Internet. One of the ways that their work finds its way to the public in general and to engineers and techninians in particular is via documents, specifically RFCs (RFC stood originally for Requests For Comments). Each one is numbered and they describe fundamentals of the Internet, with RFCs ranging from core building blocks such as TCP/IP:</P><UL><LI><A href="https://www.rfc-editor.org/rfc/rfc793.html" target="_blank" rel="noopener nofollow noreferrer">RFC 793</A> Transmission Control Protocol (TCP)</LI><LI><A href="https://www.rfc-editor.org/rfc/rfc791.html" target="_blank" rel="noopener nofollow noreferrer">RFC 791</A> Internet Protocol (IP)</LI></UL><P>protocols that you and I deal with more closely and regularly, such as:</P><UL><LI><A href="https://datatracker.ietf.org/doc/html/rfc2616" target="_blank" rel="noopener nofollow noreferrer">RFC2616</A> HTTP/1.1</LI></UL><P>as well as somewhat more "unusual" protocols, such as <A href="https://datatracker.ietf.org/doc/html/rfc1149" target="_blank" rel="noopener nofollow noreferrer">RFC1149</A>, and even non-protocol defining RFCs such as:</P><UL><LI><A href="https://datatracker.ietf.org/doc/html/rfc2119" target="_blank" rel="noopener nofollow noreferrer">RFC2119</A> Key words for use in RFCs to Indicate Requirement Levels</LI></UL><P>which is as wonderful as it is useful and meta.</P><P>RFCs remain essential to how and why things work.</P><P>In CDS modelling there are many built-in types, such as <CODE>Boolean</CODE>, <CODE>Integer</CODE>, <CODE>DateTime</CODE> and more. One of these built-in types is <CODE>UUID</CODE>, the type behind the common aspect <CODE>cuid</CODE>, which is defined thus:</P><PRE><CODE>aspect cuid { key ID : UUID; }</CODE></PRE><P>This built-in type <CODE>UUID</CODE> is compliant with a specific standard described in an RFC document. What is that RFC document's number?</P><P><EM>This is a question from the <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge/ba-p/14405157" target="_blank">June Developer Challenge on CAP Knowledge</A>. And don't forget: always submit your answer as a hash, on its own - read the <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge/ba-p/14405157#taking-part" target="_blank">Taking part</A> section of the intro post for more info. At the end of today, this question will be updated with links to further reading on this topic.</EM></P><P>Further info:</P><UL><LI>The <A href="https://cap.cloud.sap/docs/cds/types" target="_blank" rel="nofollow noopener noreferrer">Core / Built-in Types</A> topic in Capire has the list of types and links to reuse types and aspects (which includes <CODE>cuid</CODE>) as well as how the types relate to e.g. OData and HANA types.</LI></UL> 2026-06-24T07:00:00.021000+02:00 https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge-task-19-cds-source-formatter/ba-p/14426199 June Developer Challenge - CAP Knowledge - Task 19 - CDS source formatter 2026-06-25T07:00:00.022000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>There is great support for CAP development in IDEs such as VS Code and IntelliJ. Moreover, because the editor features for CDS are made available in the form of a language server (using the Language Server Protocol or LSP), they can also be used in other IDEs and editors, such as Neovim.</P><P>The CDS language server can be installed globally with:</P><DIV class=""><PRE><CODE><SPAN><SPAN class="">npm</SPAN> i <SPAN class="">-g</SPAN> @sap/cds-lsp</SPAN></CODE></PRE></DIV><P>Why would you do this? Well, for one thing, this gives us a very useful command line tool that can be used to format CDS source.</P><P>What is that command line tool called (the name of the command itself)?</P><P><EM>This is a question from the <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge/ba-p/14405157" target="_blank">June Developer Challenge on CAP Knowledge</A>. And don't forget: always submit your answer as a hash, on its own - read the <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge/ba-p/14405157#taking-part" target="_blank">Taking part</A> section of the intro post for more info. At the end of today, this question will be updated with links to further reading on this topic.</EM></P><P>Further info:</P><UL><LI>The <A href="https://cap.cloud.sap/docs/tools/cds-editors" target="_blank" rel="nofollow noopener noreferrer">Editors and IDEs</A> topic in Capire has lots of information including a section on the CDS source formatter.</LI><LI>The blog post <A href="https://qmacro.org/blog/posts/2025/09/16/cds-source-formatting-and-readability/" target="_blank" rel="nofollow noopener noreferrer">CDS source formatting and readability</A> covers the CDS source formatter tool.</LI></UL> 2026-06-25T07:00:00.022000+02:00 https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge-task-19-cds-source-formatter/bc-p/14426959#M795 Re: June Developer Challenge - CAP Knowledge - Task 19 - CDS source formatter 2026-06-25T08:10:15.771000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/72">@Dan_Wroblewski</a>&nbsp;you are correct! Mea culpa. I've corrected the name to IntelliJ. Thanks!</P><P>On the question, I've added something to clarify*. Thanks also!</P><P><EM>*although I thought that since the "human" name was in the title of this question, plus there are too many potential variations for that, folks would work out that it wasn't that which was sought <span class="lia-unicode-emoji" title=":slightly_smiling_face:">πŸ™‚</span></EM></P> 2026-06-25T08:10:15.771000+02:00 https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge-task-20-compiler-messages/ba-p/14427183 June Developer Challenge - CAP Knowledge - Task 20 - Compiler messages 2026-06-26T07:00:00.017000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>The CDS compiler is a very capable mechanism and can advise and warn us if we present questionable design choices in our models. It can even refuse to continue in extreme circumstances.</P><P>Let's say we have a <CODE>Book</CODE> entity defined thus:</P><PRE><CODE>entity Book { key id : String; isbn : String; content : String; };</CODE></PRE><P>Then, in a service definition, we create a projection on that entity like this:</P><PRE><CODE>entity IsbnBook as projection on Book { *, isbn as id };</CODE></PRE><P>The questionable design choice here is that with the <CODE>isbn as id</CODE>, we're effectively overwriting the <CODE>id</CODE> element that we're including by means of the <CODE>*</CODE> wildcard.</P><P>The compiler will issue a message with a severity level of <CODE>Info</CODE> for this. What is the message identifier (it is a three word phrase where the words are joined by dashes (<CODE>-</CODE>)?</P><P><EM>This is a question from the <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge/ba-p/14405157" target="_blank">June Developer Challenge on CAP Knowledge</A>. And don't forget: always submit your answer as a hash, on its own - read the <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge/ba-p/14405157#taking-part" target="_blank">Taking part</A> section of the intro post for more info. At the end of today, this question will be updated with links to further reading on this topic.</EM></P> 2026-06-26T07:00:00.017000+02:00 https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge-summary/ba-p/14428866 June Developer Challenge - CAP Knowledge - Summary 2026-06-29T07:00:00.017000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>Well, it's the end of the month, which means time for a wrap up of <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge/ba-p/14405157" target="_self">the Developer Challenge we've just had</A>. It's been a lot of fun for us to create the questions and see how much you've all participated, and, from your comments, how much you've also enjoyed it. Thank you for taking part!</P><P>As you know, there are no prizes, the only reward is increased knowledge and understanding of a fundamentally important technology in the SAP developer universe. We'd love to hear from you (in comments to this post) what you thought, how you found the questions, whether you'd like to see something this again, and anything else that occurs to you.</P><P>Half way through the month, we published a brief analysis of your progress and success on the questions so far, and continued to update that on a daily basis. We've just run <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge-analysis/ba-p/14418398" target="_self">a final analysis update</A> today (Sunday 28 June), which should have given you all enough time to answer the final question which was published at the beginning of last Friday. We've added a extra column to the table to show the answers too.</P><P>&nbsp;</P><H3 id="toc-hId-1947418720">Facts, figures and heroes</H3><P>Over the <A href="https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge/ba-p/14405157#the-questions" target="_self">20 questions</A>&nbsp;you all submitted <STRONG>a total of 753 responses</STRONG>, which is fab! Thank you to everyone who did submit at least one response.</P><H4 id="toc-hId-1879987934">Bronze</H4><P>In fact, here's a list of what we're going to call "Bronze" winners - everyone who participated:</P><P>AakankshaWs AfshanAnsari Andrii Anusha2025 Caisi Chaimae_Chairi27 Dan_Wroblewski FlorianP1 GauravPhadnis Greltel Guru_Charan HarshPatelV Henning Ihor_Haranichev JFenris Jawaharch Joery Laco M-Uzi MatLakaemper MattHarding Mayank_Mittal8 MioYasutake MohamedAbdelghany NakulG NeelimaEmmani NiklausB PVSBPrasadK PrabhuDC RajeshOlive Raphael Rupesh_Kumar25 SSaiSanthosh SachinArtani SergioG_TX Sushakude Swathi_SAP_Philomath SyamsundarKarukola VishnAndr YLN Yogananda _Jakub_ aelghannam ajmaradiaga ankitsrivastav aryan-11 berkaydurmaz berkayergun cayotteRizing ditt_kalyan furkan5 hrushikeshraju_yerram juancarlos_dasilva kasch-code lidavidlee mhameister milan_10 mvaibhav nagarjundas_1994 omer_sakar parthasaradhi sarvesh_agarwal satya01 shotokka shubhamkar soheil_st soisses stickman_0x00 sudarshan_b tchaitanya tobiasz_h</P><P>(Sorry we're not able to tag you all, the blogging platform limits the number of users one can mention in a single post to just 20).</P><H4 id="toc-hId-1683474429">Silver</H4><P>There's a special subset of these participants who provided a response to every single question, well done and thank you for your perseverance and tenacity!</P><P>- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/168423">@SachinArtani</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/155578">@shotokka</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/152551">@kasch-code</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1873656">@Swathi_SAP_Philomath</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/11471">@MatLakaemper</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/621097">@parthasaradhi</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/72">@Dan_Wroblewski</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/162031">@Laco</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/107">@ajmaradiaga</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/2096780">@Anusha2025</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/11295">@VishnAndr</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/46923">@Joery</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/147448">@lidavidlee</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/3066">@Andrii</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/789">@MioYasutake</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1611048">@berkaydurmaz</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/139492">@mvaibhav</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/2274433">@Rupesh_Kumar25</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/2115025">@furkan5</a></P><H4 id="toc-hId-1486960924">Gold</H4><P>And there's an elite subset of the silver subset who not only provided a response to every single question, but got them all correct, amazing work, thank you and well done indeed! <span class="lia-unicode-emoji" title=":rocket:">πŸš€</span></P><P>- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/168423">@SachinArtani</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/155578">@shotokka</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/152551">@kasch-code</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/11471">@MatLakaemper</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/621097">@parthasaradhi</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/72">@Dan_Wroblewski</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/139492">@mvaibhav</a><BR />- <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/2115025">@furkan5</a></P><H3 id="toc-hId-1161364700">Wrapping up</H3><P>Well, that just about wraps it up for this month's Developer Challenge. We hope you had fun, and learned something. Let us know also in the comments what you think of the <A href="https://cap.cloud.sap/docs/" target="_self" rel="nofollow noopener noreferrer">CAP documentation</A>&nbsp;that you've been exploring and studying over the last few weeks. We (and the CAP documentation folks) would love to know.</P><P>We'll keep <A href="https://developer-challenge-june-2026.cfapps.eu10.hana.ondemand.com/" target="_self" rel="nofollow noopener noreferrer">the results OData v4 service</A> online and available for the next few days, in case you want to do some analysis of your own.&nbsp;</P><P>Thanks everyone!</P> 2026-06-29T07:00:00.017000+02:00 https://community.sap.com/t5/sap-cap-blog-posts/june-developer-challenge-cap-knowledge-summary/bc-p/14430570#M947 Re: June Developer Challenge - CAP Knowledge - Summary 2026-06-30T15:14:27.960000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>Hi&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/122807">@aelghannam</a>&nbsp;, done - <A href="https://developer-challenge-june-2026.cfapps.eu10.hana.ondemand.com/" target="_self" rel="nofollow noopener noreferrer">the OData service</A> is now updated (the rest of the stats will remain the same).</P> 2026-06-30T15:14:27.960000+02:00 https://community.sap.com/t5/sap-cap-blog-posts/july-developer-challenge-week-1-model-the-board/bc-p/14433310#M986 Re: 🐍 July Developer Challenge Week 1 β€” Model the Board 2026-07-04T15:09:04.440000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/2249643">@STI_STI</a>&nbsp;I like the way you added the @path annotation to the service to match the name in the URL path in Ajay's URL sample <span class="lia-unicode-emoji" title=":slightly_smiling_face:">πŸ™‚</span></P> 2026-07-04T15:09:04.440000+02:00 https://community.sap.com/t5/developer-news/sap-developer-news-july-9th-2026/ba-p/14436806 SAP Developer News, July 9th, 2026 2026-07-09T21:00:00.015000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <H2 id="toc-hId-1819199754"><div class="video-embed-center video-embed"><iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FrCaDZ93y1Kw%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DrCaDZ93y1Kw&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FrCaDZ93y1Kw%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="600" height="337" scrolling="no" title="WeAreDevelopers, cds 10, ABAP Cleaner, Code Connect streams, MCP Gateway, DYK25 | SAP Developer News" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture" allowfullscreen="true"></iframe></div></H2><H2 id="toc-hId-1622686249">ITEMS</H2><P><STRONG>Live from WeAreDevelopers</STRONG></P><P>- WeAreDevelopers World Congress <A href="https://www.wearedevelopers.com/world-congress" target="_blank" rel="noopener nofollow noreferrer">https://www.wearedevelopers.com/world-congress</A></P><P><STRONG>CAP June 2026 release (cds 10)</STRONG></P><P>- Release notes <A href="https://cap.cloud.sap/docs/releases/2026/jun26" target="_blank" rel="noopener nofollow noreferrer">https://cap.cloud.sap/docs/releases/2026/jun26</A></P><P><STRONG>ABAP Cleaner in VS Code!</STRONG></P><P>- <A href="https://marketplace.visualstudio.com/items?itemName=SAPOSS.abap-cleaner" target="_blank" rel="noopener nofollow noreferrer">https://marketplace.visualstudio.com/items?itemName=SAPOSS.abap-cleaner</A></P><P><STRONG>Live streams at Code Connect next week</STRONG></P><P>- Code Connect <A href="https://code-connect.dev/" target="_blank" rel="noopener nofollow noreferrer">https://code-connect.dev/</A><BR />- UI5con <A href="https://openui5.org/ui5con/" target="_blank" rel="noopener nofollow noreferrer">https://openui5.org/ui5con/</A><BR />- UI5con agenda <A href="https://openui5.org/ui5con/program.html" target="_blank" rel="noopener nofollow noreferrer">https://openui5.org/ui5con/program.html</A><BR />- UI5con 2026 Live from the Main Stage <A href="https://www.youtube.com/live/CMPudw4scSE" target="_blank" rel="noopener nofollow noreferrer">https://www.youtube.com/live/CMPudw4scSE</A><BR />- reCAP <A href="https://recap-conf.dev/" target="_blank" rel="noopener nofollow noreferrer">https://recap-conf.dev/</A><BR />- reCAP agenda <A href="https://recap-conf.dev/program.html" target="_blank" rel="noopener nofollow noreferrer">https://recap-conf.dev/program.html</A><BR />- reCAP Live from the Main Stage <A href="https://broadcast.sap.com/go/reCAP" target="_blank" rel="noopener noreferrer">https://broadcast.sap.com/go/reCAP</A><BR />- reCAP 2026 - Streaming Sidetrack <A href="https://teams.microsoft.com/meet/347149883889697?p=ZkR4erzGjpPRtZ6zJh" target="_blank" rel="noopener nofollow noreferrer">https://teams.microsoft.com/meet/347149883889697?p=ZkR4erzGjpPRtZ6zJh</A></P><P><STRONG>Additional CAP highlights and MCP Gateway</STRONG></P><P>- Building MCP Servers with SAP Integration Suite: What to Design, Not Just How to Connect <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/building-mcp-servers-with-sap-integration-suite-what-to-design-not-just-how/ba-p/14435261" target="_blank">https://community.sap.com/t5/technology-blog-posts-by-sap/building-mcp-servers-with-sap-integration-suite-what-to-design-not-just-how/ba-p/14435261</A><BR />- Design APIs and MCP servers <A href="https://help.sap.com/docs/integration-suite/isuite-integrations-and-apis/design-apis?locale=en-US" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/integration-suite/isuite-integrations-and-apis/design-apis?locale=en-US</A><BR />- Release calendar for SAP Integration Suite <A href="https://me.sap.com/notes/3418154" target="_blank" rel="noopener noreferrer">https://me.sap.com/notes/3418154</A></P><P><STRONG>Did You Know? #25 cds add test</STRONG></P><P>- The cds add command <A href="https://cap.cloud.sap/docs/tools/cds-cli#cds-add" target="_blank" rel="noopener nofollow noreferrer">https://cap.cloud.sap/docs/tools/cds-cli#cds-add</A></P><H2 id="toc-hId-1426172744">CHAPTER TITLES</H2><P>00:00 Intro<BR />00:07 Live from WeAreDevelopers<BR />02:16 CAP June 2026 release (cds 10)<BR />13:14 ABAP Cleaner in VS Code!<BR />14:37 Live streams at Code Connect next week<BR />15:05 Additional CAP highlights and MCP Gateway<BR />17:20 DYK #25 cds add test</P><H2 id="toc-hId-1229659239">TRANSCRIPT</H2><P>[Intro]<BR />This is the Developer News for July 9th 2026.</P><P>[Tom, Sheena, Shilpa, Witalij]<BR />Hi, we're coming to you this week from WeAreDevelopers conference in Berlin, which is a little bit of a difference for us developer advocates because we're actually mostly attending a conference instead of delivering one. So it's our opportunity to connect with other developers, particularly non-SAP developers from all around the world. I'm giving a session on Friday with Michael Ameling, where I'll be doing a preview of the new developers.sap.com that's all AI-powered - we'll show you more of in the coming weeks. What are the rest of you looking forward to?</P><P>Yeah we just now attended one session on Microsoft Fabric, it was really exciting, and we also got to know the latest advanced technologies that we can look forward to. So it was really exciting to be part of that session. The line was a little too long to get into the session.</P><P>That is the challenging part, to get into the sessions, but for me the interesting part is AI and agents because, it is not a surprise, but to be outside of the SAP ecosystem is what I'm interested in too, and get to learn more of what's happening outside of SAP.</P><P>So have you tried to find any sessions without AI or agents in the name?</P><P>No, all agents. I think that was the qualifier, probably. OK, and for me it's actually not the first time I'm attending this conference. I was here in 2019 and it is really good to be back here. This time SAP has a big presence here, we are actually one of the sponsors, we have our place on the show floor, we have our sessions as Thomas mentioned, he's going to do one with Michael Ameling but as well we have some other SAP colleagues delivering sessions based on the experience from their work, working with UI for example, and with user experience in this exciting AI era. So all in all, "no coffee, no code" but unfortunately the line for coffee is the longest one here, so if you don't see me coding this week, that's just because I cannot stand in this line and get my coffee.</P><P>[DJ]<BR />cds 10 is out! That is, the next major release of the SAP Cloud Application Programming Model, also known as cds 10, was published last week.</P><P>This particular major release marks many milestones and is packed full of goodness.</P><P>Within the limitations of these news items, I can only give a brief overview, and you should definitely head over to the release notes which are very readable and full of details.</P><P>Some of the features and highlights are marked as Alpha or Beta ... so please pay attention to these status badges when working through the content.</P><P>Now, like other releases, the notes for this release are organised into different categories. There's the main major release upgrade category of course, a set of important highlights, notes on changes and improvements for both the Node.js and Java runtimes, and some updates for multitenancy services as well.</P><P>So, let's start with the very essence of this major release - the upgrade and migration context, and what tht implies.</P><P>Each of the packages that make up the entire framework have had major release version upgrades.<BR />As the release notes say, don't mix old and new major versions. Instead, embrace change and try out the new cds upgrade tool which can help you.</P><P>The runtime support is also changing, with both Node.js and Java.</P><P>And before leaving this upgrade context, I must highlight the facilities that the CAP team have put together for this essential part of the software lifecycle - upgrades and migration. There's a new Migration Guide to help you get to cds 10 ... and a bleeding edge new 'cds upgrade' facility, in Alpha, to help with upgrades.</P><P>So next, let's have a look at some of the highlights, of which there are many in this release. Some of them are either in Alpha or Beta status, but they're there!</P><P>Let me enumerate them briefly. There's now support for aggregate data in hierarchies, useful for product catalogs, org charts, bills of materials and similar scenarios. It's available right now with the Java runtime, and support for Node.js is coming soon.</P><P>For VS Code users there's a new Project Explorer to help you visually navigate through your project and model's structures.</P><P>Now, while this has been hinted at before this advent of cds 10, there's a new protocol which I'm going to describe as "CAP native", and that's now available, and it's called HCQL - CQL conveyed over HTTP. Well suited for CAP-to-CAP integrations, and available just by adding an @hcql annotation, in the true CAP tradition of magic-made-simple.</P><P>There are early AI related goodies too, in the form of CAP-level (Calesi-style) agents, and also a CAP skills library, because, as we know, focusing on intent and best practice in development is essential.</P><P>There's a new Data Inspector, which comes in the form of a plugin and allows the controlled inspection of data in the entities exposed by your services.</P><P>Now, event queues in CAP have also been given lots of love, in the form of a new scheduling API, improved processing, and an overhaul of the documentation.</P><P>Now, last December we saw the first public Beta of the 'cds export' command which we can use to create API client packages from CDS service definitions. With this cds 10 release, that command is now generally available.</P><P>Now there are some more highlights in this cds 10 release, but my good friend and colleague Antonio is going to cover those in another news item in this news episode, so stay tuned!</P><P>Let me now turn to the Node.js runtime context where there are also plenty of items for us to celebrate.</P><P>First up, consolidated service APIs. What does that mean? Well, the generic CRUD (Create Read Update Delete) handler now returns the same shape of data for all write operations. That means app, db and HCQL-proxied remote services all look and behave the same way, which is great for uniform and minimised handler code variations.</P><P>Now, AI agents are great, but one thing they don't know much about is Fiori draft data. So working with active data has been simplified and consolidated - making it easier for everyone, us humans and our AI overlords, to work in a draft-first context.</P><P>A massive piece of work that the team has undertaken over the last months, culminating in what we have with cds 10, is a significant move towards a greater embrace of modern tools and native libraries. Very briefly - the testing framework Vitest is now used in favour of Jest, which will be abandoned longer term. ECMAScript Modules (that's ESM to you and me) is the official standardised system for packages and reuse, and CAP is now embracing that as the default module system. Third party dependencies are being dropped in favour of native or built-in alternatives. For example this calendar year already has seen a move to a Node-native SQLite driver (which replaces better-sqlite3) and to the Node-native Fetch API (which replaces Axios, and in development scenarios, also removes the need for the SAP Cloud SDK).</P><P>This work to embrace modern techniques, native libraries and the newest stable standards is fantastic. An important "side effect" is also something we can celebrate - a significantly reduced set of dependencies (and thus a smaller install footprint and code surface area).</P><P>Now last but certainly not least in the Node.js category is some news on the Telemetry plugin, which is now at version 2 after a major update which also brings support for OpenTelemetry SDK 2.0.</P><P>Next, let's look at the Java runtime category, which has now reached major version 5. Lots of new features, including, importantly, support for Spring Boot 4.</P><P>There are some new minimum versions of major dependencies that you need to take care of.</P><P>With CAP Java 5 there are some changes that are not backwards compatible (as in any major release), but the migration is made easier for us with a specific migration guide and OpenRewrite recipes for automated code adjustments.</P><P>Now, there are changes to CDS property defaults to align them with recommended settings for production use.</P><P>The API methods that were deprecated in the previous major release and marked as 'forRemoval' ... have now been removed.</P><P>CAP Java 5 now defaults to JDK 25, which is a long-term-support version. The SapMachine 25 JDK with the SAP Java buildpack is recommended.</P><P>With this new major CAP Java release, search is harmonised with both CAP Node.js and RAP, and by default uses the SAP HANA search syntax (for which there is now full support). Fuzzy search is also now enabled by default on SAP HANA, with improved support for UUIDs and large strings, and available in hierarchy queries.</P><P>Now, there's also much faster typed data access available. Instead of using a dynamic proxy to handle the underlying data map for accessor interfaces, it's now possible to have implementation classes generated. This resulting in up to 10 times the performance.</P><P>Previously, CAP Java used Apache's Olingo library for OData support. Following Olingo's retirement last year, there's now built-in support for OData, that's no mean feat! That of course also means fewer dependencies and it also brings improved performance.</P><P>There's also support for creating active versions of draft-enabled entities, similar to what we learned about earlier in the Node.js runtime context.</P><P>There are also plenty more features that come with CAP Java 5. Check them out in the release notes.</P><P>But to round out the release notes overview for this cds 10 version, there are a couple of points of note in the context of MTX services. First, there's now a stricter annotation validation for extensions. And second, migration support to go from <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/2302137">@SAP</a>/cds-mtx to <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/2302137">@SAP</a>/cds-mtxs has been removed.</P><P>That pretty much wraps up things for this June 2026 major release, congratulations to the entire CAP team for a huge set of new features and improvements. And don't forget to check out Antonio's item in this news episode for those other highlights.</P><P>[Rich]<BR />Hey friends, Rich Heilman here. I hope everyone is staying cool, staying out of the heat. Good news for ABAP developers this week. ABAP Cleaner is now available as a VS Code extension, bringing its powerful code formatting capabilities out of Eclipse and into the modern editor of choice for many developers. So, what does it do? ABAP Cleaner applies over 100 rules to your code with a single keyboard shortcut. Automatically cleaning up formatting, modernising syntax, and even flagging unused variables. The result is clean and consistent code across your entire team without anyone having to argue about style. You can run it as a quick one-shot format, or drop into interactive mode to choose exactly which rules apply to your codebase. If your team already has a configuration setup in Eclipse, you can import those rule variants directly. No need to start from scratch. The setup does a Java runtime and a bit of environment variable configuration, but once it's running, you get the same functionality that ABAP developers have relied on in ADT in Eclipse - now in a much lighter, faster editor. If you're doing ABAP development in VS Code, this one's worth installing. Check it out today.</P><P>[Ajay]<BR />Hello everyone. Code Connect is next week, from 13th to 16th July 2026. For all of you who cannot join us in person, there are live streams available for UI5con and reCAP, from the main stage. Please check out the agenda and streaming links available for UI5con and reCAP and join us online during the Code Connect event. Links to the live streams and agendas will be available in the description.</P><P>[Antonio]<BR />Β‘Hola, SAP Developers. As you already know, the June 2026 CAP release is huge. DJ has already shared many of the highlights and I just want to mention a couple more. There is a new AI plugin, in Alpha, which simplifies integration with SAP AI Core. It will automatically resolve service bindings, manage resource groups, and AI model deployments. And it provides a standard AI Core service to interact with AI Core programatically. The new Data Privacy plugin, in Beta, for Node.js, which provides out of the box integration with the SAP Data Privacy Integration Service. Based on the personal data and ILM annotations in the data model the plugin will automatically expose two endpoints that can be consumed by the service. Now, related to the integration space, CAP Node.js now supports the Event Mesh capability in SAP Integration Suite, as an alternative to the standalone SAP Event Mesh, meaning that you can now easily use it as an event broken in your CAP applications. There is the new MCP Protocol Adapter, which allows exposing existing CAP services to AI agents and LLM powered as just another protocol. Just install the plugin and annotate services with <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1914304">@McP</a>, et voila, your CAP service exposes MCP functionality. Extremely powerful and easy to implement. I already used it in a CAP service that I'm developing while I was getting familiar with the new feature of SAP Integration Suite. Yes, what we've all been waiting for - the new MCP Gateway is now available as part of Integration Suite. It is part of the new Integration Cell Runtime which is a cloud native runtime purposely built for designing, deploying and operating APIs and MCP servers. It is GA now and being rolled out in the Enhanced and Premium editions of SAP Integration Suite. Not just that, but it is also available in the BTP Trial environment. What are yoiu waiting for? Go check it out. Hasta luego!</P><P>[Ajay]<BR />Did you know that cds add does generate the best practices of the test implementation of your CAP service? One can rapidly create a sample CAP project with cds init bookshop --add sample. Run cds add test in the terminal to add test suite files for all the defined CAP services in your existing project. It creates the latest boilerplate files and structures required for you to get started with your test implementation in a jiffy. For each services it generates a sample test for the GET request for an entity and a test for any action defined in the service. This also adds the test dependencies to your project. It uses the Node test runner for the tests. Install your dependencies and just run npm t to execute your tests. The generated test implementation does need to be tweaked for the valid test data. CAP also provides a command npx cds test to mute the verbose server output and lets you focus only on the failing tests. Use -u to unmute the server output when you do not need them. Enjoy your CAP tests!</P><P>&nbsp;</P><P>&nbsp;</P> 2026-07-09T21:00:00.015000+02:00