Composable Architecture8 min read

The Asset Operations Gap in Most Enterprise CMSes

A product team ships a campaign across six markets, and the day before launch someone notices the hero image is the wrong crop on mobile, the alt text is missing in three locales, and the "approved" logo is actually last quarter's version…

Published June 22, 2026

A product team ships a campaign across six markets, and the day before launch someone notices the hero image is the wrong crop on mobile, the alt text is missing in three locales, and the "approved" logo is actually last quarter's version still cached on the CDN. Now multiply that by a thousand assets a month. In most enterprise CMSes the structured content is governed carefully while the images, video, and documents that sit beside it live in a loosely managed file dump, renamed by hand, with no review trail and no idea which downstream page uses which file. That is the asset operations gap, and it is where governed content quietly turns ungoverned.

The stakes are not cosmetic. Unversioned assets break brand compliance, orphaned files inflate storage and legal exposure, and a missing usage map means nobody can answer "where is this image used" before a takedown or a rebrand. Sanity is the Content Operating System for the enterprise, an intelligent backend that treats assets as first-class, queryable, governed content rather than attachments. This article reframes asset operations as a governance and scale problem, not a storage one, and shows what closing the gap actually requires.

Why assets fall outside the governance perimeter

Most enterprise CMSes were architected around the page or the structured entry. Assets were an afterthought: a folder, a media tab, a binary you upload and forget. The result is a two-tier governance model. The text fields get workflow, approvals, version history, and audit trails, while the images, PDFs, and video sitting one click away get none of that. Buyers discover this the hard way during an audit, when they can produce a full change log for a press release but cannot say who replaced the executive headshot, when, or why.

The gap widens with scale. A single enterprise rollout can carry tens of thousands of assets across markets, each with locale-specific crops, rights windows, and alt text obligations. When those assets are not modeled as content, they cannot be queried, validated, or governed by the same rules. You end up with shadow processes: a DAM bolted on the side, a shared drive nobody trusts, and a spreadsheet that maps files to pages until it falls out of date within a week.

The legacy DXP answer is usually to sell you a separate, heavyweight DAM module and an integration project to wire it back to the CMS. That closes the storage gap but not the governance gap, because the two systems still reason about content differently. The asset lives in one model, the page in another, and the join between them is brittle. Closing the gap properly means assets and content share one foundation, one permission model, and one audit surface, rather than being stitched together after the fact.

Assets as queryable structured data, not attachments

The first move that closes the gap is treating every asset as structured, queryable data. In Sanity, uploaded files land in the Asset Pipeline and Media Library and become documents in Content Lake, the same multi-tenant, multi-region store that holds the rest of your content. That means an image is not an opaque binary hanging off a field. It carries metadata, references, and relationships you can query with GROQ alongside everything else.

The practical consequence is the question every enterprise eventually needs to answer: where is this asset used, and what depends on it. Because references are explicit in the data graph, you can run a query that returns every page, product, and campaign pointing at a given file before you retire it, replace it, or respond to a takedown. The legacy pattern, hunting through a media tab and hoping, becomes a query that returns a definitive list.

This also reframes derivative management. Crops, formats, and renditions are generated from a single source asset rather than re-uploaded as disconnected copies, so the locale-specific mobile crop and the desktop hero stay tied to one governed original. When the source changes, the relationship is intact, and the analytics team can use Content Source Maps to trace which rendition actually appeared on the page that drove a conversion. Assets stop being a parallel universe and become part of the same content model your teams already govern, which maps directly to the pillar of modeling your business as it actually works.

Governance primitives that already cover your text should cover your media

The reason text content feels safe in an enterprise CMS is the primitives around it: role-based access, approvals, audit trails, and the ability to stage changes. The asset operations gap is really the absence of those same primitives on media. Closing it does not require inventing new machinery; it requires applying the governance you already have to the files you have been ignoring.

In Sanity, Roles & Permissions, SSO, and Audit logs operate over the whole dataset, assets included. That means the same RBAC that stops an intern from publishing a pricing page also governs who can replace a brand-approved logo, and the same Audit logs that record a copy change record who swapped which asset and when. For a compliance team, that single audit surface is the difference between a clean response to a rights dispute and a frantic reconstruction from email threads.

Content Releases extend this to coordinated change. An asset refresh that spans a product line, dozens of images, new documents, updated video, can be staged as a unit and shipped together, rather than published file by file with windows of inconsistency in between. This is the enterprise equivalent of branching for editors, and it applies to media as readily as to copy. The legacy DXPs are genuinely strong on text workflow depth; the gap is that their asset modules rarely inherit that same depth without additional licensing and integration work. Unifying both under one permission and release model is what actually closes the exposure.

The audit question most teams cannot answer

Multi-brand and multi-market asset operations

Asset operations get exponentially harder across brands and markets. A global enterprise does not have one logo; it has a logo per brand, per market, per co-branding agreement, each with its own rights window and usage rules. Locale variation is not just translated alt text; it is different imagery for different cultures, different legal disclaimers baked into documents, and different aspect ratios for different surfaces. The file-dump model collapses under this because there is no structural way to express which asset is approved for which context.

Studio Workspaces let a single Sanity Studio represent multiple brands and markets without spinning up disconnected instances, so the asset governance rules travel with the workspace rather than being reinvented per team. Combined with Multi-dataset and dataset aliases, an enterprise can isolate or share asset libraries deliberately: a shared corporate brand library, a market-specific dataset for locally licensed imagery, and clear boundaries between them.

Translations tie the linguistic layer to the asset layer. With native translation plugins and integrations for Phrase and Smartling, the locale-specific alt text and document variants stay connected to their source assets and to the content they describe. The outcome is that a market team can see exactly which assets are approved for their locale, which are inherited from corporate, and which are missing required metadata, all inside one Studio. That is composability working for governance: shared foundation where you want consistency, isolation where you need autonomy, instead of one rigid global library or a dozen ungoverned local ones.

Automating the asset workflows nobody wants to do by hand

The most expensive part of asset operations is the manual labor: generating crops, validating alt text, checking that a document has a current rights window, moderating user-generated imagery, enriching metadata so assets are findable. In a legacy setup these are tickets, handoffs, and people. The composable answer is to make them code that runs automatically on the events that matter.

Sanity Functions and the App SDK let an enterprise wire these workflows directly into the content layer. When an asset is uploaded, a function can run validation, flag missing alt text before an editor can publish, route a file for moderation, or call an enrichment service to tag it for search. Because assets are documents, these automations reason about them the same way they reason about any other content, with no separate integration layer to maintain between a bolt-on DAM and the CMS.

This is also where AI enters as a governance lever rather than a toy. Automated tagging, alt-text suggestions, and content checks can run as functions, but inside an editorial loop where a human approves and an Audit log records the outcome, which is what an enterprise needs to keep AI-assisted asset work compliant and reviewable. The strategic payoff is the one that matters most to a buyer measuring total cost of ownership: instead of scaling the headcount that processes assets by hand, you scale the output of a smaller team by automating the repetitive checks. Legacy CMSes force you to add people; treating assets as governed, automatable content lets you add capacity instead.

What closing the gap means for replatforming

No enterprise wants a two-year reimplementation to fix asset operations, and that fear keeps teams on a DXP whose asset module they have already outgrown. The honest reframe is that closing the asset gap does not require ripping out the whole stack at once. Because Sanity exposes content and assets through the Live Content API and GROQ, an enterprise can begin by routing new asset operations through Content Lake while the legacy system winds down, migrating libraries in tranches mapped to brands or markets rather than in one high-risk cutover.

The migration math favors structure. When assets become documents with explicit references, the very usage map you lacked in the old system becomes the inventory that makes migration safe: you can see what depends on what before you move it. Sanity's Partner network of systems integrators handles the large rollouts where an in-house team would stall, while smaller estates can move incrementally with the App SDK and Functions doing the heavy lifting of transformation and validation.

The compliance posture should be part of the evaluation, not an afterthought. Sanity holds SOC 2 Type II and supports GDPR with regional hosting and data residency options, with a published sub-processor list, which is the baseline an enterprise asset library handling rights-managed and personal-data-bearing media needs to satisfy. The legacy DXPs meet these bars too; the differentiator is not whether the box is checked but whether your assets live inside the same governed, queryable, automatable foundation as the rest of your content. That is what the asset operations gap has been costing, and what a Content Operating System is built to close.

Asset operations at enterprise scale: how the approaches compare

FeatureSanityAdobe Experience ManagerSitecoreContentstack
Assets as queryable structured dataAssets are documents in Content Lake, queryable with GROQ alongside all content, so usage and references resolve in one query.AEM Assets is a mature DAM, but assets and pages reason through separate models that an implementation must bridge.Sitecore Content Hub / DAM stores rich asset metadata, though querying it jointly with delivery content typically spans systems.Assets are managed and referenceable via API, with metadata, though deep joins across asset and entry graphs are more limited.
Governance over assets (RBAC, audit, SSO)Roles & Permissions, SSO, and Audit logs operate over the whole dataset including assets, giving one audit surface for media and text.Deep, granular workflow and permissions, strong governance, often requiring significant configuration and licensing to realize fully.Robust enterprise governance and approvals across the suite, with asset governance depending on the Content Hub deployment.Solid enterprise RBAC and audit on entries; asset-level governance is lighter than the dedicated-DAM incumbents.
Ship batched asset + content changes as a unitContent Releases stage and publish a coordinated asset and content refresh together, avoiding windows of inconsistency.Launches and workflow packages support coordinated release, typically with more setup and operational overhead.Publishing and workflow tooling can batch changes, often configured per project rather than as a native editor primitive.Release and bulk-publish features exist, with coordination across assets and entries handled at the application layer.
Multi-brand / multi-market asset librariesStudio Workspaces plus Multi-dataset and dataset aliases isolate or share asset libraries deliberately across brands and markets.Multi-site and multi-tenancy are well established at enterprise scale, generally with heavier infrastructure and operations.Strong multi-site and multi-market support across the platform, with complexity rising as deployments grow.Stacks and multi-environment support address multi-brand needs; shared-versus-isolated asset modeling is more manual.
Automating asset workflows (validation, enrichment)Functions and the App SDK run validation, moderation, and enrichment on asset events inside the content layer, no bolt-on bridge.Powerful workflow engine and processing profiles, typically realized through configuration and custom development.Automation available through the platform and extensions, often requiring developer and integration effort.Webhooks and automation hooks enable workflow logic, with heavier processing usually offloaded to external services.
Operating the asset storeContent Lake is multi-tenant and multi-region and Sanity operates it, so teams do not run or scale the asset infrastructure.Self-managed or Adobe-hosted options exist; full control comes with corresponding operational responsibility.Self-hosted and cloud options; XM Cloud reduces ops burden while traditional deployments are operated by the customer.Fully SaaS and managed, removing infrastructure operations from the customer's plate.
Compliance baseline for asset librariesSOC 2 Type II and GDPR with regional hosting, data residency options, and a published sub-processor list.Enterprise compliance certifications and data-residency options consistent with a large incumbent vendor.Established enterprise compliance and hosting options across cloud and self-managed deployments.SOC 2 and GDPR support with enterprise hosting and regional options.

Ready to try Sanity?

See how Sanity can transform your enterprise content operations.