Storage cost in RISE with SAP: moving SOFFCONT1 attachments to Google Cloud Storage

In an SAP system you run yourself, a growing database is an infrastructure problem. Somebody buys disk, the backup takes longer, life goes on. Under RISE it is a line on an invoice — and a line you renegotiate from the worst possible position: mid-contract, with the system already in production and no alternative supplier.

It is the difference almost nobody weighs at signature. The contract fixes a volume, the volume is sized with today’s data, and the growth of the next three to five years is priced at mid-term rates.

In one sentence — a good share of what makes the database grow is not business data: it is attachments. And attachments are the one category of content you can take out without a single conversation with the business.

Why growth costs differently under RISE

Three characteristics of the model combine, and their effect is multiplicative rather than additive.

The volume is contractual, not technical. You do not buy disk — you buy an entitlement to volume. Going past it does not make anything slow, it makes something billable, negotiated when you are already inside.

Sizing moves in steps. HANA memory is not sold by the loose gigabyte: there is a contracted base and extensions sold in blocks. Growing a few gigabytes past the step forces you to buy the whole next step. The cost is not proportional to the growth — it is a staircase.

The term is long. Three to five year contracts mean a wrong sizing decision is not corrected next year: it is paid until the end of the term.

Put the three together and the asymmetry that matters appears: the moment to act is before you touch the step. Once you have climbed it, reducing volume rarely gives money back — the commitment is signed. The value of taking weight out of the database is not in undoing the step you paid for; it is in not paying the next one.

SOFFCONT1 is the most obvious candidate there is

Every SAP database with a few years on it has this table, grown without anyone deciding. It is where GOS attachments are kept inside the database: the PDF somebody dragged onto an order, the email that became a document, the spreadsheet attached to a purchase order.

It is the right target for three reasons that rarely coincide:

It is not business data. Taking accounting line items out of there requires an archiving project, a retention rule and a conversation with tax and audit. Attachments do not — they keep existing and keep being accessible, just somewhere else.

Nobody decided to put them there. It is the default behaviour when no content repository was ever configured. There is no business rule to preserve, only a setting that was never made.

It never stops growing. It is the one part of the database that grows with people’s habits rather than with transaction volume. And habits do not shrink on their own.

the path of an attachment: from the table inside the database, to the ArchiveLink content repository, served by a handler inside SAP itself, which writes the object into the Cloud Storage bucket — four steps, no new server
The attachment leaves the database and becomes an object in the bucket. The read path stays the same for the user.

How Cloud Storage becomes an SAP content repository

Here is the part that changes the arithmetic, and it is less known than it should be.

SAP stores external content through ArchiveLink, and ArchiveLink talks to an HTTP content server. Historically that meant one more machine: install SAP Content Server, license it, monitor it, patch it, add it to the recovery plan. A good share of the gain from taking attachments out of the database went into that server.

The ABAP SDK for Google Cloud solves this elegantly: it ships an HTTP handler written in ABAP, published on an SICF node inside the system itself. ArchiveLink sees it as an ordinary content server; the handler takes the call and writes — or reads — the object straight into the Cloud Storage bucket.

The system talks to itself, and the only new component in the landscape is a bucket. There is no content server to install, license or maintain.

The design comes down to four pieces:

  • a service account on Google Cloud with write permission on the bucket;
  • the SICF node that publishes the SDK handler;
  • a content repository created in OAC0, of type HTTP content server, pointing at that node;
  • the link between document types and the repository, in OAC3, so new attachments are born outside the database.

For what is already inside SOFFCONT1, the relocation is done by SAP’s own report — and that is where the trap lives, which we cover in detail in SOFFCONT1 and RSIRPIRL: the step that looks like a failure. Worth reading before running it, not after.

Two reality notes about the SDK: the edition that applies here is the on-premises or any cloud one, which is the supported edition on S/4HANA Cloud Private Edition — that is, RISE. And the size limit per object is Cloud Storage’s own, 5 TB, which for a GOS attachment is endless headroom.

The arithmetic — and the two numbers only you have

The calculation cannot be published ready-made, because half of it lives in your contract. But the structure is simple and fits in a one-tab spreadsheet.

On the SAP side, three measurements: how many GB SOFFCONT1 occupies today; how much it grew in the last twelve months; and how many GB you are from the next sizing step. That third one decides the urgency — and it is the one almost nobody has at hand.

On the contract side, one number: what an additional GB costs under your agreement, at today’s price and not at signature price.

On the Google Cloud side, one choice: the storage class. An attachment the user opens from the order screen needs a standard class with immediate reads. An attachment from a closed fiscal year, which only comes back during an audit, fits a cold class — far cheaper per GB, with a retrieval cost when it is read. Mixing the two is the expensive mistake: putting live attachments in a cold class turns every user click into a wait and a fee.

The orders of magnitude are usually so uneven that the spreadsheet answers itself. What it does not answer — which is why the next section exists — is whether the result shows up on the invoice or only at the next renewal.

What goes wrong, by name

Believing that shrinking the database shrinks this month’s invoice. It does not. The volume commitment is signed. The gain appears when the next step is not needed — which is enormous, and is different from immediate savings. Promising the second thing to get the project approved is how the project loses credibility at the first report.

Treating it as a technical project inside a system that is not yours. Under RISE, SAP operates. Installing the SDK transport, creating an SICF node and opening the network path to the bucket all go through the contract’s operating process. Doing it as a surprise is not agility — it is starting a support-boundary argument at the worst moment.

Confusing taking it out of the database with deleting it. The table holds the real content of the attachment. All the value is in relocating; none of it is in deleting.

Trading a space problem for an availability problem. With content outside the database, opening an attachment now depends on the network and on the bucket answering. It is a good trade, but it is a trade — and what the database team used to monitor now needs monitoring of its own.

Migrating everything at once. High volume in a tight window, with no prior count by range, is how a migration becomes an incident instead of a project.

The question that orders everythinghow many gigabytes are we from the next step, and how many months until we reach it at the current rate? If the answer is “eighteen months”, this is planning and can be done well. If it is “next quarter”, it is already a negotiation, and the conversation with SAP changes tone — because the technical alternative becomes demonstrable.

The honest limit

Taking attachments out of the database reduces growth. It does not solve what sits behind it: nobody ever decided what should be attached to SAP in the first place. The table starts growing again, more slowly, for the same reason as before. Without a rule about what gets attached and for how long, this is postponing, not fixing.

It is also not the only source of weight. Attachments are usually the largest share you can remove without a business project, but if the goal is genuinely to shrink the environment, they are the beginning — the rest needs archiving with a retention rule, which is different work and a different conversation.

And there is a cost that moves rather than disappears: it leaves SAP’s invoice and lands on Google Cloud’s. Far smaller, with the order of magnitude in your favour — but it now exists, and it needs an owner and follow-up.

If the starting point is knowing how much of your database is attachments and what can come out, begin with SAP archiving — SOFFCONT1 is usually only one of the large tables. If the conversation is about the whole contract and not just space, see FinOps for SAP RISE. And if the larger goal is understanding the environment before touching it, the path is the IT diagnostic.

Frequently asked questions

Does shrinking the database shrink the RISE invoice?

Not next month. The volume commitment is contractual, and shrinking mid-term rarely gives money back. The gain shows up when the next sizing step is no longer needed — it is avoided future cost, not immediate savings.

Can Cloud Storage be used as an SAP content repository?

Yes. The ABAP SDK for Google Cloud ships an HTTP handler written in ABAP, published on an SICF node. ArchiveLink sees that node as an ordinary content server, and the handler writes and reads objects straight into the bucket — with no separate content server to install and maintain.

Does this work under RISE, where SAP operates the system?

The on-premises or any cloud edition of the SDK is the one supported on S/4HANA Cloud Private Edition. But installing the transport, creating the SICF node and opening the network path to the bucket all go through the contract operating process — it has to be agreed, not done on the side.

Which storage class should the bucket use?

It depends on who reads it. An attachment the user opens from the order screen needs a standard class with immediate reads. An attachment from a closed fiscal year, which only returns during an audit, fits a cold class — cheaper per GB, with a retrieval cost. Mixing the two turns every click into a wait and a fee.