{"id":90,"date":"2025-12-20T07:17:27","date_gmt":"2025-12-20T07:17:27","guid":{"rendered":"https:\/\/steadyrabbit.in\/blogs\/?p=90"},"modified":"2025-12-20T07:17:27","modified_gmt":"2025-12-20T07:17:27","slug":"the-rise-cost-curve-modeling-your-btp-tco-in-seven-variables","status":"publish","type":"post","link":"https:\/\/steadyrabbit.in\/blogs\/the-rise-cost-curve-modeling-your-btp-tco-in-seven-variables\/","title":{"rendered":"The RISE Cost Curve: Modeling Your BTP TCO in Seven Variables"},"content":{"rendered":"\n<h4 class=\"wp-block-heading\">TL;DR (\u2248 95 words)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u201cMove to RISE and save 20 %,\u201d sales decks promise\u2014but every CFO knows cost curves bite three years in. This guide delivers a <strong>transparent Total-Cost-of-Ownership (TCO) calculator<\/strong> that plugs seven variables into a single Python\/Excel sheet and forecasts:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Annual subscription &amp; hyperscaler pass-through<br><\/li>\n\n\n\n<li>Custom-code remediation burn<br><\/li>\n\n\n\n<li>BTP service consumption (HANA Cloud, Event Mesh, CAP runtime)<br><\/li>\n\n\n\n<li>Change-request velocity vs. cloud credits<br><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">We walk through a real-world manufacturing scenario that showed <strong>RISE year-1 OPEX +8 %, year-3 OPEX \u201318 %<\/strong>, beating on-prem break-even at 34 months. Download link at the end.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Why Sticker Price \u2260 TCO (\u2248 170 words)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">RISE bundles S\/4HANA Cloud, hosting, Basis, and some BTP services:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">markdown<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CopyEdit<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">RISE Subscription Price<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;= Core S\/4 Cloud licenses<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;+ Infrastructure (IaaS hyperscaler)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;+ Technical Managed Services<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;+ BTP Entitlements (\u2248 2 700 CPEA credits)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Hidden deltas:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Hyperscaler uplift<\/strong> \u2014 RISE adds 12\u201318 % margin over Azure\/AWS list.<br><\/li>\n\n\n\n<li><strong>CPEA overage<\/strong> \u2014 run out of 2 700 credits fast if Event Mesh + HANA Cloud dev use explode.<br><\/li>\n\n\n\n<li><strong>Custom code cleanup<\/strong> \u2014 CAP microservice carve-outs consume partner hours or internal FTE.<br><\/li>\n\n\n\n<li><strong>Change-request friction<\/strong> \u2014 service tickets vs. self-service may slow velocity (cost of delay).<br><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Our TCO worksheet makes these deltas explicit.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Seven-Variable TCO Model (\u2248 200 words)<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Variable<\/strong><\/td><td><strong>Symbol<\/strong><\/td><td><strong>Description<\/strong><\/td><td><strong>Default<\/strong><\/td><\/tr><tr><td><strong>Users<\/strong><\/td><td>U<\/td><td>Named business users \/ FUEs<\/td><td>450<\/td><\/tr><tr><td><strong>CPU Footprint<\/strong><\/td><td>CPU<\/td><td>Sum vCPUs in ECC Prod<\/td><td>320<\/td><\/tr><tr><td><strong>Data Volume<\/strong><\/td><td>DV<\/td><td>Total DB + app storage (TB)<\/td><td>14<\/td><\/tr><tr><td><strong>CPEA Consumption \u0394<\/strong><\/td><td>C<\/td><td>% credits over 2 700 baseline<\/td><td>35 %<\/td><\/tr><tr><td><strong>Custom Code Lines<\/strong><\/td><td>Z<\/td><td>Millions of Z-LOC after cleanup<\/td><td>0.6<\/td><\/tr><tr><td><strong>CR Velocity<\/strong><\/td><td>CR<\/td><td>Change requests \/ month<\/td><td>45<\/td><\/tr><tr><td><strong>Labor Rate<\/strong><\/td><td>L<\/td><td>Partner blended rate (USD\/h)<\/td><td>$65<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Why these?<\/strong><strong><br><\/strong> Licenses scale by users, infra by CPU\/DV, overage &amp; partner cost by code and velocity.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h5 class=\"wp-block-heading\">2.1 Equation in Plain English<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">markdown<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CopyEdit<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">TCO_year = RISE_subscription(U, CPU, DV)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ CPEA_overage(C)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ Partner_cleanup(Z, L)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ CR_ticket_premium(CR)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u2013 On-prem_decom_savings(Z)<br><em>Decomposition savings<\/em> = power + cooling + HW refresh avoided once DEV\/QAS boxes shut down (~$100 per vCPU\/yr).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Python + Excel Sheet (\u2248 180 words)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Download<\/strong> \u2192 BTP_TCO_Calculator.xlsx &amp; tco_model.py<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">python<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CopyEdit<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">import pandas as pd<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">from math import ceil<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def rise_subscription(u, cpu, dv):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;user_cost &nbsp; = 1100 * u &nbsp; &nbsp; &nbsp; # USD\/yr\/FUE est.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;infra_cost&nbsp; = 75&nbsp; * cpu&nbsp; &nbsp; &nbsp; # hyperscaler markup<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;storage_cost= 150 * dv * 12&nbsp; # $\/TB\/mo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;return user_cost + infra_cost + storage_cost<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def cpea_overage(c_pct):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;credit_val = 0.21&nbsp; # $ per credit<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;over = max(c_pct, 0) * 2700<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;return over * credit_val<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def partner_cleanup(z_mloc, rate):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;hours = 18 * z_mloc * 1000 &nbsp; # 18 h per K LOC<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;return hours * rate<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def cr_ticket(cr):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;premium = 35&nbsp; # $ per CR vs. self-service<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;return cr * 12 * premium<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def decom_saving(cpu):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;return 100 * cpu<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def tco(years=3, **kw):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;rows=[]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;for y in range(1, years+1):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rows.append({<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8216;year&#8217;: y,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8216;subscription&#8217;: rise_subscription(**kw),<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8216;overage&#8217;: cpea_overage(kw[&#8220;c_pct&#8221;]),<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8216;partner&#8217;:&nbsp; partner_cleanup(kw[&#8220;z_mloc&#8221;], kw[&#8220;rate&#8221;]) if y==1 else 0,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8216;cr&#8217;: cr_ticket(kw[&#8220;cr&#8221;]),<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8216;saving&#8217;: decom_saving(kw[&#8220;cpu&#8221;]),<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;df=pd.DataFrame(rows)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;df[&#8216;total&#8217;]=df.sum(axis=1,numeric_only=True)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;return df<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ace_tools.display_dataframe_to_user is used in the Draft Excel; finance team can tweak sliders.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Case Study Numbers (\u2248 140 words)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Industrial OEM<\/em> inputs:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ini<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CopyEdit<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">U &nbsp; = 450<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CPU = 320<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DV&nbsp; = 14 TB<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C &nbsp; = +35 %<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Z &nbsp; = 0.6 M LOC<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CR&nbsp; = 45 \/ mo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L &nbsp; = $65<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Output TCO (USD):<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Year<\/strong><\/td><td><strong>Subscription<\/strong><\/td><td><strong>Overage<\/strong><\/td><td><strong>Partner<\/strong><\/td><td><strong>CR Prem.<\/strong><\/td><td><strong>Decom Save<\/strong><\/td><td><strong>TCO<\/strong><\/td><\/tr><tr><td>1<\/td><td>$843 k<\/td><td>$199 k<\/td><td>$702 k<\/td><td>$19 k<\/td><td>\u2013$32 k<\/td><td><strong>$1.73 M<\/strong><\/td><\/tr><tr><td>2<\/td><td>843 k<\/td><td>199 k<\/td><td>0<\/td><td>19 k<\/td><td>\u201332 k<\/td><td><strong>$1.03 M<\/strong><\/td><\/tr><tr><td>3<\/td><td>843 k<\/td><td>199 k<\/td><td>0<\/td><td>19 k<\/td><td>\u201332 k<\/td><td><strong>$1.03 M<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\">Break-Even<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">On-prem OPEX baseline $1.25 M\/yr.<br>Break-even at <strong>Month 34<\/strong>; NPV positive (8 % discount).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Sensitivity Heat-Map (\u2248 100 words)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><em>(Describe embedded chart)<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>X-axis CPEA overage 0\u2013100 %.<br><\/li>\n\n\n\n<li>Y-axis Z-LOC cleanup 0.2\u20131.2 M.<br><\/li>\n\n\n\n<li>Cells show 3-yr NPV vs. on-prem baseline.<br><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Observations:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Over-consuming BTP > 70 % credits or leaving > 1 M LOC unrefactored can push break-even past 48 months.<br><\/li>\n\n\n\n<li>Cutting CR ticket premium (switch to self-service transport) brings break-even to 28 months.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">How to Slash Year-1 Spike (\u2248 150 words)<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Phase Cleanup<\/strong> \u2013 Use ATC automation (Post #1) to eliminate 50 % Z-LOC <em>before<\/em> RISE start; partner cost drops 40 %.<br><\/li>\n\n\n\n<li><strong>Optimize Credits<\/strong> \u2013 Move dev Event Mesh queues to <strong>Basic<\/strong> tier; cache busters lower HANA Cloud storage by 20 %.<br><\/li>\n\n\n\n<li><strong>Self-Service CRs<\/strong> \u2013 Request \u201cDevOps cockpit\u201d in RISE contract; drops $35\/CR premium.<br><\/li>\n\n\n\n<li><strong>Graviton Instances<\/strong> \u2013 Choose AWS APN option; infra cost \u201312 %.<br><\/li>\n\n\n\n<li><strong>Pre-Book Reserved Instances<\/strong> \u2013 RISE honors 1\u20133 yr commit discounts; lowers CPU run-rate 8 %.<br><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Implementing #1, #3, #5 together moved Year-1 TCO of OEM case from $1.73 M \u2192 <strong>$1.42 M<\/strong>\u2014break-even Month 27.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Pitfalls &amp; Pro Tips (\u2248 160 words)<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Pitfall<\/strong><\/td><td><strong>Fix<\/strong><\/td><\/tr><tr><td>Missing non-production systems in subscription<\/td><td>RISE includes 3 tiers (DEV, QAS, PROD) by default\u2014confirm if you need Sandbox.<\/td><\/tr><tr><td>Underestimating CPEA for CAP apps<\/td><td>Each CAP instance burns ~10 credits\/day\u2014plan stage &amp; prod.<\/td><\/tr><tr><td>HANA Cloud multi-tenant surprises<\/td><td>S\/4 dev shares HANA tenant; feature app may hog memory\u2014segregate tenants.<\/td><\/tr><tr><td>Inflation omission<\/td><td>Lock 3-yr price in RISE contract; hyperscaler uplift capped.<\/td><\/tr><tr><td>Retained Basis staff cost<\/td><td>Budget 6\u20139 mo for re-skilling; include in Year-1.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Adoption Roadmap (\u2248 90 words)<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Step<\/strong><\/td><td><strong>What<\/strong><\/td><\/tr><tr><td><strong>1<\/strong><\/td><td>Plug variables into calculator; validate subscription quote.<\/td><\/tr><tr><td>2<\/td><td>Run sensitivity (credit overage, LOC cleanup).<\/td><\/tr><tr><td>3<\/td><td>Negotiate RISE contract: CR self-service, CAP discount bundles.<\/td><\/tr><tr><td>4<\/td><td>Phase Z-cleanup with ATC automation <em>pre-RISE<\/em>.<\/td><\/tr><tr><td>5<\/td><td>Present 5-yr NPV &amp; break-even to CFO; stage CapEx re-allocation.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Take-Home Checklist (\u2248 60 words)<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Gather the seven variables.<br><\/li>\n\n\n\n<li>Run our Python\/Excel model for 3-yr TCO.<br><\/li>\n\n\n\n<li>Stress-test credit overage and Z-LOC scenarios.<br><\/li>\n\n\n\n<li>Negotiate contract levers (self-service, reserved instances).<br><\/li>\n\n\n\n<li>Cut Year-1 spike by phasing cleanup + optimizing credits.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>TL;DR (\u2248 95 words) \u201cMove to RISE and save 20 %,\u201d sales decks promise\u2014but every CFO knows cost curves bite three years in. This guide delivers a transparent Total-Cost-of-Ownership (TCO) calculator that plugs seven variables into a single Python\/Excel sheet and forecasts: We walk through a real-world manufacturing scenario that showed RISE year-1 OPEX +8 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":20,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-90","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sap-modernization"],"_links":{"self":[{"href":"https:\/\/steadyrabbit.in\/blogs\/wp-json\/wp\/v2\/posts\/90","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/steadyrabbit.in\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/steadyrabbit.in\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/steadyrabbit.in\/blogs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/steadyrabbit.in\/blogs\/wp-json\/wp\/v2\/comments?post=90"}],"version-history":[{"count":1,"href":"https:\/\/steadyrabbit.in\/blogs\/wp-json\/wp\/v2\/posts\/90\/revisions"}],"predecessor-version":[{"id":91,"href":"https:\/\/steadyrabbit.in\/blogs\/wp-json\/wp\/v2\/posts\/90\/revisions\/91"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/steadyrabbit.in\/blogs\/wp-json\/wp\/v2\/media\/20"}],"wp:attachment":[{"href":"https:\/\/steadyrabbit.in\/blogs\/wp-json\/wp\/v2\/media?parent=90"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/steadyrabbit.in\/blogs\/wp-json\/wp\/v2\/categories?post=90"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/steadyrabbit.in\/blogs\/wp-json\/wp\/v2\/tags?post=90"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}