# How do you migrate from Adobe Experience Manager to Sanity?

Reviewed by Martin Dejnicki · facts verified 25 October 2026 · canonical: https://deploi.ca/sanity/migration/aem-to-sanity

## Short answer

An Adobe Experience Manager (AEM) to Sanity migration is a remodel you script yourself, because Sanity has no AEM importer ([Sanity blog](https://www.sanity.io/blog/sanity-remote-mcp-server-is-generally-available), October 2026). Sanity's migration skill for AI agents only scaffolds scripts ([Sanity August releases](https://www.sanity.io/blog/august-releases-2026), October 2026). Export published pages as `.model.json` ([Adobe](https://experienceleague.adobe.com/en/docs/experience-cloud-kcs/kbarticles/ka-34629), October 2026), convert their rich text to Portable Text, and decide early what replaces Multi Site Manager and Launches.

- **AEM path from Sanity:** No AEM importer or course; an agent skill scaffolds scripts. Sanity's MCP server lists guided migrations from Contentful, WordPress, Strapi and Drupal; its WordPress course says many of its techniques transfer to AEM; its migration skill is agent-scaffolded, not fully automated ([Sanity, You'll need a CMS eventually. Let your agent set it up.](https://www.sanity.io/blog/sanity-remote-mcp-server-is-generally-available); [Sanity Learn, Migrating content from WordPress to Sanity: Introduction](https://www.sanity.io/learn/course/migrating-content-from-wordpress-to-sanity/introduction-to-wp-migration); [Sanity, August releases 2026](https://www.sanity.io/blog/august-releases-2026))
- **Page export:** .model.json on each published page. Custom components need Adobe's exporter interface to appear in the JSON; static HTML export through .export.zip is AEM 6.5 only ([Adobe Experience League, Export AEM assets and content using supported methods](https://experienceleague.adobe.com/en/docs/experience-cloud-kcs/kbarticles/ka-34629))
- **Launches counterpart:** Content Releases, an Enterprise add-on. Scheduled drafts, on Growth with Studio v4.14.0 or later, schedules one document at a time; as of October 2026 ([Sanity Docs, Content Releases](https://www.sanity.io/docs/user-guides/content-releases); [Sanity Docs, Scheduled drafts](https://www.sanity.io/docs/studio/scheduled-drafts); [Sanity, Plans that scale with you](https://www.sanity.io/pricing))
- **Live copy counterpart:** No direct equivalent in Sanity. Model fields per market or a dataset per market; cross-dataset references and custom roles need Enterprise as of October 2026 (Deploi's reading of Sanity's docs) ([Sanity Docs, Multi-tenancy implementation](https://www.sanity.io/docs/developer-guides/multi-tenancy-implementation); [Sanity Docs, Cross-dataset references](https://www.sanity.io/docs/studio/cross-dataset-references))

## Deploi's call

Move from AEM to Sanity in phases, one site or content type at a time, starting with Content Fragments because they're already structured. Before you commit, price the Enterprise features AEM's daily tools land on: Content Releases for Launches, custom roles for permissions finer than Growth's five roles and Media Library for AEM Assets, as of October 2026.

**PHASE: Move from Adobe Experience Manager (AEM) to Sanity in phases when**

- Several sites or brands run on AEM, so you move one site or one content type at a time while AEM serves the rest.
- Content Fragments already hold structured content, which you move first because each Content Fragment Model gives you a head start on a Sanity document type.
- Adobe Target, Adobe Analytics or AEM forms stay in use, so each needs its own replacement before its pages move.

**MIGRATE: Migrate from AEM to Sanity in one cutover when**

- One site runs on AEM with a modest component library and few live copies.
- An idempotent import script re-runs against a fresh export, so the content freeze shrinks to the final run.
- Nobody depends on Launches for coordinated releases, because Content Releases, the nearest match, is an Enterprise add-on as of October 2026.

## Why is an AEM to Sanity migration a remodel, not a copy?

An Adobe Experience Manager (AEM) to Sanity migration is a remodel because AEM builds pages from components, and its Text component edits rich text as HTML ([Adobe, Text Component](https://experienceleague.adobe.com/en/docs/experience-manager-core-components/using/wcm-components/text), October 2026). Sanity's re-platforming course says recreating your structure as-is "opens the door to recreating your existing problems, just on a new stack" ([Sanity Learn, Planning a re-platforming project](https://www.sanity.io/learn/course/re-platforming-to-sanity/planning-a-re-platforming-project), October 2026). Sanity's own tools leave the scripting to you, as of October 2026:

- Sanity has no AEM course or importer; its migration skill for AI agents has an AEM guide ([Sanity agent toolkit](https://github.com/sanity-io/agent-toolkit/blob/main/skills/sanity-migration/SKILL.md), October 2026) and is "agent-scaffolded, not fully automated" ([Sanity August releases](https://www.sanity.io/blog/august-releases-2026), October 2026).
- Sanity's WordPress course says many of its techniques "will be directly transferable" to AEM ([Sanity Learn, WordPress migration introduction](https://www.sanity.io/learn/course/migrating-content-from-wordpress-to-sanity/introduction-to-wp-migration), October 2026).
- Sanity's MCP (Model Context Protocol) server lists guided paths from Contentful, WordPress, Strapi and Drupal only ([Sanity blog](https://www.sanity.io/blog/sanity-remote-mcp-server-is-generally-available), October 2026).
- Sanity says Tata Digital moved 20,000 documents out of AEM with a single script in under 17 hours ([Sanity, Tata Digital](https://www.sanity.io/customers/tata), October 2026).

Whether to leave AEM is a separate call: Adobe's core support for AEM 6.5 on premises ends 28 February 2027 and extended support, critical fixes only, ends 28 February 2028 ([Adobe, AEM 6.5 support timelines](https://experienceleague.adobe.com/en/docs/experience-cloud-kcs/kbarticles/ka-42541); [Adobe, AEM 6.5 FAQ](https://experienceleague.adobe.com/en/docs/experience-manager-65-lts/content/release-notes/faq), October 2026), and [the AEM 6.5 deadline decision](https://deploi.ca/sanity/migration/leaving-aem) weighs every exit.

## How do AEM pages, templates and fragments map to Sanity?

Adobe Experience Manager (AEM) pages map to Sanity document types, and their components become objects in an array. Content Fragments are the easy part: each comes from a Content Fragment Model, a structured model built in AEM's model editor ([Adobe, Introduction to Headless for AEM](https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/headless/introduction), October 2026). Sanity's course says to use as few pages as possible and reference meaningful content documents instead ([Sanity Learn, re-platforming course](https://www.sanity.io/learn/course/re-platforming-to-sanity/re-modelling-your-existing-content), October 2026), so Experience Fragments, AEM's reusable groups of components, become referenced documents.

**Most AEM structures become Sanity documents; live copies have no match**

| AEM structure | Sanity equivalent | Notes |
| --- | --- | --- |
| Page and editable template | Page document type | One type per content type, not per template |
| Components in a paragraph system | Array of object types | A page builder array |
| Content Fragment Model | Document type | Fields carry over closely |
| Content Fragment | Document | Keep the AEM path as a source field |
| Experience Fragment | Referenced document | Variations become fields |
| Tag | Taxonomy document | Pages reference it |
| AEM Assets item | Image or file asset | Media Library for a shared library |
| Live copy | No direct equivalent | Fields per market, or a dataset per market |

The Notes column is Deploi's judgment; Media Library is an Enterprise add-on ([Sanity pricing](https://www.sanity.io/pricing), October 2026). Sources: [Adobe Experience League, Introduction to Headless for AEM](https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/headless/introduction); [Adobe Experience League, Experience Fragments](https://experienceleague.adobe.com/en/docs/experience-manager-65/content/sites/authoring/authoring/experience-fragments); [Adobe Experience League, Reusing Content: Multi Site Manager and Live Copy](https://experienceleague.adobe.com/en/docs/experience-manager-65/content/sites/administering/introduction/msm); [Sanity Docs, Media Library introduction](https://www.sanity.io/docs/media-library/introduction); [Sanity, Plans that scale with you](https://www.sanity.io/pricing). As of 24 October 2026.

## How do AEM components and rich text become Portable Text?

Convert each Adobe Experience Manager (AEM) Text component to Portable Text, Sanity's structured rich text format, with `htmlToBlocks()` from `@sanity/block-tools` and custom deserializer rules. The Text component's Rich Text Editor edits HTML, and its Source Edit view shows "the raw HTML" ([Adobe, Text Component](https://experienceleague.adobe.com/en/docs/experience-manager-core-components/using/wcm-components/text), October 2026). The default converter handles paragraphs, headings, lists and inline formatting; "anything else needs an explicit deserializer rule" ([Sanity Learn, Convert rich text to Portable Text](https://www.sanity.io/learn/course/migrating-content-from-webflow-to-sanity/convert-rich-text-portable-text), October 2026).

Tables need a decision up front. AEM's Rich Text Editor inserts tables, and the Portable Text Editor's built-in table editing, available from Studio v6.6.0, is disabled by default and binds to a `table` schema type you declare ([Sanity Docs, Configure the Portable Text Editor](https://www.sanity.io/docs/studio/portable-text-editor-configuration), October 2026).

Every other component becomes an object type in a page builder, which Sanity describes as "an array of custom object or reference types that can be reordered" ([Sanity Docs, page building guide](https://www.sanity.io/docs/developer-guides/how-to-use-structured-content-for-page-building), October 2026). Use objects for content that lives on one page and references for content reused across pages, such as Experience Fragments. Name types for meaning, such as a hero or a promotion, not for layout. Log every component type the converter skips, because each one is a schema decision. How Portable Text stores rich text explains the target format.

## How do you get content and assets out of AEM?

Adobe's knowledge base lists the supported ways out of Adobe Experience Manager (AEM): append `.model.json` to a published page URL for its component JSON, export asset metadata as CSV (comma-separated values), download assets in bulk as zip packages, script exports through the Assets HTTP API (application programming interface), and build packages in Package Manager ([Adobe, Export AEM assets and content](https://experienceleague.adobe.com/en/docs/experience-cloud-kcs/kbarticles/ka-34629), October 2026). Static HTML through `.export.zip` works on AEM 6.5 only.

- Custom components appear in `.model.json` only if they implement the exporter interface, so test every component type before you write the converter.
- Script the Assets HTTP API and confirm the output keeps the folder hierarchy, as Adobe's article advises.
- None of these routes gives Sanity-ready content. They give component JSON, files and repository packages to transform.

Content Fragments are also readable over AEM's GraphQL API ([Adobe, Introduction to Headless for AEM](https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/headless/introduction), October 2026). Adobe's Content Transfer Tool moves content from one AEM instance to AEM as a Cloud Service ([Adobe, Content Transfer Tool](https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/migration-journey/cloud-migration/content-transfer-tool/overview-content-transfer-tool), October 2026), so it doesn't help here. Because `.model.json` reads live published pages, the import script can re-run against fresh content until cutover, which is the idempotent script Sanity's course recommends ([Sanity Learn, Migrating without downtime](https://www.sanity.io/learn/course/re-platforming-to-sanity/migrating-without-downtime), October 2026). AEM export routes in depth and moving AEM Assets go further.

## How do you keep AEM URLs, vanity URLs and redirects?

Keep Adobe Experience Manager (AEM) URLs by crawling the live site, exporting every redirect and vanity URL, and storing each as a redirect document in Sanity that your front end serves. AEM defines "redirects, vanity URLs, and virtual hosts" through resource mapping ([Adobe, Resource Mapping](https://experienceleague.adobe.com/en/docs/experience-manager-65/content/implementing/deploying/configuring/resource-mapping), October 2026), and its two kinds of rule move differently:

- **Pattern mappings** pair a regular expression with a replacement ([Adobe, Resource Mapping](https://experienceleague.adobe.com/en/docs/experience-manager-65/content/implementing/deploying/configuring/resource-mapping), October 2026), so each needs rewriting in your front end's syntax.
- **Vanity URLs** "do not support regex patterns" ([Adobe, Resource Mapping for AEM as a Cloud Service](https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/implementing/deploying/resource-mapping), October 2026), so each one moves as a one-to-one redirect.

Sanity's redirects guide says there's no "one size fits all" approach, because frameworks handle redirects differently ([Sanity Docs, Managing redirects with Sanity](https://www.sanity.io/docs/developer-guides/managing-redirects-with-sanity), October 2026). Sanity's refactoring course adds the first step: crawl the existing site "to find every route that needs recreating" ([Sanity Learn, refactoring course](https://www.sanity.io/learn/course/refactoring-content/reducing-seo-impact), October 2026).

Count vanity URLs and pattern mappings before you pick the redirect method, because the count against your host's redirect limit decides between a configuration file and middleware. [Keeping search traffic through a migration](https://deploi.ca/sanity/migration/cms-to-sanity/seo-preservation) covers those limits, the URL map and monitoring.

## What replaces AEM workflows, Launches, Multi Site Manager and permissions?

Sanity has a counterpart for every Adobe Experience Manager (AEM) governance tool except live copies, but the matches for workflows, Launches and custom permissions are in early access or on Enterprise as of October 2026. AEM workflows automate steps "such as approval and sign-off" ([Adobe, Administering Workflows](https://experienceleague.adobe.com/en/docs/experience-manager-65/content/sites/administering/operations/workflows)); Launches hold future page versions you promote to the source ([Adobe, Launches](https://experienceleague.adobe.com/en/docs/experience-manager-65/content/sites/authoring/launches/launches)); Multi Site Manager syncs live copies with a source ([Adobe, Multi Site Manager](https://experienceleague.adobe.com/en/docs/experience-manager-65/content/sites/administering/introduction/msm), October 2026).

**Only live copies lack a Sanity counterpart; Launches and custom permissions need Enterprise**

| AEM tool | Sanity counterpart | Plan or status, October 2026 |
| --- | --- | --- |
| Workflow model | Sanity Workflows or custom Studio code | Early access |
| Launch | Content Releases | Enterprise add-on |
| One page scheduled | Scheduled drafts | Growth, Studio v4.14.0 or later |
| Live copy | None; per-market fields or datasets | Cross-dataset references are Enterprise |
| Group permissions | Five built-in roles | Growth |
| Custom permissions | Custom roles | Enterprise |

AEM tools are grouped by job (Deploi's judgment). Sources: [Sanity, Plans that scale with you](https://www.sanity.io/pricing); [Sanity Docs, Content Releases](https://www.sanity.io/docs/user-guides/content-releases); [Sanity Docs, Scheduled drafts](https://www.sanity.io/docs/studio/scheduled-drafts); [Sanity Docs, Roles and permissions](https://www.sanity.io/docs/content-lake/roles-concepts); [Sanity Docs, Multi-tenancy implementation](https://www.sanity.io/docs/developer-guides/multi-tenancy-implementation); [Sanity Docs, Workflows: How early access works](https://www.sanity.io/docs/workflows/prerelease); [Sanity Docs, Cross-dataset references](https://www.sanity.io/docs/studio/cross-dataset-references); [Sanity Docs, Workflows: Limits](https://www.sanity.io/docs/workflows/limits). As of 24 October 2026.

> **When to stay on AEM**
>
> Stay while live copies, Launches and AEM Assets carry work and there's no Enterprise budget, because Sanity has no live copies and its matches for the other two need Enterprise as of October 2026. Replacing live copies on Sanity and [scheduling a whole campaign at once](https://deploi.ca/sanity/features/content-releases) go further.

## What else do you replace when AEM goes?

Leaving Adobe Experience Manager (AEM) also retires its delivery tier, so plan four replacements before cutover:

- **Publish and Dispatcher.** Your front end and its CDN (content delivery network) serve pages. Adobe's own Edge Delivery Services "replaces AEM Publish / Dispatcher" ([Adobe, Edge Delivery Services](https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/edge-delivery/overview), October 2026), which shows where that layer sits.
- **Adobe Target and Adobe Analytics.** Their page hooks move into the new front end, in Deploi's judgment; the Adobe stack after AEM covers each one.
- **Forms.** Forms built as components need a form service or an API (application programming interface) route, in Deploi's judgment.
- **AEM Assets.** Images and files move to Sanity assets. Media Library, Sanity's app to "centrally store assets for use across multiple applications and datasets", is an Enterprise add-on ([Sanity Docs, Media Library](https://www.sanity.io/docs/media-library/introduction); [Sanity pricing](https://www.sanity.io/pricing), October 2026).

Each replacement is a cost driver, alongside component count and redirect volume (Deploi's judgment).

## What are the steps of an AEM to Sanity migration, and what goes wrong?

An Adobe Experience Manager (AEM) to Sanity migration runs in seven steps, and the import re-runs. A re-run of `sanity datasets import` fails on existing IDs unless you pass `--replace` or `--missing` ([Sanity Docs, Import data](https://www.sanity.io/docs/content-lake/importing-data), October 2026); [choosing between them](https://deploi.ca/sanity/migration/cms-to-sanity/safe-import) has its own guide.

**Migrating from AEM to Sanity**

1. **Inventory.** Crawl live URLs; list component types, live copies and vanity URLs. Owner: developer and content lead.
1. **Model.** Define document types by meaning. Owner: developer and content lead.
1. **Export.** Pull `.model.json` per page and assets through the Assets HTTP API (application programming interface). Owner: developer.
1. **Convert.** Run `htmlToBlocks()` with your rules; map components to page builder objects. Owner: developer.
1. **Import.** Run an idempotent script, Content Fragments first. Owner: developer.
1. **Redirect.** Add a redirect document per changed URL. Owner: search lead.
1. **Validate and cut over.** Run `sanity documents validate` ([Sanity Learn](https://www.sanity.io/learn/course/re-platforming-to-sanity/migrating-without-downtime), October 2026), check old URLs, switch one site at a time. Owner: developer.

> **Where AEM migrations stall**
>
> - Custom components without an exporter drop out of `.model.json`.
> - AEM paths contain slashes, and Sanity's import docs allow "letters, numbers, hyphens, and underscores" ([Sanity Docs, Import data](https://www.sanity.io/docs/content-lake/importing-data), October 2026), so derive a stable ID from each path.
> - Live copies with broken inheritance hold local edits ([Adobe, Multi Site Manager](https://experienceleague.adobe.com/en/docs/experience-manager-65/content/sites/administering/introduction/msm), October 2026), so export each one.

## Deploi's point of view

**Where we disagree.** The common pitch treats a headless migration as an export job. From AEM it isn't: every supported export route gives you component JSON, files or repository packages, never content shaped for Sanity, and Multi Site Manager inheritance has no Sanity equivalent to export into. The second mistake is reading a vendor's fast import run as a project timeline. The script's run time is the smallest part of the job; the content model, the rich text rules, the component mapping and the redirects are the work.

**What we've seen.** Rich text conversion is the part of this move closest to our own Sanity work: our Shopify FAQ hub converts Markdown to Portable Text with custom block types for tables, callouts and code, and 229 of its 256 live answers carried at least one table on 24 October 2026. Our FAQ release scripts are dry runs until an apply flag runs them, and they skip any document edited since the snapshot. We ship content as packages with count checks and a rollback by document ID list; the first wave package of our Shopify data section held 406 documents and 159 images. Our view of AEM rests on Adobe's documentation and public sources.

**First steps we'd suggest.** Before any schema work, pull three lists from AEM: every component type in use with a count of pages that use it, every blueprint and live copy, and every vanity URL and resource mapping rule. The first sizes the Sanity schema, the second decides between fields per market and a dataset per market, and the third picks the redirect method.

**What we refuse to promise.** We won't quote hours or a timeline for an AEM to Sanity move from a call, because each estimate starts from your own AEM estate. Sanity's 17-hour Tata figure is one script run in a vendor story, not a project duration.

## When this answer changes

- Sanity publishes an AEM importer or course, or changes its migration skill's AEM guide
- Adobe changes the supported export routes in its knowledge base, such as .model.json or .export.zip
- Sanity moves Content Releases, custom roles or Media Library onto the Growth plan
- Sanity Workflows leaves early access
- Adobe changes the AEM 6.5 core support end date of 28 February 2027

## Ready to plan your AEM to Sanity migration?

Contact us today to talk through your AEM sites, your content model and what a phased move to Sanity would involve. [Contact us](https://deploi.ca/contact)

## Sources

1. [Adobe Experience League, Export AEM assets and content using supported methods](https://experienceleague.adobe.com/en/docs/experience-cloud-kcs/kbarticles/ka-34629), checked 24 October 2026
2. [Adobe Experience League, Text Component](https://experienceleague.adobe.com/en/docs/experience-manager-core-components/using/wcm-components/text), checked 24 October 2026
3. [Adobe Experience League, Introduction to Headless for AEM](https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/headless/introduction), checked 24 October 2026
4. [Adobe Experience League, Experience Fragments](https://experienceleague.adobe.com/en/docs/experience-manager-65/content/sites/authoring/authoring/experience-fragments), checked 24 October 2026
5. [Adobe Experience League, Reusing Content: Multi Site Manager and Live Copy](https://experienceleague.adobe.com/en/docs/experience-manager-65/content/sites/administering/introduction/msm), checked 24 October 2026
6. [Adobe Experience League, Using Launches to develop content for a future release](https://experienceleague.adobe.com/en/docs/experience-manager-65/content/sites/authoring/launches/launches), checked 24 October 2026
7. [Adobe Experience League, Administering Workflows](https://experienceleague.adobe.com/en/docs/experience-manager-65/content/sites/administering/operations/workflows), checked 24 October 2026
8. [Adobe Experience League, Resource Mapping (AEM 6.5)](https://experienceleague.adobe.com/en/docs/experience-manager-65/content/implementing/deploying/configuring/resource-mapping), checked 24 October 2026
9. [Adobe Experience League, Resource Mapping (AEM as a Cloud Service)](https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/implementing/deploying/resource-mapping), checked 24 October 2026
10. [Adobe Experience League, Edge Delivery Services Overview](https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/edge-delivery/overview), checked 24 October 2026
11. [Adobe Experience League, AEM 6.5 On-premise support timelines and service pack policy](https://experienceleague.adobe.com/en/docs/experience-cloud-kcs/kbarticles/ka-42541), checked 24 October 2026
12. [Sanity Learn, Planning a re-platforming project](https://www.sanity.io/learn/course/re-platforming-to-sanity/planning-a-re-platforming-project), checked 24 October 2026
13. [Sanity Learn, Re-modelling your existing content](https://www.sanity.io/learn/course/re-platforming-to-sanity/re-modelling-your-existing-content), checked 24 October 2026
14. [Sanity Learn, Migrating without downtime](https://www.sanity.io/learn/course/re-platforming-to-sanity/migrating-without-downtime), checked 24 October 2026
15. [Sanity Learn, Convert rich text to Portable Text](https://www.sanity.io/learn/course/migrating-content-from-webflow-to-sanity/convert-rich-text-portable-text), checked 24 October 2026
16. [Sanity Docs, Import data](https://www.sanity.io/docs/content-lake/importing-data), checked 24 October 2026
17. [Sanity Docs, Configure the Portable Text Editor](https://www.sanity.io/docs/studio/portable-text-editor-configuration), checked 24 October 2026
18. [Sanity Docs, Managing redirects with Sanity](https://www.sanity.io/docs/developer-guides/managing-redirects-with-sanity), checked 24 October 2026
19. [Sanity Learn, Reducing SEO impact](https://www.sanity.io/learn/course/refactoring-content/reducing-seo-impact), checked 24 October 2026
20. [Sanity Docs, Media Library introduction](https://www.sanity.io/docs/media-library/introduction), checked 24 October 2026
21. [Sanity, Plans that scale with you](https://www.sanity.io/pricing), checked 24 October 2026
22. [Sanity Docs, Content Releases](https://www.sanity.io/docs/user-guides/content-releases), checked 24 October 2026
23. [Sanity Docs, Scheduled drafts](https://www.sanity.io/docs/studio/scheduled-drafts), checked 24 October 2026
24. [Sanity Docs, Roles and permissions](https://www.sanity.io/docs/content-lake/roles-concepts), checked 24 October 2026
25. [Sanity Docs, Multi-tenancy implementation](https://www.sanity.io/docs/developer-guides/multi-tenancy-implementation), checked 24 October 2026
26. [Sanity Docs, Workflows: How early access works](https://www.sanity.io/docs/workflows/prerelease), checked 24 October 2026
27. [Sanity, Scaling a multi-brand e-commerce mobile app (Tata Digital)](https://www.sanity.io/customers/tata), checked 24 October 2026
28. [Sanity Learn, Migrating content from WordPress to Sanity: Introduction](https://www.sanity.io/learn/course/migrating-content-from-wordpress-to-sanity/introduction-to-wp-migration), checked 24 October 2026
29. [Sanity, You'll need a CMS eventually. Let your agent set it up.](https://www.sanity.io/blog/sanity-remote-mcp-server-is-generally-available), checked 24 October 2026
30. [Sanity Docs, How to use structured content for page building](https://www.sanity.io/docs/developer-guides/how-to-use-structured-content-for-page-building), checked 24 October 2026
31. [Adobe Experience League, Overview to Content Transfer Tool](https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/migration-journey/cloud-migration/content-transfer-tool/overview-content-transfer-tool), checked 24 October 2026
32. [Sanity Docs, Cross-dataset references](https://www.sanity.io/docs/studio/cross-dataset-references), checked 24 October 2026
33. [Sanity Docs, Workflows: Limits](https://www.sanity.io/docs/workflows/limits), checked 24 October 2026
34. [Adobe Experience League, AEM 6.5 LTS Frequently Asked Questions](https://experienceleague.adobe.com/en/docs/experience-manager-65-lts/content/release-notes/faq), checked 24 October 2026
35. [Sanity, August releases 2026](https://www.sanity.io/blog/august-releases-2026), checked 25 October 2026
36. [Sanity, sanity-migration skill (agent toolkit)](https://github.com/sanity-io/agent-toolkit/blob/main/skills/sanity-migration/SKILL.md), checked 25 October 2026
