https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/members/sap-champions/Martin-Pankraz.xml SAP Community - Martin Pankraz 2024-07-27T00:00:02.495435+00:00 python-feedgen Martin Pankraz in SAP Community https://community.sap.com/t5/application-development-discussions/abap-to-microsoft-ews/m-p/13589072#M2026320 Re: ABAP to Microsoft EWS 2024-01-31T11:51:01.349000+01:00 Martin-Pankraz https://community.sap.com/t5/user/viewprofilepage/user-id/143781 <P>Always good to hear back you were able to solve and how&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/213331">@jakob_steen-petersen</a>&nbsp;<span class="lia-unicode-emoji" title=":slightly_smiling_face:">🙂</span> did you consider using or at least getting inspired from the <A href="https://github.com/microsoft/ABAP-SDK-for-Azure" target="_blank" rel="noopener nofollow noreferrer">ABAP SDK for Azure</A> to integrate with Microsoft Graph API? If not, why?</P><P>Also want to make you aware we keep our docs for the support auth setup for Exchange Online and SAP <A href="https://learn.microsoft.com/en-us/azure/sap/workloads/exchange-online-integration-sap-email-outbound" target="_blank" rel="noopener nofollow noreferrer">here</A>.</P><P>KR Martin</P> 2024-01-31T11:51:01.349000+01:00 https://community.sap.com/t5/technology-q-a/re-how-to-connect-with-quot-microsoft-power-apps-quot-or-quot-micros/qaq-p/13621919/comment-id/4820065#M4820065 Re: How to connect with "Microsoft Power Apps" or "Micros... 2024-02-28T09:00:03.891000+01:00 Martin-Pankraz https://community.sap.com/t5/user/viewprofilepage/user-id/143781 <P>Hi&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/890321">@koide_yuya</a>,</P><P>PowerApps interactions triggered by Buttons etc will point at PowerAutomate flows. From there you are free to trigger iFlows on Integration Suite as you like using the plain http connector for instance (push-based scenario). On PowerAutomate you may also retrieve the info from your app or do additional pulls from Dataverse that you want to pass along to your iflow.</P><P>SAP Open Connectors would be needed for pull-based scenarios from your iFlow.</P><P>Let the community know what you decided in the end.</P><P>Cheers Martin</P> 2024-02-28T09:00:03.891000+01:00 https://community.sap.com/t5/technology-q-a/re-how-to-connect-with-quot-microsoft-power-apps-quot-or-quot-micros/qaq-p/13626803/comment-id/4820589#M4820589 Re: How to connect with "Microsoft Power Apps" or "Micros... 2024-03-04T11:41:56.119000+01:00 Martin-Pankraz https://community.sap.com/t5/user/viewprofilepage/user-id/143781 Yes, for the "push" you directly point at Integration Suite. Up to you if you need to front it with SAP APIM. For pull-based you may use the Dataverse Web API. That is plain OData and can be called with SAP's standard oData connector. No need for OpenConnectors. Alternatively, use Azure Data Factory to move the data from Dataverse to SAP 2024-03-04T11:41:56.119000+01:00 https://community.sap.com/t5/technology-blogs-by-members/open-your-sap-odata-apis-for-some-swagger-or-how-to-make-friends-with-the/bc-p/13627326#M166292 Re: Open your SAP OData APIs for some swagger – or how to make friends with the other kids from the 2024-03-04T17:10:29.904000+01:00 Martin-Pankraz https://community.sap.com/t5/user/viewprofilepage/user-id/143781 <P>Hey&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/157180">@papsoc</a>,</P><P><SPAN>In case your chosen CA is not “well-known”, you need to also&nbsp;</SPAN><A href="https://learn.microsoft.com/azure/api-management/api-management-howto-ca-certificates" target="_blank" rel="nofollow noopener noreferrer">upload the intermediary and root certificate to APIM</A><SPAN>.</SPAN>&nbsp;Have a look at my other <A href="https://community.sap.com/t5/technology-blogs-by-members/sap-btp-abap-environment-integration-journey-with-microsoft-part-2-using/ba-p/13559608" target="_blank">blog post</A> subsection "Add the pfx file to Azure API Management" for more details. Also verify your APIM tier. <A href="https://learn.microsoft.com/en-us/azure/api-management/api-management-howto-mutual-certificates-for-clients#prerequisites" target="_blank" rel="noopener nofollow noreferrer">Certificate-validation is not support in Consumption tier</A> for instance.</P><P>Let me know if that fixes your 401.</P><P>KR Martin</P> 2024-03-04T17:10:29.904000+01:00 https://community.sap.com/t5/technology-blogs-by-members/open-your-sap-odata-apis-for-some-swagger-or-how-to-make-friends-with-the/bc-p/13629392#M166320 Re: Open your SAP OData APIs for some swagger – or how to make friends with the other kids from the 2024-03-06T09:19:03.466000+01:00 Martin-Pankraz https://community.sap.com/t5/user/viewprofilepage/user-id/143781 <P>Hey&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/157180">@papsoc</a>,</P><P>1. Hard for me to tell from afar. You need to have the whole chain that sits on top of your client leaf certificate in C4C available in Azure APIM as CA certificate and the client cert for C4C on the "Certificates" section.</P><P>2. No won't work. How about you swap from Consumption to Developer tier? With <A href="https://azure.microsoft.com/free" target="_blank" rel="noopener nofollow noreferrer">Azure free credits</A> you will be able to perform your validation at no cost.</P><P>KR Martin</P> 2024-03-06T09:19:03.466000+01:00 https://community.sap.com/t5/human-capital-management-q-a/re-ias-is-mandatory-for-customers-with-microsoft-azure-s/qaq-p/13633394/comment-id/34047#M34047 Re: IAS is mandatory for customers with Microsoft Azure S... 2024-03-11T07:59:39.888000+01:00 Martin-Pankraz https://community.sap.com/t5/user/viewprofilepage/user-id/143781 We describe our best practices for the scenarios on the Microsoft docs here: <A href="https://learn.microsoft.com/en-us/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration" target="_blank" rel="nofollow noopener noreferrer">https://learn.microsoft.com/en-us/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration</A> 2024-03-11T07:59:39.888000+01:00 https://community.sap.com/t5/human-capital-management-q-a/re-ias-is-mandatory-for-customers-with-microsoft-azure-s/qaq-p/13633396/comment-id/34048#M34048 Re: IAS is mandatory for customers with Microsoft Azure S... 2024-03-11T08:01:10.336000+01:00 Martin-Pankraz https://community.sap.com/t5/user/viewprofilepage/user-id/143781 <P>We describe our best practices for the scenarios of integrating SAP IAS and Entra ID (formerly Azure AD) on the Microsoft docs here: <A href="https://learn.microsoft.com/en-us/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration" target="_blank" rel="noopener nofollow noreferrer">https://learn.microsoft.com/en-us/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration</A></P> 2024-03-11T08:01:10.336000+01:00 https://community.sap.com/t5/technology-q-a/re-sap-connector-for-net-framework-5-0-and-higher/qaq-p/13644548/comment-id/4822582#M4822582 Re: SAP Connector for .NET Framework 5.0 and higher 2024-03-20T16:09:51.541000+01:00 Martin-Pankraz https://community.sap.com/t5/user/viewprofilepage/user-id/143781 <P>Hi&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/158512">@KentP</a>,</P><P>SAP is tracking the item as influencing <A href="https://influence.sap.com/sap/ino/#/idea/287577/" target="_blank" rel="noopener noreferrer">request</A>. Engineering will make an update to give more clarity on timeline.</P><P>KR Martin</P> 2024-03-20T16:09:51.541000+01:00 https://community.sap.com/t5/technology-blogs-by-members/simplify-sso-with-microsoft-entra-id-azure-ad-sap-identity-authentication/bc-p/13646518#M166573 Re: Simplify SSO with Microsoft Entra ID (Azure AD) & SAP Identity Authentication Service 2024-03-22T08:56:16.855000+01:00 Martin-Pankraz https://community.sap.com/t5/user/viewprofilepage/user-id/143781 <P>Thanks for sharing&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/177565">@PolySonika</a>. I'd like to add the reference to the best-practices guide for Entra ID (formerly Azure AD) with SAP IAS. Find it on Microsoft Learn <A href="https://learn.microsoft.com/en-us/entra/fundamentals/scenario-azure-first-sap-identity-integration" target="_blank" rel="noopener nofollow noreferrer">here</A>.</P> 2024-03-22T08:56:16.855000+01:00 https://community.sap.com/t5/technology-blogs-by-members/sap-application-slow-after-microsoft-defender-was-installed-on-server/bc-p/13650873#M166642 Re: SAP application slow after Microsoft Defender was installed on server 2024-03-27T09:39:05.160000+01:00 Martin-Pankraz https://community.sap.com/t5/user/viewprofilepage/user-id/143781 <P><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/190522">@Syamkriz</a>&nbsp;Please have a look at Microsoft's dedicated guidance for Defender for Endpoint on SAP hosts:</P><P><A href="https://learn.microsoft.com/en-us/microsoft-365/security/defender-endpoint/mde-linux-deployment-on-sap" target="_blank" rel="noopener nofollow noreferrer">https://learn.microsoft.com/en-us/microsoft-365/security/defender-endpoint/mde-linux-deployment-on-sap</A></P><P><A href="https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/microsoft-defender-endpoint-mde-for-sap-applications-on-windows/ba-p/3912268" target="_blank" rel="noopener nofollow noreferrer">https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/microsoft-defender-endpoint-mde-for-sap-applications-on-windows/ba-p/3912268</A>&nbsp;</P> 2024-03-27T09:39:05.160000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/provision-users-from-microsoft-azure-ad-to-sap-cloud-identity-services/bc-p/13655389#M171361 Re: Provision users from Microsoft Azure AD to SAP Cloud Identity Services - Identity Authentication 2024-04-02T09:53:38.724000+02:00 Martin-Pankraz https://community.sap.com/t5/user/viewprofilepage/user-id/143781 <P>Hey&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/823618">@tskwin</a>,</P><P>Have a look at the <A href="https://learn.microsoft.com/en-us/entra/fundamentals/scenario-azure-first-sap-identity-integration" target="_blank" rel="noopener nofollow noreferrer">Microsoft learn page</A> for our recommendations on Entra ID with SAP IAS. Note on the side: Be aware SAP recommends <A href="https://community.sap.com/t5/technology-blogs-by-sap/preparing-for-sap-identity-management-s-end-of-maintenance-in-2027/ba-p/13596101" target="_blank">SAP IDM customers to migrate to Entra ID</A>. Meaning the already deep integration between both ecosystems will increase even more over time.</P><P>KR Martin</P> 2024-04-02T09:53:38.724000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/provision-users-from-microsoft-azure-ad-to-sap-cloud-identity-services/bc-p/13660041#M171473 Re: Provision users from Microsoft Azure AD to SAP Cloud Identity Services - Identity Authentication 2024-04-05T09:27:20.407000+02:00 Martin-Pankraz https://community.sap.com/t5/user/viewprofilepage/user-id/143781 <P>Hey&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/823618">@tskwin</a>,</P><P>not sure what your requirements are. If you need to synch groups you require SAP IPS. The mechanism described on our docs before is about mapping based on attributes like groups but actually re-creating them on the SAP side.</P><P>In general, like with any integration project, less redundancy and a single source of truth is beneficial.</P><P>KR Martin</P> 2024-04-05T09:27:20.407000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/single-sign-on-to-sap-cloud-integration-cpi-runtime-from-an-external/bc-p/13666514#M171635 Re: Single Sign On to SAP Cloud Integration (CPI runtime) from an external Identity Provider 2024-04-11T08:59:38.676000+02:00 Martin-Pankraz https://community.sap.com/t5/user/viewprofilepage/user-id/143781 <P>Thank you for sharing&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/216068">@vinayak_adkoli</a>! I am curious what scenarios require a people-based interactive authentication flow for CPI. Shouldn't this be solved on app layer rather than the iflow? SAP Principal Propagation would then be achieved through token exchange on CPI level.</P> 2024-04-11T08:59:38.676000+02:00 https://community.sap.com/t5/technology-blogs-by-members/it-has-never-been-easier-to-print-from-sap-with-microsoft-universal-print/ba-p/13672206 It has never been easier to print from SAP with Microsoft Universal Print 2024-04-16T17:06:26.850000+02:00 Martin-Pankraz https://community.sap.com/t5/user/viewprofilepage/user-id/143781 <TABLE border="1" width="100%"><TBODY><TR><TD width="100%"><span class="lia-unicode-emoji" title=":backhand_index_pointing_right:">👉🏿</span>back to<STRONG>&nbsp;</STRONG><SPAN><A href="https://learn.microsoft.com/azure/sap/workloads/universal-print-sap-frontend" target="_blank" rel="noopener nofollow noreferrer"><STRONG>Microsoft</STRONG></A></SPAN><SPAN><STRONG> Learn</STRONG></SPAN> or jump to <SPAN><A href="https://github.com/Azure/universal-print-for-sap-starter-pack" target="_blank" rel="noopener nofollow noreferrer">GitHub repos</A></SPAN>🧑🏽‍<span class="lia-unicode-emoji" title=":laptop_computer:">💻</span></TD></TR></TBODY></TABLE><P style=" text-align : justify; ">Dear community,</P><P style=" text-align : justify; ">Printing from SAP is rarely discussed with all the <a href="https://community.sap.com/t5/c-khhcw49343/SAP+S%25252F4HANA/pd-p/73554900100800000266" class="lia-product-mention" data-product="799-1">SAP S/4HANA</a>&nbsp;cloud migration chatter, AI bliss, and sustainability efforts to avoid printing at all (don’t print this blog post<span class="lia-unicode-emoji" title=":smiling_face_with_horns:">😈</span>). For some of you it is similarly mission critical, nevertheless.</P><P style=" text-align : justify; ">For instance, consider a manufacturer that needs to print and attach labels to their products before they leave the factory. In case of disruption delivery is halted! It can be equally bad as an ERP outage.</P><P style=" text-align : justify; ">Printer management and driver software maintenance for the different vendors are among the causes of headaches. Anyone emotionally attached to print servers<span class="lia-unicode-emoji" title=":sparkling_heart:">💖</span>? I hope not…</P><P style=" text-align : justify; ">Those days are gone now – you will see the future with cloud printing and <SPAN><A href="https://learn.microsoft.com/azure/sap/workloads/universal-print-sap-frontend" target="_blank" rel="noopener nofollow noreferrer">Microsoft Universal Print</A></SPAN> today! No more print servers!</P><P style=" text-align : justify; ">Crowd<span class="lia-unicode-emoji" title=":party_popper:">🎉</span>: Yes, and no more laser cartridge changes or replenishing paper stacks!</P><P style=" text-align : justify; "><EM>Don’t be ridiculous! Of course, you will still change cartridges and replenish paper! Till the robots come at least.</EM></P><P style=" text-align : justify; ">However, the drivers, print servers, and complicated setups are gone <span class="lia-unicode-emoji" title=":smiling_face_with_smiling_eyes:">😊</span>And yes, it works with RISE, GROW, Azure, other hyperscalers, on-premises, and even down in your dark cellar where the poor “Raspberry Pies” are ticking away legacy integrat<span class="lia-unicode-emoji" title=":mobile_phone:">📱</span> if they have Internet uplink.</P><P style=" text-align : justify; ">&nbsp;</P><H1 id="toc-hId-863440810">Enabling your SAP Business Users (Frontend Printing)</H1><P style=" text-align : justify; "><A href="https://help.sap.com/docs/SAP_NETWEAVER_750/290ce8983cbc4848a9d7b6f5e77491b9/4e96bc2a7e9e40fee10000000a421937.html" target="_blank" rel="noopener noreferrer">SAP front-end printing</A>&nbsp;sends an output to a printer available for the user on their front-end device. In other words, a printer accessible by the operating system. The same client computer runs SAP GUI, or a browser (Fiori, BTP apps, WebGUI, you name it). To use Universal Print, you need to have access to such printers.</P><UL><LI>Client OS with support for Universal Print</LI><LI>Add Universal Print printer to your Windows client</LI><LI>Able to print on Universal Print printer from OS</LI></UL><P style=" text-align : justify; ">See the&nbsp;<A href="https://learn.microsoft.com/en-us/universal-print/fundamentals/universal-print-getting-started#step-4-add-a-universal-print-printer-to-a-windows-device.md" target="_blank" rel="noopener nofollow noreferrer">Universal Print documentation</A>&nbsp;for details on these prerequisites.</P><P style=" text-align : justify; ">Find more details on the overall setup for SAP on the dedicated <A href="https://learn.microsoft.com/azure/sap/workloads/universal-print-sap-frontend" target="_blank" rel="noopener nofollow noreferrer">Microsoft Learn</A> page.</P><P style=" text-align : justify; ">&nbsp;</P><H1 id="toc-hId-666927305">Enabling unattended SAP processes (Backend Printing)</H1><P style=" text-align : justify; "><SPAN>SAP offers the standard OData service </SPAN><SPAN>as “Print Queue Item - Read (A2X)” to enable 3rd party integration with SAP Print Queues. You will see the term: Output Management Systems (OMS) being referenced on other SAP sources and docs entries.</SPAN></P><P style=" text-align : justify; "><SPAN>In collaboration with SAP SE the capabilities of the communication scenario <A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/0f69f8fb28ac4bf48d2b57b9637e81fa/1e39bb68bbda4c48af4a79d35f5837e0.html?version=latest" target="_blank" rel="noopener noreferrer">SAP_COM_0466</A> “Printing - Pull Integration” were made available to SAP NetWeaver SAP_BASIS releases 757 and upwards. Have a look at the <A href="https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/abennews-75.htm" target="_blank" rel="noopener noreferrer">SAP docs</A> to which ERP releases the components apply </SPAN><span class="lia-unicode-emoji" title=":smiling_face_with_smiling_eyes:">😊</span><SPAN>At the time of publishing this blog that would be S/4HANA 2022 and upwards.</SPAN></P><P style=" text-align : justify; ">See the SAP note “<SPAN><A href="https://me.sap.com/notes/3420465" target="_blank" rel="noopener noreferrer">3420465 – Print queues in on-premise systems</A></SPAN>” to learn more about how to enable on your own SAP system.</P><P style=" text-align : justify; ">Given the above preparations you are ready to integrate the SAP print queues with the <SPAN><A href="https://learn.microsoft.com/graph/api/resources/print?view=graph-rest-1.0" target="_blank" rel="noopener nofollow noreferrer">Microsoft Graph API</A></SPAN> that powers Microsoft Universal Print. To get you started we shipped an open-source project on <SPAN><A href="https://github.com/Azure/universal-print-for-sap-starter-pack" target="_blank" rel="noopener nofollow noreferrer">GitHub</A></SPAN>. For ease of use, and CI/CD best practices, the app is terraform enabled. But of course, you could also deploy manually if needed.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="fig.1 Architecture Overview" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132966iC33BB1C6608C5A22/image-size/large?v=v2&amp;px=999" role="button" title="Picture1.png" alt="fig.1 Architecture Overview" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">fig.1 Architecture Overview</span></span></P><P>&nbsp;</P><UL><LI><SPAN>Kick-off your SAP backend print process however you prefer with SAP standard means (print function on SAPGUI screens, Spool requests etc.). The simplest means for an integration test would be printing the ALV screen from transaction <STRONG>SP02</STRONG>. Find the print button and choose your new print queue as Output Device.</SPAN></LI></UL><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="fig.2 Screenshot of test print from SAP transaction SP02" style="width: 525px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97108i2FCE7B10597974AF/image-dimensions/525x496?v=v2" width="525" height="496" role="button" title="Picture0.png" alt="fig.2 Screenshot of test print from SAP transaction SP02" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">fig.2 Screenshot of test print from SAP transaction SP02</span></span></SPAN></P><P>&nbsp;</P><P style=" text-align : justify; "><EM><SPAN>Note on the side: The new output device of type “Q: print via print queue” can be maintained from transaction SPAD. Find the setting under “Access Method -&gt; Host Spool Access Method”.</SPAN></EM></P><P style=" text-align : justify; "><SPAN>On <a href="https://community.sap.com/t5/c-khhcw49343/SAP+S%25252F4HANA+Cloud+Public+Edition/pd-p/08e2a51b-1ce5-4367-8b33-4ae7e8b702e0" class="lia-product-mention" data-product="1199-1">SAP S/4HANA Cloud Public Edition</a>&nbsp;tenants that ship Fiori apps or don’t offer SAPGUI access anymore use the app “Maintain Print Queues” and trigger “Create Test Page</SPAN></P><P>&nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="fig.3 Screenshot of Fiori app &quot;Print Queue&quot; to trigger test page print" style="width: 531px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97110i2F8A0D7A5E7C659A/image-dimensions/531x388?v=v2" width="531" height="388" role="button" title="Picture2.png" alt="fig.3 Screenshot of Fiori app &quot;Print Queue&quot; to trigger test page print" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">fig.3 Screenshot of Fiori app "Print Queue" to trigger test page print</span></span></P><P>&nbsp;</P><UL><LI><SPAN>Our function app on Azure takes care of pulling the SAP print queue items, mapping the queues to your targeted Microsoft Universal Print cloud printer, securely managing the required credentials + identities, and handling robust upload of the print queue items to the cloud.</SPAN></LI><LI>Once your output device reports back to Universal Print, the app notifies the SAP print queue on NetWeaver about a successful print via OData again. This way the integration and status tracking work end-to-end.</LI></UL><P style=" text-align : justify; ">As a result, you will be greeted with a physical hard copy of a test page like this:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="fig.4 Screenshot of printed test page" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97112iEA188D9B958E29E7/image-size/medium?v=v2&amp;px=400" role="button" title="Picture3.png" alt="fig.4 Screenshot of printed test page" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">fig.4 Screenshot of printed test page</span></span></P><P>&nbsp;</P><P style=" text-align : justify; ">Depending on your needs, the Azure services can be injected into isolated private virtual networks next to the SAP system for instance. Use <SPAN><A href="https://learn.microsoft.com/de-de/azure/azure-arc/overview" target="_blank" rel="noopener nofollow noreferrer">Azure ARC</A></SPAN> to deploy on-premises or to other hyperscalers.</P><P style=" text-align : justify; ">Not too bad, huh? <span class="lia-unicode-emoji" title=":smiling_face_with_sunglasses:">😎</span></P><P style=" text-align : justify; ">Find the latest deployment instructions, SAP specific FAQ, and community discussion on our <SPAN><A href="https://github.com/Azure/universal-print-for-sap-starter-pack" target="_blank" rel="noopener nofollow noreferrer">GitHub repos</A></SPAN>. Your contributions are more than welcome!</P><P style=" text-align : justify; ">For general FAQ on Universal Print see <SPAN><A href="https://learn.microsoft.com/universal-print/fundamentals/universal-print-faqs" target="_blank" rel="noopener nofollow noreferrer">Microsoft Learn</A></SPAN>. In case you are looking to integrate special label printers have a look <SPAN><A href="https://learn.microsoft.com/universal-print/fundamentals/universal-print-label-printing" target="_blank" rel="noopener nofollow noreferrer">here</A></SPAN>.</P><P style=" text-align : justify; ">&nbsp;</P><H1 id="toc-hId-470413800">Thoughts on production readiness</H1><P style=" text-align : justify; ">Most <SPAN><A href="https://learn.microsoft.com/universal-print/fundamentals/universal-print-partner-integrations#universal-print-ready-printers" target="_blank" rel="noopener nofollow noreferrer">print device manufacturers</A></SPAN> already support Microsoft Universal Print. If they don’t yet, check Microsoft’s <SPAN><A href="https://learn.microsoft.com/universal-print/fundamentals/universal-print-connector-overview" target="_blank" rel="noopener nofollow noreferrer">Universal Print connector</A></SPAN> to make them compatible.</P><P style=" text-align : justify; ">Looking for front end printing for SAP on MacOS? Here you <SPAN><A href="https://learn.microsoft.com/universal-print/macos/universal-print-macos" target="_blank" rel="noopener nofollow noreferrer">go</A></SPAN>.</P><P style=" text-align : justify; ">Availability from SAP NetWeaver SAP_BASIS releases 757 and upwards ensures decent coverage for more recent SAP ECC and S/4HANA installations <span class="lia-unicode-emoji" title=":smiling_face_with_smiling_eyes:">😊</span></P><P style=" text-align : justify; ">Universal Print relies on the <SPAN><A href="https://learn.microsoft.com/graph/api/resources/print?view=graph-rest-1.0" target="_blank" rel="noopener nofollow noreferrer">Microsoft Graph API</A></SPAN> and the components involved in the integration use Azure PaaS services that power various mission critical workloads like O365 and M365 worldwide.</P><P style=" text-align : justify; ">See the latest info on SLA <SPAN><A href="https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services" target="_blank" rel="noopener nofollow noreferrer">here</A></SPAN>.</P><P style=" text-align : justify; ">You are all set for prime time with cloud printing with SAP<span class="lia-unicode-emoji" title=":rocket:">🚀</span></P><P style=" text-align : justify; ">&nbsp;</P><H1 id="toc-hId-273900295">Partner solutions</H1><P style=" text-align : justify; "><SPAN>SAP and Microsoft partners offer packaged solutions or even managed service offerings for SAP printing. See below initial list to get started.</SPAN></P><UL style=" text-align : justify; "><LI><SPAN><A href="https://www.blue-zone.io/en/products/dom-zone/" target="_blank" rel="noopener nofollow noreferrer">DOM-Zone</A> from BLUE-ZONE</SPAN></LI><LI><SPAN><A href="https://lp.all-for-one.com/de/managed-services/rise-one-en/index.html" target="_blank" rel="noopener nofollow noreferrer">RISE ONE</A> from&nbsp;All for One Group</SPAN></LI><LI><SPAN><A href="https://kangoolutions.com/microsoft-azure-universal-print-with-the-sap-cloud-integration/" target="_blank" rel="noopener nofollow noreferrer">Universal Print integration with SAP using SAP Cloud Integration</A> from Kangoolutions</SPAN></LI></UL><P style=" text-align : justify; "><SPAN>By no means is the list complete. Anyone else looking to be listed or referenced, please leave a comment, or contact me directly.</SPAN></P><P style=" text-align : justify; ">&nbsp;</P><H1 id="toc-hId-77386790">Final Words</H1><P style=" text-align : justify; ">That’s a wrap <span class="lia-unicode-emoji" title=":burrito:">🌯</span>you saw today how you can simplify your printing from SAP, reduce the device management overhead, and get rid of the need for print drivers.</P><P style=" text-align : justify; ">Cloud printing for SAP with Microsoft Universal print is applicable to your SAP Business Users (called frontend printing) from their own devices and browsers just as they are used to.</P><P style=" text-align : justify; ">For your SAP backend jobs and SAP’s standard OData API a community-driven open-source integration component is offered on <SPAN><A href="https://github.com/Azure/universal-print-for-sap-starter-pack" target="_blank" rel="noopener nofollow noreferrer">GitHub</A></SPAN>. Check the <SPAN><A href="https://azuremarketplace.microsoft.com/marketplace/apps" target="_blank" rel="noopener nofollow noreferrer">Azure marketplace</A></SPAN>, SAP store, and partner repositories for updates on partner offerings. Above list of partner solutions could get you started.</P><P style=" text-align : justify; "><SPAN>Let us know what you think and feel encouraged to participate in the community effor</SPAN><SPAN>t</SPAN><span class="lia-unicode-emoji" title=":raising_hands:">🙌</span><SPAN>.</SPAN></P><P style=" text-align : justify; "><SPAN>Partners are welcome to reach out to build a marketplace or managed offering.</SPAN></P><P style=" text-align : justify; ">&nbsp;</P><P style=" text-align : justify; ">Last but not least: thank you to&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/775507">@timo_straub1</a>&nbsp;and amazing team for the great collaboration<span class="lia-unicode-emoji" title=":folded_hands:">🙏</span></P><P style=" text-align : justify; ">&nbsp;</P><P style=" text-align : justify; ">Cheers</P><P style=" text-align : justify; ">Devansh and Martin</P> 2024-04-16T17:06:26.850000+02:00 https://community.sap.com/t5/technology-blogs-by-members/govern-sap-apis-living-in-various-api-management-gateways-in-a-single-place/ba-p/13682483 Govern SAP APIs living in various API Management gateways in a single place with Azure API Center 2024-04-26T12:33:48.591000+02:00 Martin-Pankraz https://community.sap.com/t5/user/viewprofilepage/user-id/143781 <TABLE border="1" width="100%"><TBODY><TR><TD width="100%"><P><EM>Find the GitHub repos associated with this post on Azure API Center </EM><SPAN><A href="https://github.com/Azure-Samples/azd-apic-sap/" target="_blank" rel="noopener nofollow noreferrer"><EM>here</EM></A></SPAN><EM>.</EM></P><P><EM><SPAN>Our engineering friends from SAP Integration Suite– in particular <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/194397">@Chaim_Bendelac</a>&nbsp; – published a nice “sister blog” on supporting Azure API Management with the API Management capability of SAP Integration Suite </SPAN></EM><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/supporting-multiple-api-gateways-with-sap-api-management-using-azure-api/ba-p/13680433" target="_blank"><EM>here</EM></A><EM>.</EM></SPAN></P></TD></TR></TBODY></TABLE><P><SPAN>Dear community,</SPAN></P><P><SPAN>Many of you are heavily invested in APIs regarding your SAP ecosystem and the rest of your IT real estate. Given the integration specialization in the SAP space companies decide to use more than one integration tool to cater for SAP and non-SAP integrations. <A href="https://www.gartner.com/en/documents/3968032" target="_blank" rel="noopener nofollow noreferrer">Gartner</A> even says that 75% will use at least two different ones. For many of you that means SAP Integration Suite plus one for non-SAP.</SPAN></P><P><SPAN>Due to the fast-paced growth of APIs within organizations, inventory, governance, security, and management cannot keep up. The resulting fragmentation and inconsistency lead to adoption challenges, project delays, and security risks. Postman’s <A href="https://www.postman.com/state-of-api/executing-on-apis/#frequency-of-api-security-incidents" target="_blank" rel="noopener nofollow noreferrer">State of APIs report 2023</A> shows that API security incidents happen frequently.</SPAN></P><P><SPAN>These challenges are summed up under the term “API Sprawl” by the industry. Beware the API sprawl monster is upon you!</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="fig.1 Illustration of API Sprawl challenge" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/101890i296B6772C9A5260E/image-size/medium?v=v2&amp;px=400" role="button" title="_34e58609-ed75-4d35-b822-969302c0ed9c.jpg" alt="fig.1 Illustration of API Sprawl challenge" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">fig.1 Illustration of API Sprawl challenge</span></span></SPAN></P><P><STRONG>Key to survival is automatic discovery</STRONG><SPAN> of available APIs and a single place to enforce guidelines from, or at least know these unmanaged APIs exist in your estate. Forgotten APIs are low hanging fruit for attackers. To drive home that argument: “Improper Inventory Management” made the <A href="https://owasp.org/API-Security/editions/2023/en/0xa9-improper-inventory-management/" target="_blank" rel="noopener nofollow noreferrer">OWASP top 10 list for API Security</A> in 2023.</SPAN></P><P><SPAN>Besides that on the human side of things: Which developer likes to develop duplicate functionality just because of the lack of shared API inventory to discover existing stuff?</SPAN></P><P><SPAN>The API Sprawl monster</SPAN>🦖<SPAN> much hungry! “Nomnom nomnom more food, yes more food!”.</SPAN></P><P><SPAN>Azure API Center embarked on the journey of taming the monster.</SPAN></P><P>&nbsp;</P><H1 id="toc-hId-864366498">What API solutions can be registered to Azure API Center?</H1><P><SPAN>Azure API Center applies to any API and any API management solution out there. Always remember that API Center is not an API Gateway! It doesn’t expose the endpoints or apply policies to them. That stays with the API Management provider. API Center makes them discoverable and allows decorating APIs with additional info to improve governance.</SPAN></P><P><SPAN>Let that sink in.</SPAN></P><P><SPAN>My colleagues are building integrated experiences for the most interesting API and integration tool providers. However, API-based registration in API Center will always be possible.</SPAN></P><P><SPAN>Get it? APIs to register APIs to register APIs ... yah maybe to complicated for a joke.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="fig.2 Azure API Center solution coverage overview" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/101888i27D6FD5DB73C6530/image-size/large?v=v2&amp;px=999" role="button" title="apic-overview.png" alt="fig.2 Azure API Center solution coverage overview" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">fig.2 Azure API Center solution coverage overview</span></span></SPAN></P><P><SPAN>The focus of this blog post will be on inventorying APIs hosted by the API Management capability of SAP Integration Suite to mitigate SAP API sprawl. However, the approach described is applicable to all the other SAP APIs out there hosted on SAP Gateway, SAP Graph, SAP CAP, SAP RAP, CloudFoundry, Kyma, etc. too.</SPAN></P><P><SPAN>Another prominent SAP service would be SAP Cloud Integration (formerly CPI – Cloud Platform Integration). Many of you expose APIs internally or to business partners through SAP integration flows without fronting them with an API Management solution – you know who you are </SPAN><span class="lia-unicode-emoji" title=":winking_face:">😉</span><SPAN>.</SPAN><SPAN> Those can be registered too. Unfortunately, there is no built-in option to retrieve the definition of such an endpoint. You may generate an API definition for your http trigger using payload samples for instance. I found <A href="https://gist.github.com/0xdevalias/5fecf0db3bd9cc7465e42616061e1ab0" target="_blank" rel="noopener nofollow noreferrer">this repo</A> useful to get an overview on how to generate OpenAPI definitions from JSON payloads.</SPAN></P><P><SPAN>Even if you don’t, putting the available metadata on the Azure API Center inventory still improves discoverability and enterprise-wide governance by magnitudes.</SPAN></P><P>But now on to SAP API Management.</P><P>&nbsp;</P><H1 id="toc-hId-667852993">Automagically registering SAP API Management APIs on Azure API Center</H1><P>Our starting point is the SAP BTP service <STRONG>apimanagement-devportal</STRONG>. Check SAP’s docs on the setup process <SPAN><A href="https://help.sap.com/docs/integration-suite/sap-integration-suite/api-access-plan-for-api-business-hub-enterprise" target="_blank" rel="noopener noreferrer">here</A>. Make sure you don’t mistakenly choose apimanagement-apiportal.</SPAN></P><P>The API “<SPAN><A href="https://api.sap.com/api/DevPortal_DiscoveryService_CF/resource/APIs" target="_blank" rel="noopener noreferrer">API Business Hub Enterprise - Discovery Service (CF)</A>” enables querying all available APIs hosted on SAP API Management on that subaccount. It holds info about their OpenAPI definitions.</SPAN></P><P><SPAN>Authenticate on the service with any of the <A href="https://help.sap.com/docs/sap-api-management/sap-api-management/api-access-plan-for-api-business-hub-enterprise?version=Cloud#create-a-service-key" target="_blank" rel="noopener noreferrer">supported authentication mechanisms</A>. I chose OAuth2 client credentials grant (instance secret – without payload).</SPAN></P><P><SPAN>See below response from “/apidiscovery/v1/apis” from my SAP BTP sandbox environment. Pay attention to the attributes of “apiDefinitions” and values for “oas-json”.</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-json"><code>{ "@odata.context": "$metadata#apis", "value": [ { "name": "GWSAMPLE_BASIC", "title": "GWSAMPLE_BASIC", "version": "1", "lastUpdated": "2024-01-24", "releaseStatus": "PUBLIC", "protocol": "ODATAV2", "entryPoints": [ { "name": "GWSAMPLE_BASIC", "type": "PROD", "url": "https://msftapim.test.apimanagement.eu10.hana.ondemand.com:443/GWSAMPLE_BASIC" } ], "apiDefinitions": [ { "type": "oas-json", "url": "https://eu10devportal.cfapps.eu10.hana.ondemand.com/odata/1.0/data.svc/APIMgmt.APIResourceDocumentations('2797A5F5-E18A-4FCC-826A-C833845303F5')/content/$value" }, { "type": "edmx", "url": "https://msftapim.test.apimanagement.eu10.hana.ondemand.com:443/GWSAMPLE_BASIC/$metadata" } ] }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><SPAN>For your convenience we have provided a <A href="https://github.com/Azure-Samples/azd-apic-sap/" target="_blank" rel="noopener nofollow noreferrer">sample repo</A> that runs Infrastructure-as-Code scripting to register the SAP APIs using their OpenAPI definitions as highlighted above. On each SAP API definition we execute registration requests on Azure API Center.</SPAN></P><P><SPAN>You may also use Postman, or SAP Build Process Automation etc. to execute the REST API calls if you prefer. Find our collection <A href="https://github.com/Azure-Samples/azd-apic-sap/blob/main/sap-apim-scan.http" target="_blank" rel="noopener nofollow noreferrer">here</A>.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="fig.3 Flow of automated API registration in Azure API Center" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/101894i6B0E80481BFFF330/image-size/large?v=v2&amp;px=999" role="button" title="apic-register-flow.png" alt="fig.3 Flow of automated API registration in Azure API Center" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">fig.3 Flow of automated API registration in Azure API Center</span></span></SPAN></P><H1 id="toc-hId-471339488">Discover all your APIs where you code – see VS Code and GitHub Copilot in action</H1><P><SPAN>We developers like to stay within our flow. So, having the API inventory available at my fingertips in VSCode is a good step into that direction. Also generating http requests to poke around the service and API clients is nice </SPAN><span class="lia-unicode-emoji" title=":smiling_face_with_sunglasses:">😎</span><SPAN><A href="https://github.com/microsoft/kiota" target="_blank" rel="noopener nofollow noreferrer">Kiota</A></SPAN> supports a multitude of languages for SDK generation.</P><P><SPAN>To get that going install the <A href="https://learn.microsoft.com/azure/api-center/use-vscode-extension" target="_blank" rel="noopener nofollow noreferrer">Azure API Center portal VSCode extension</A>.</SPAN></P><P><SPAN><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%2F62X0NALedCc%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D62X0NALedCc&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F62X0NALedCc%2Fhqdefault.jpg&amp;key=b0d40caa4f094c68be7c29880b16f56e&amp;type=text%2Fhtml&amp;schema=youtube" width="400" height="225" scrolling="no" title="Introducing the VS Code extension for Azure API Center" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe></div></SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="fig.4 Screenshot of VSCode extension with example OpenAPI definition" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/101895i0F90ED42F7A3F97B/image-size/large?v=v2&amp;px=999" role="button" title="apic-vsc-ext.png" alt="fig.4 Screenshot of VSCode extension with example OpenAPI definition" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">fig.4 Screenshot of VSCode extension with example OpenAPI definition</span></span></SPAN></P><P><SPAN>Please note that the authorize button (and respective authentication scheme) on the OpenAPI definition explorer is only available if present on the definition file. It looks like this for Basic Auth:</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="fig.5 Screenshot of auth definition in example OpenAPI spec for SAP OData service" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/101896i185F2B5F860C6AF7/image-size/medium?v=v2&amp;px=400" role="button" title="apic-vsc-ext1.png" alt="fig.5 Screenshot of auth definition in example OpenAPI spec for SAP OData service" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">fig.5 Screenshot of auth definition in example OpenAPI spec for SAP OData service</span></span></SPAN></P><P>W<SPAN>hen using the http file and the <A href="https://marketplace.visualstudio.com/items?itemName=humao.rest-client" target="_blank" rel="noopener nofollow noreferrer">REST client extension</A> of your choice, you may simply provide the authentication header with Bearer token etc.</SPAN></P><P><SPAN>Next to the Azure API Center extension view before, you can also use <A href="https://learn.microsoft.com/azure/api-center/use-vscode-extension-copilot" target="_blank" rel="noopener nofollow noreferrer">GitHub Copilot Chat</A> to query available APIs from API Center. See <A href="https://learn.microsoft.com/azure/api-center/use-vscode-extension-copilot#search-for-apis-using-github-copilot-chat" target="_blank" rel="noopener nofollow noreferrer">Microsoft Learn</A> for more samples. You may search for APIs by key words like so:</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-bash"><code>@apicenter /search business-partner</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><SPAN>Cherry on the cake </SPAN><span class="lia-unicode-emoji" title=":shortcake:">🍰</span>is the <SPAN><A href="https://learn.microsoft.com/azure/api-center/enable-api-center-portal" target="_blank" rel="noopener nofollow noreferrer">API Center portal</A></SPAN> for the classic developer portal experience across your whole registered API inventory wherever that is.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="fig.6 Screenshot of Azure API Center portal API inventory view" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/101898iFEE25F515A582F66/image-size/large?v=v2&amp;px=999" role="button" title="apic-portal.png" alt="fig.6 Screenshot of Azure API Center portal API inventory view" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">fig.6 Screenshot of Azure API Center portal API inventory view</span></span></P><P><SPAN>So far so good on registering APIs and working off the info their definitions provide. But how about governance? I know how desperately everyone wants to plaster cost centers, line-of-business info, and security labels on your interfaces. </SPAN><span class="lia-unicode-emoji" title=":smirking_face:">😏</span></P><P>&nbsp;</P><H1 id="toc-hId-274825983">Enforced API metadata is your second line of defense against API sprawl</H1><P><SPAN>In addition to simply registering APIs you may add custom properties to the object on Azure API Center. So, even if the info is not present on the API itself you can still govern it from Azure. See below sample that I created from the <A href="https://learn.microsoft.com/azure/api-center/add-metadata-properties" target="_blank" rel="noopener nofollow noreferrer">Microsoft Learn tutorial</A>.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="fig.7 Screenshot of Azure API Center metadata maintenance view" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/101899i08A674038B335754/image-size/large?v=v2&amp;px=999" role="button" title="apic-custom-props.png" alt="fig.7 Screenshot of Azure API Center metadata maintenance view" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">fig.7 Screenshot of Azure API Center metadata maintenance view</span></span></P><P><SPAN>Knowing which APIs are public facing is useful, isn’t it?</SPAN></P><P><SPAN>For everyone looking for more sophisticated security with less human error surface, have a look at <A href="https://learn.microsoft.com/azure/defender-for-cloud/defender-for-apis-introduction" target="_blank" rel="noopener nofollow noreferrer">Defender for APIs</A>. I like the alert rule for “un-authenticated APIs” and disabling endpoints that were not used in the past 60 days most – wait what? Those exist out there in the wild west of SAP on the Internet? </SPAN><span class="lia-unicode-emoji" title=":astonished_face:">😲</span>See the open-source automatic remediations repos <SPAN><A href="https://github.com/Azure/Microsoft-Defender-for-Cloud/tree/main/Workflow%20automation/Defender%20for%20API" target="_blank" rel="noopener nofollow noreferrer">here</A></SPAN> to mitigate for Azure API Management.</P><P>Defender for API integration with <SPAN><A href="https://learn.microsoft.com/azure/defender-for-cloud/onboarding-guide-42crunch" target="_blank" rel="noopener nofollow noreferrer">42Crunch</A></SPAN> brings API security testing and hardening to your CI/CD pipeline.</P><P>&nbsp;</P><H1 id="toc-hId-78312478">API Linting gets you to the next level</H1><P><SPAN>OK, now let’s look at API style guide compliance. Is everyone playing by your rules? How do you make sure developers notice violations already during design phase rather than at later stages of deployment, release, or even months after the fact when audited?</SPAN></P><P><SPAN>Good automatic <A href="https://thenewstack.io/improve-the-quality-of-your-apis-with-spectral-linting/" target="_blank" rel="noopener nofollow noreferrer">API linting</A> creates much less hassle for everyone in the long run, less cost to fix API definitions after the fact, improved security posture, and a more rewarding experience for the people involved. See below video on the setup of the linting function for OpenAPI using <A href="https://github.com/stoplightio/spectral/blob/develop/docs/reference/openapi-rules.md" target="_blank" rel="noopener nofollow noreferrer">Spectral linting engine</A>.</SPAN></P><P><SPAN>Anyone aware of a great OData linter and would be curious to explore? Please share!</SPAN></P><P><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%2Fm0XATQaVhxA%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dm0XATQaVhxA&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fm0XATQaVhxA%2Fhqdefault.jpg&amp;key=b0d40caa4f094c68be7c29880b16f56e&amp;type=text%2Fhtml&amp;schema=youtube" width="400" height="225" scrolling="no" title="Mastering API Governance with Azure API Center" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe></div></P><P><SPAN>Get more details on API Linting for Azure API Center from <A href="https://learn.microsoft.com/azure/api-center/enable-api-analysis-linting?tabs=portal" target="_blank" rel="noopener nofollow noreferrer">this Microsoft Learn article</A>.</SPAN></P><P>&nbsp;</P><H1 id="toc-hId--118201027">Thoughts on production readiness</H1><P><SPAN>Azure API Center is in public preview but due for General Availability with the next wave of announcements, so completely ready for prime time. The same is true for the VS Code extensions and APIs used to orchestrate the integration between SAP API Management and Azure.</SPAN></P><P><SPAN>Intentionally registering APIs from SAP to Azure API Center improves API inventory management by magnitudes. However, shadow inventory thrives in places you don’t actively look. To mitigate even more effectively the team is building automated discovery from your GitHub org, Azure DevOps, and other popular sources.</SPAN></P><P><SPAN><A href="https://marketplace.visualstudio.com/items?itemName=SAPSE.sap-ux-fiori-tools-extension-pack" target="_blank" rel="noopener nofollow noreferrer">SAP Fiori tools</A> on VSCode provided by SAP SE enable usage of the approach described in this blog out of the box. The same is true for <A href="https://developers.sap.com/tutorials/btp-app-prepare-dev-environment-cap.html" target="_blank" rel="noopener noreferrer">SAP CAP development</A> in VSCode.</SPAN></P><P>&nbsp;</P><H1 id="toc-hId--314714532">Final words</H1><P><SPAN>That’s a wrap</SPAN><span class="lia-unicode-emoji" title=":burrito:">🌯</span>. You saw today how you can effectively <STRONG>counter API sprawl</STRONG> and its negative side effects that put your APIs and organizations at risk. A primary means to achieve that is <STRONG>creating a central API inventory </STRONG>hosted on all the different API Management solutions out there <STRONG>with Azure API Center</STRONG>.</P><P>This blog showed how to achieve that using the API Management capability of SAP Integration Suite as an example.</P><P>Furthermore, you learned about steps to improve API governance with custom properties and API linting. Eventually, you understood the difference between Azure API Center and an API Gateway.</P><P>Find the GitHub repos associated with this post <SPAN><A href="https://github.com/Azure-Samples/azd-apic-sap/" target="_blank" rel="noopener nofollow noreferrer">here</A></SPAN>. It gets you started in no time.</P><P>Big #Kudos to <SPAN><A href="https://www.linkedin.com/in/pascalvdheiden/" target="_blank" rel="noopener nofollow noreferrer">Pascal van der Heiden</A></SPAN> – my brother in crime on this effort. And of course, last but not least to&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/8446">@UdoPaltzer</a>&nbsp;and <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/216068">@vinayak_adkoli</a>&nbsp;for the great collaboration! <span class="lia-unicode-emoji" title=":raising_hands:">🙌</span></P><P>Anyone curious to tap their toe into the waters where the API sprawl monster 🦖 lives, just reach out to me and Chaim or leave a comment.</P><P>Cheers</P><P>Martin</P> 2024-04-26T12:33:48.591000+02:00 https://community.sap.com/t5/technology-blogs-by-members/govern-sap-apis-living-in-various-api-management-gateways-in-a-single-place/bc-p/13700868#M167481 Re: Govern SAP APIs living in various API Management gateways in a single place with Azure API Cente 2024-05-14T14:52:23.677000+02:00 Martin-Pankraz https://community.sap.com/t5/user/viewprofilepage/user-id/143781 <P><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/47313">@saurabhkumbhare</a>&nbsp;API Center went GA on the 6th of May:&nbsp;<A href="https://azure.microsoft.com/en-us/updates/general-availability-azure-api-center/" target="_blank" rel="nofollow noopener noreferrer">https://azure.microsoft.com/en-us/updates/general-availability-azure-api-center/</A></P> 2024-05-14T14:52:23.677000+02:00 https://community.sap.com/t5/technology-blogs-by-members/steps-to-access-azure-blob-storage-via-rest-api-from-sap-cpi-using-azure/bc-p/13708869#M167621 Re: Steps to access Azure Blob Storage via REST API from SAP CPI using Azure Storage Adapter and SAP 2024-05-22T09:11:36.362000+02:00 Martin-Pankraz https://community.sap.com/t5/user/viewprofilepage/user-id/143781 <P>Hi&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1385713">@Shemy</a>,</P><P>What is the reason you want to use http instead of AzureStorage adapter?</P><P>The blog above also described the needed parts for http. Find the official API reference <A href="https://learn.microsoft.com/en-us/rest/api/storageservices/" target="_blank" rel="noopener nofollow noreferrer">here</A>.</P><P>KR Martin</P> 2024-05-22T09:11:36.362000+02:00 https://community.sap.com/t5/technology-q-a/re-authenticating-an-api-using-saml-assertion-in-sap-api/qaq-p/13715415/comment-id/4831114#M4831114 Re: Authenticating an API using SAML assertion in SAP API... 2024-05-29T08:08:44.612000+02:00 Martin-Pankraz https://community.sap.com/t5/user/viewprofilepage/user-id/143781 <P>Hi&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/185435">@giridhar_vegi</a>,</P><P>when generating the SAML assertion yourself in APIM you are essentially declaring it your identity provider. That is a severe security risk. Any error or exploitable gap would to lead to user compromise. Identity Providers are purpose-built for this. I am assuming you are bypassing another challenge by looking to implement this yourself. Feel free to share more, so the community can advise on solving the underlying challenge.</P><P>If you must explore further have a look at <A href="https://www.npmjs.com/package/saml2-js" target="_blank" rel="noopener nofollow noreferrer">this javascript library</A>&nbsp;and this <A href="https://www.googlecloudcommunity.com/gc/Apigee/How-do-I-use-the-SAML-policy-to-generate-a-SAML-assertion-with-a/m-p/65684" target="_blank" rel="noopener nofollow noreferrer">ApiGee article</A> how to generate your own in SAP APIM. Make sure to lock down access tightly. Either way, I highly discourage this.</P><P>KR Martin</P> 2024-05-29T08:08:44.612000+02:00 https://community.sap.com/t5/technology-q-a/re-sap-ai-core-azure-blob-storage-sas-token-response-403/qaq-p/13721668/comment-id/4831893#M4831893 Re: SAP AI Core Azure Blob storage SAS token RESPONSE 403... 2024-06-05T10:03:45.189000+02:00 Martin-Pankraz https://community.sap.com/t5/user/viewprofilepage/user-id/143781 <P>Hi&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/764220">@thomasweckerbasf</a>,</P><P>sounds like encoding challenges. Encountered this in the CPI http adapter before. Have a look at this note&nbsp;<A href="https://me.sap.com/notes/0003131448" target="_blank" rel="noopener noreferrer">https://me.sap.com/notes/0003131448</A> to resolve with triple encoding&nbsp;.</P><P>KR Martin</P> 2024-06-05T10:03:45.189000+02:00 https://community.sap.com/t5/technology-blogs-by-members/nice-patch-sap-revisiting-your-sap-btp-security-measures-after-ai-core/ba-p/13770662 Nice patch SAP! Revisiting your SAP BTP security measures after AI Core vulnerability fix 2024-07-25T10:46:43.272000+02:00 Martin-Pankraz https://community.sap.com/t5/user/viewprofilepage/user-id/143781 <P>Dear community,</P><P>SAP recently fixed a critical vulnerability in the SAP AI Core service that could have allowed attackers to access sensitive data in the multi-tenant environment. This issue, dubbed "SAPwned", was responsibly disclosed and publicly shared on July 18 after it was patched. You can read more about it <A href="https://thehackernews.com/2024/07/sap-ai-core-vulnerabilities-expose.html" target="_blank" rel="noopener nofollow noreferrer">here</A>.</P><P>Bottom line: SAP shows its commitment to security and timely patching of its cloud services. But remember, SAP BTP - like any cloud platform - is based on a shared responsibility model. That means you need to do your part to protect your data and applications too:</P><UL><LI>Pick secure authentication means (no Basic AUTH is not one of them!),</LI><LI>Be conscious that every endpoint exposed by SAP BTP like Microsoft365 lives on the Internet by design,</LI><LI>Scope Cloud Foundry + Kyma app access, and user roles to the minimum rights needed,</LI><LI>When using the popular” OAuth2 client credentials grant” with service keys rotate your secrets (at best automatically regularly)! Have your pick from app based solution <A href="https://github.com/Azure/AzureAD-AppSecretManager" target="_blank" rel="noopener nofollow noreferrer">like this</A>, PowerShell <A href="https://github.com/Azure/KeyVault-Secrets-Rotation-AADApp-PowerShell" target="_blank" rel="noopener nofollow noreferrer">module</A> and <A href="https://community.sap.com/t5/technology-blogs-by-members/automatic-sap-btp-trust-store-certificate-renewal-with-azure-key-vault-or/ba-p/13565138" target="_blank">blog on automatic cert renewal</A>.</LI><LI>Establish a continuous process to harden your SAP cloud workloads. It is not a one stop shop.</LI></UL><P>Ever heard about “MFA fatigue”? Plain Multi-Factor-Authentication is not good enough anymore today. Additionally, enforce Conditional Access to SAP BTP service through integration the SAP ID Service or the SAP Identity Authentication Service with the corporate identity provider of your choice. See <A href="https://learn.microsoft.com/entra/fundamentals/scenario-azure-first-sap-identity-integration" target="_blank" rel="noopener nofollow noreferrer">here</A> how to do it with Microsoft Entra ID.</P><P>&nbsp;</P><H1 id="toc-hId-892014405">Second line of defense: Automatic detections based on the SAP Audit Log Service</H1><P>Most of the <A href="https://help.sap.com/docs/btp/sap-business-technology-platform/security-events-logged-by-cf-services" target="_blank" rel="noopener noreferrer">BTP based services</A> in the Cloud Foundry environment provided by SAP automatically write to the SAP Audit Log Service. Each service lists the standardized events that are propagated.</P><P>SAP&nbsp;has a <A href="https://community.sap.com/t5/technology-blogs-by-sap/exploring-the-sap-audit-log-service/ba-p/13533521" target="_blank">nice video</A> on the general workings of the SAP Audit Log Service on BTP.</P><P><FONT size="4"><STRONG>This is a good start, but how useful are log entries that record a compromise if they are overlooked and hidden among countless normal entries?</STRONG></FONT></P><P data-unlink="true">I use the <A href="https://learn.microsoft.com/azure/sentinel/sap/sap-btp-solution-overview" target="_blank" rel="noopener nofollow noreferrer">Microsoft Sentinel for SAP BTP solution</A>&nbsp;- which went into General Availability state this week - as an example for running automatic detections via built-in analytic rules. It connects to your subaccounts and global account ingesting all audit logs that are written to your registered Audit Log Management service instances. Polling interval is 10mins when deployed from the Azure Portal by default. Configure&nbsp;down to 1 min if needed using <A href="https://learn.microsoft.com/azure/sentinel/data-connector-connection-rules-reference#request-configuration" target="_blank" rel="noopener nofollow noreferrer">ARM API</A>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Architecture diagram of Sentinel solution for SAP BTP" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/142567iC8BC0EABCD04CA60/image-size/large?v=v2&amp;px=999" role="button" title="Picture1.png" alt="Architecture diagram of Sentinel solution for SAP BTP" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Architecture diagram of Sentinel solution for SAP BTP</span></span></P><P><SPAN>It comes with out-of-the-box content. Check out the alert “Failed access attempts across multiple Business Application Studio accounts” for instance. Password spray attack anyone?</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Screenshot of Sentinel for SAP BTP solution content with out-of-the-box detections and workbooks" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/141134iB15E352F76DACEF1/image-size/large?v=v2&amp;px=999" role="button" title="Picture1.png" alt="Screenshot of Sentinel for SAP BTP solution content with out-of-the-box detections and workbooks" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Screenshot of Sentinel for SAP BTP solution content with out-of-the-box detections and workbooks</span></span></P><P>Once I have <A href="https://learn.microsoft.com/azure/sentinel/sap/deploy-sap-btp-solution" target="_blank" rel="noopener nofollow noreferrer">onboarded my subaccount</A>&nbsp;(I named it SAP-AI-Core-playground), I can go wild on the ingested log entries, apply the threat intel functions, and built analytic rules. Let's browse the entries via the Kusto query language. The standard table SAPBTPAuditLog_CL holds all audit log info for your registered SAP BTP subaccounts:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Screenshot of simple KQL for SAP BTP" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/141367i6D94B79A7A79F68B/image-size/large?v=v2&amp;px=999" role="button" title="Picture1.png" alt="Screenshot of simple KQL for SAP BTP" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Screenshot of simple KQL for SAP BTP</span></span></P><P>The Message contains the JSON payload BTP provides for each message as well as the involved BTP service identifier.</P><P><FONT size="4"><STRONG>Looking at audit messages is nice, but you may<SPAN>&nbsp;go one step further by applying automatic action like blocking the SAP BTP users.</SPAN></STRONG></FONT></P><P><SPAN>Below Screenshot shows the part of the process triggered by the included playbook. The SAP security team gets notified with evidence of the compromise, offering an approval option to block the user from a Microsoft Teams channel flow. Find more info </SPAN><A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-members/from-zero-to-hero-security-coverage-with-microsoft-sentinel-for-your/ba-p/13557852" target="_blank">here</A><SPAN>. Below screenshot shows the adaptive card with a trigger from SAP Business Suite. The same is possible with triggers coming from BTP too.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Screenshot of sap btp user block approval request to SAP security team on Microsoft Teams" style="width: 498px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/141135i425AD2C35CD48194/image-size/large?v=v2&amp;px=999" role="button" title="Picture2.png" alt="Screenshot of sap btp user block approval request to SAP security team on Microsoft Teams" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Screenshot of sap btp user block approval request to SAP security team on Microsoft Teams</span></span></P><H1 id="toc-hId-695500900">&nbsp;</H1><H1 id="toc-hId-498987395">The AI Core Service audit log entries alone are not useful</H1><P>Threat protection-wise correlation with other signals in your company is required, because a single SAP AI Core event like “Successful retrieval of object store secret” does not tell you anything. See below a Kusto query working off the AI Core audit log info ingested by the Sentinel for SAP BTP solution.</P><P><EM>Note:&nbsp;SAP publishes the available events for all the Cloud Foundry based services&nbsp;<A href="https://help.sap.com/docs/sap-ai-core/sap-ai-core-service-guide/auditing-and-logging-information" target="_blank" rel="noopener noreferrer">here</A>.&nbsp;</EM></P><P>It identifies entries on my BTP subaccount related to AI Core activity and cross-references the IP address involved in the login and its country of origin. In my sample below I use the built-in function <A href="https://learn.microsoft.com/azure/data-explorer/kusto/query/geo-info-from-ip-address-function" target="_blank" rel="noopener nofollow noreferrer">geo_info_from_ip_address()</A> to learn if the BTP client remote address originated from Germany or not. Assumption here is that all my BTP developers are based there. Think about sanctioned countries lists etc.</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>//flag unexpected logins from countries other than Germany let myBTPDevelopers = dynamic(['Germany']); let login_messages = dynamic(['ClientAuthenticationSuccess','UserAuthenticationSuccess']); SAPBTPAuditLog_CL | where SubaccountName == "SAP-AI-Core-playground" | where Message has_any (login_messages) | extend ip_ = tostring(Message.ip) | extend country = geo_info_from_ip_address(ip_)['country'] | where country !in (myBTPDevelopers);</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>For a smoke test I teleported myself into the land of leprechauns<span class="lia-unicode-emoji" title=":rainbow:">🌈</span>, steep cliffs, and mysterious celtic culture<span class="lia-unicode-emoji" title=":four_leaf_clover:">🍀</span> using an Azure VM. Marvel at the rule that identifies that mischieveous btp user!</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Screenshot of found btp login from Ireland" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/141499iD40F77EF87B0AF7F/image-size/large?v=v2&amp;px=999" role="button" title="Picture2.png" alt="Screenshot of found btp login from Ireland" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Screenshot of found btp login from Ireland</span></span></P><P>The next sample uses the <A href="https://learn.microsoft.com/azure/sentinel/understand-threat-intelligence" target="_blank" rel="noopener nofollow noreferrer">Threat Intelligence</A> feature to verify if the BTP remote access can be traced back to a feed of known problematic IP indicators (e.g. a bot network). I maintained it on Sentinel on the Threat Management section using the IP known to BTP for my recent logins to the SAP AI Core service to trigger a result. In real life you would take the IPs from a threat intel feed of course. I don't have a bot net handy though<span class="lia-unicode-emoji" title=":winking_face:">😉</span>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Screenshot of Sentinel Threat Management experience" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/141136i039C7B6EA1D1B723/image-size/large?v=v2&amp;px=999" role="button" title="Picture3.png" alt="Screenshot of Sentinel Threat Management experience" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Screenshot of Sentinel Threat Management experience</span></span></P><P>&nbsp;That makes it available to my Kusto query as below. See below the screenshot of the result:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Screenshot of Kusto query result filtered by problematic IPs" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/141137iB57CB9FC2D659821/image-size/large?v=v2&amp;px=999" role="button" title="Picture4.png" alt="Screenshot of Kusto query result filtered by problematic IPs" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Screenshot of Kusto query result filtered by problematic IPs</span></span></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>//flag unexpected logins from IP indicators from Sentinel let ips = ThreatIntelligenceIndicator | distinct NetworkIP = tostring(NetworkIP); let login_messages = dynamic(['ClientAuthenticationSuccess','UserAuthenticationSuccess']); SAPBTPAuditLog_CL | where SubaccountName == "SAP-AI-Core-playground" | where Message contains "aicore" and Message has_any (login_messages) | extend ip_ = trim(" ", replace(@"\s", "", replace(@"\r|\n|\t", "", tostring(Message.ip)))) | join kind=inner ( ips | extend NetworkIP_ = trim(" ", replace(@"\s", "", replace(@"\r|\n|\t", "", tostring(NetworkIP)))) ) on $left.ip_ == $right.NetworkIP_;</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>A natural next evolution of the detection would be to extend it to the "impossible travel" scenario.</P><P>These queries are simple to set up and are good to go to serve as <A href="https://learn.microsoft.com/azure/sentinel/threat-detection" target="_blank" rel="noopener nofollow noreferrer">new analytics rule</A> on the solution, don’t you think?</P><P>Let me know what other scenarios you would like to see <span class="lia-unicode-emoji" title=":smiling_face_with_smiling_eyes:">😊</span></P><H1 id="toc-hId-302473890">&nbsp;</H1><H1 id="toc-hId-105960385">Thoughts on production readiness</H1><P>SAP’s Audit Log Service is widely adopted across the SAP BTP services and foundational to the platform.</P><P>Sentinel for SAP BTP recently went into “General Availability” state, making it good to use for anyone who doesn’t like previews <span class="lia-unicode-emoji" title=":smiling_face_with_sunglasses:">😎</span></P><P>To create meaningful detections based on the SAP BTP audit log at minimum other sources, such as the Authorization and Trust Management service (XSUAA) must be considered. Enriching your threat signals with indicators from the rest of your IT landscape gets you from "SAP-security-acolyte"🧑🏻‍<span class="lia-unicode-emoji" title=":school:">🏫</span> to master of disaster🥷🏼.</P><P>The built-in Sentinel for SAP playbooks use SAP BTP public APIs for automatic remediation. See the user API documentation for disabling users <A href="https://api.sap.com/api/PlatformAPI/path/getUserUsingGET" target="_blank" rel="noopener noreferrer">here</A>.</P><H1 id="toc-hId--90553120">&nbsp;</H1><H1 id="toc-hId--287066625">Final words</H1><P>Constantly staying ahead of attackers all the time is impossible. However, putting up a fight so they move on without doing more serious damage or at least being automatically informed about the incident puts you back in the driver’s seat.</P><P>The <A href="https://learn.microsoft.com/azure/sentinel/sap/sap-btp-solution-overview" target="_blank" rel="noopener nofollow noreferrer">Sentinel for SAP BTP solution</A> enables you to bring the SAP BTP audit log information for cross-correlation with your wider IT landscape to the Microsoft SIEM solution Sentinel. Furthermore, it powers <STRONG>automatic remediations like user block, password reset</STRONG>, and more.</P><P>For true confidence in drastic actions like blocking users, you require signals from as many sources as possible. <STRONG>Think beyond the SAP boundary and towards your complete IT landscape</STRONG>: Devices, endpoints, and suspicious logins etc. All of those touchpoints leave a trail of your attacker long before they reach SAP BTP, because of the prior phishing attempts or lateral movement etc. Have a look at <A href="https://learn.microsoft.com/azure/sentinel/sap/deployment-attack-disrupt" target="_blank" rel="noopener nofollow noreferrer">Defender XDR</A> for further info.</P><P><STRONG>What detections are you running for your BTP landscape?</STRONG> Let the community know so we can learn from each other’s security practices.</P><P>Cheers</P><P>Martin</P> 2024-07-25T10:46:43.272000+02:00