# How do you migrate from Sitecore (XP or SitecoreAI) to Sanity?

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

## Short answer

A Sitecore to Sanity migration, from Sitecore Experience Platform (XP) or SitecoreAI, is a scripted rebuild: templates become schema types, layouts become page-builder arrays, and Rich Text HTML becomes Portable Text ([Sanity Docs](https://www.sanity.io/docs/developer-guides/how-to-use-structured-content-for-page-building); [Sanity Learn](https://www.sanity.io/learn/course/migrating-content-from-webflow-to-sanity/convert-rich-text-portable-text), October 2026). Personalization rules and xDB (Experience Database) data need their own plan, because Sitecore's own migration app doesn't move them ([Sitecore](https://doc.sitecore.com/sai/en/developers/sitecoreai/migrate-a-site-to-sitecoreai.html), October 2026).

- **Sitecore Rich Text field:** Stores HTML, with internal links and images. Convert it with htmlToBlocks() and a deserializer rule per HTML pattern; internal links become references to the linked documents ([Sitecore, The simple field types](https://doc.sitecore.com/xp/en/developers/105/sitecore-experience-manager/the-simple-field-types.html); [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))
- **Export route:** Authoring and Management GraphQL API. Documented with read/write access on SitecoreAI and on XP 10.5; check an older XP version's own docs before you rely on it ([Sitecore, Sitecore Authoring and Management GraphQL API (SitecoreAI)](https://doc.sitecore.com/sai/en/developers/sitecoreai/content-modeling-and-presentation/sitecore-authoring-and-management-graphql-api/sitecore-authoring-and-management-graphql-api.html); [Sitecore, Sitecore Authoring and Management GraphQL API (XP 10.5)](https://doc.sitecore.com/xp/en/developers/105/sitecore-experience-manager/sitecore-authoring-and-management-graphql-api.html))
- **What Sitecore's own app leaves behind:** Personalization, xDB data, page designs. SitecoreAI Pathway, Sitecore's app for moving XM and XP sites to SitecoreAI, leaves them behind, so plan replacements before cutover ([Sitecore, Migrate a site to SitecoreAI](https://doc.sitecore.com/sai/en/developers/sitecoreai/migrate-a-site-to-sitecoreai.html))
- **Sanity's migration skill for AI agents:** No Sitecore guide among its eight source guides. Guides cover Adobe Experience Manager, Contentful, Strapi, Webflow, WordPress, Payload, Drupal and Markdown; Sanity calls the skill agent-scaffolded, not fully automated ([Sanity on GitHub, sanity-migration skill](https://github.com/sanity-io/agent-toolkit/blob/main/skills/sanity-migration/SKILL.md); [Sanity, What's new in August: inline tables, functions calling functions, and visual editing without React](https://www.sanity.io/blog/august-releases-2026))

## Deploi's call

Move from Sitecore to Sanity one site at a time, starting with the site that has the least personalization, and remodel as you go instead of copying the content tree. Choose what replaces personalization, forms and email before the first cutover, because those don't migrate; they get rebuilt or replaced.

**PHASE: Move from Sitecore to Sanity one site at a time when**

- Several sites or brands share one Sitecore instance, so you can move one site, prove the content model and redirects, and keep the rest running.
- Personalization rules run on some pages, so those pages stay on Sitecore until a replacement service is live.
- Your Sitecore version gets security fixes for the whole move, because Sitecore says that since 1 June 2026 its Extended support includes them only as an option you arrange with Sitecore ([Sitecore Support](https://support.sitecore.com/kb?id=kb_article_view&sysparm_article=KB0641167), as of October 2026).

**STAY: Stay on Sitecore while**

- Sitecore Experience Platform (XP) features such as xDB (Experience Database) personalization, Marketing Automation or EXM (Email Experience Manager) run daily with no replacement chosen, because Sitecore's own migration app, which moves sites to SitecoreAI, leaves them behind.
- Your content store must be self-hosted, because Sanity Studio "always connects to a dataset in the hosted Content Lake" ([Sanity Docs, Studio development](https://www.sanity.io/docs/studio/development), as of October 2026).
- No JavaScript developer on your team will own Sanity Studio after launch, so the new stack would have no owner.

## How do Sitecore templates, items, renderings and placeholders map to Sanity?

Sitecore templates map to Sanity schema types, content items to documents, and each page's layout to an array field on a page document. Sitecore compares templates to classes and items to instances; a page's layout is renderings in placeholders, each fed by a datasource item ([Sitecore, Content authoring concepts](https://doc.sitecore.com/sai/en/developers/sitecoreai/sitecoreai/content-authoring-concepts-for-developers-new-to-sitecore.html), October 2026). A Sanity page builder is an array of objects or references, with no pre-built blocks ([Sanity Docs, Page building](https://www.sanity.io/docs/developer-guides/how-to-use-structured-content-for-page-building), October 2026).

**Templates become schema types; layout becomes a page-builder array**

| Sitecore | Sanity | Migration note |
| --- | --- | --- |
| Data template | Document or object type | Model what the content is |
| Template field | Field | Pick a Sanity type per field type |
| Standard values | initialValue | Fills new documents only |
| Content item | Document | Reuse its Sitecore ID |
| Page item with layout | page document with an array | One array per placeholder |
| Rendering | Object type in the array | Its datasource template sets the fields |
| Datasource used once | Inline object | Stays in the page |
| Shared datasource | Referenced document | One edit updates every page |
| Site or site collection | Dataset or Studio workspace | Split by who edits what |

Objects stay inside one page; references can be reused across pages ([Sanity Docs](https://www.sanity.io/docs/developer-guides/how-to-use-structured-content-for-page-building), October 2026). Dataset limits vary by plan ([Sanity pricing](https://www.sanity.io/pricing), October 2026). Sources: [Sitecore, Content authoring concepts for developers new to Sitecore](https://doc.sitecore.com/sai/en/developers/sitecoreai/sitecoreai/content-authoring-concepts-for-developers-new-to-sitecore.html); [Sitecore, Standard values for data template fields](https://doc.sitecore.com/xp/en/developers/105/sitecore-experience-manager/standard-values-for-data-template-fields.html); [Sitecore, SitecoreAI](https://doc.sitecore.com/sai/en/developers/sitecoreai/sitecoreai.html); [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); [Sanity Docs, Initial Value Templates](https://www.sanity.io/docs/studio/initial-value-templates); [Sanity, Plans that scale with you](https://www.sanity.io/pricing); [Sanity Docs, Workspaces](https://www.sanity.io/docs/studio/workspaces). As of 24 October 2026.

## How do you get content out of Sitecore?

The Authoring and Management GraphQL API (application programming interface) is the export route on SitecoreAI and on Sitecore Experience Platform (XP) 10.5. Sitecore documents it on both as one endpoint and schema with read/write access ([Sitecore, SitecoreAI docs](https://doc.sitecore.com/sai/en/developers/sitecoreai/content-modeling-and-presentation/sitecore-authoring-and-management-graphql-api/sitecore-authoring-and-management-graphql-api.html); [Sitecore, XP 10.5 docs](https://doc.sitecore.com/xp/en/developers/105/sitecore-experience-manager/sitecore-authoring-and-management-graphql-api.html), October 2026). SitecoreAI is the new name for XM Cloud, Sitecore's cloud Experience Manager (XM) ([Sitecore](https://doc.sitecore.com/sai/en/developers/sitecoreai/deploying-sitecoreai.html), October 2026). On an older XP release, confirm the route in that version's documentation first. Two other routes do narrower jobs:

- **Sitecore Content Serialization** writes items to YAML for structural items such as templates, renderings and placeholder settings ([Sitecore, Content Serialization](https://doc.sitecore.com/sai/en/developers/sitecoreai/sitecore-content-serialization/sitecore-content-serialization.html), October 2026). It mainly feeds your schema map; read structure from it, and take content through the GraphQL API.
- **Experience Edge** serves published content and a snapshot of the Layout Service output for a route ([Sitecore, Experience Edge](https://doc.sitecore.com/sai/en/developers/sitecoreai/experience-edge/experience-edge.html), October 2026). Call it per URL to record each page's layout; it's a delivery API, not a bulk export.

Export effective values, not stored ones. A Sitecore field left unset (NULL) shows its template's standard value, and Sitecore advises keeping layout settings there ([Sitecore, Standard values](https://doc.sitecore.com/xp/en/developers/105/sitecore-experience-manager/standard-values-for-data-template-fields.html), October 2026). Sanity initial values only fill new documents created in Sanity Studio ([Sanity Docs, Initial Value Templates](https://www.sanity.io/docs/studio/initial-value-templates), October 2026), so an import that skips standard values lands with blank fields.

## How does Sitecore Rich Text become Portable Text?

Sitecore Rich Text becomes Portable Text through `htmlToBlocks()` and custom deserializer rules, because the field stores HTML text, including internal links and images ([Sitecore, The simple field types](https://doc.sitecore.com/xp/en/developers/105/sitecore-experience-manager/the-simple-field-types.html), October 2026). Sanity's Learn course converts rich text this way and turns internal links into references through a URL map ([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). Sanity's migration skill for AI agents has no Sitecore guide, only ones for Adobe Experience Manager, Contentful, Strapi, Webflow, WordPress, Payload, Drupal and Markdown ([Sanity on GitHub](https://github.com/sanity-io/agent-toolkit/blob/main/skills/sanity-migration/SKILL.md), October 2026), and Sanity calls it "agent-scaffolded, not fully automated" ([Sanity August releases](https://www.sanity.io/blog/august-releases-2026), October 2026). Write a rule for each pattern in your own HTML:

- **Internal links:** resolve each linked item to its Sanity document and store a reference, so links survive URL changes.
- **Images:** swap each media item for a Sanity image asset with its alt text.
- **Tables:** the Portable Text Editor edits tables from Studio v6.6.0; the feature is off by default and needs a `table` schema type you declare ([Sanity Docs, Configure the Portable Text Editor](https://www.sanity.io/docs/studio/portable-text-editor-configuration); [Sanity's August 2026 release notes](https://www.sanity.io/blog/august-releases-2026), October 2026).
- **Inline styles and wrapper markup:** keep what editors need and drop the rest, because it's presentation.

Log every element no rule handles, since each one is a schema decision. How Portable Text stores rich text explains the target format.

## What happens to the Sitecore Media Library, language versions and numbered versions?

Sitecore Media Library items become Sanity assets, language versions become localized documents or fields, and numbered versions mostly stay behind. Sitecore keeps two kinds of versions per item: numbered versions in one language, such as a promotion copy of a page, and language versions ([Sitecore, Versioning](https://doc.sitecore.com/xp/en/users/105/sitecore-experience-platform/versioning.html), October 2026).

**Assets and languages move; old numbered versions don't**

| Sitecore | Sanity, October 2026 | What to decide |
| --- | --- | --- |
| Media Library item | Image or file asset | Imports on every plan |
| Assets shared across sites | Media Library | Enterprise add-on |
| Language version | Document-level localization | Each language publishes alone |
| Short shared values | Field-level localization | All languages publish together |
| Live numbered version | Published document | Import only this one |
| Promotion version | Scheduled drafts or Content Releases | Releases is an Enterprise add-on |

Imports into Sanity's Media Library add-on need a data.ndjson file and skip files in subfolders, so flatten Sitecore's folder tree first ([Sanity Docs, Import assets](https://www.sanity.io/docs/media-library/importing-assets), October 2026). Sources: [Sitecore, Versioning](https://doc.sitecore.com/xp/en/users/105/sitecore-experience-platform/versioning.html); [Sanity Docs, Import data](https://www.sanity.io/docs/content-lake/importing-data); [Sanity Docs, Localization](https://www.sanity.io/docs/studio/localization); [Sanity, Plans that scale with you](https://www.sanity.io/pricing); [Sanity Docs, Configure your studios and CLI to use Media Library](https://www.sanity.io/docs/media-library/configure-library); [Sanity Docs, Scheduled drafts](https://www.sanity.io/docs/studio/scheduled-drafts); [Sanity, Scheduled Drafts: Stop manually publishing content at midnight](https://www.sanity.io/blog/scheduled-drafts). As of 24 October 2026.

Sitecore keeps alt text on each language version of an image ([Sitecore, Versioning](https://doc.sitecore.com/xp/en/users/105/sitecore-experience-platform/versioning.html), October 2026); in Sanity, put it on the image field of each language's document. [Our review of Sanity's localization models](https://deploi.ca/sanity/review/localization) helps you choose.

## How do you import Sitecore items into Sanity?

Import Sitecore items as NDJSON (newline-delimited JSON) with `sanity datasets import`, and use each item's globally unique identifier (GUID) as its Sanity document ID, so a rerun with `--replace` overwrites the same documents instead of duplicating them ([Sanity Docs, Datasets command reference](https://www.sanity.io/docs/cli-reference/cli-datasets), October 2026). Key each language version as the item GUID plus the language code, such as `<guid>-en`. Sanity accepts IDs made of letters, numbers, hyphens and underscores ([Sanity Docs, Import data](https://www.sanity.io/docs/content-lake/importing-data), October 2026), so strip any other characters; reused source IDs make the script idempotent ([Sanity Learn, Migrating without downtime](https://www.sanity.io/learn/course/re-platforming-to-sanity/migrating-without-downtime), October 2026).

Shared datasources can land in any order. References import as weak and flip to strong once every document is in place ([Sanity Docs, Import data](https://www.sanity.io/docs/content-lake/importing-data), October 2026), so a shared datasource document and the pages that use it need no set import sequence.

The rest of a safe import is the same for every source CMS (content management system): validation, a rehearsal, `--missing` for datasets editors already use, paused webhooks and rollback. [Safe imports into Sanity](https://deploi.ca/sanity/migration/cms-to-sanity/safe-import) covers them.

## What happens to Sitecore URLs, redirects and SEO?

Every Sitecore URL needs a matching Sanity route or a permanent redirect to protect search engine optimization (SEO), aliases included. Sanity's re-platforming course says to crawl the live site as well as export its content, and that the new front end "should not create a new link structure without appropriate redirects" ([Sanity Learn, re-platforming course](https://www.sanity.io/learn/course/re-platforming-to-sanity/re-modelling-your-existing-content), October 2026).

Sitecore aliases need their own entries in the URL map. An alias gives one content item more than one URL, and Sitecore warns that this "can confuse search engines" ([Sitecore, Aliases](https://doc.sitecore.com/xp/en/developers/105/sitecore-experience-manager/aliases.html), October 2026). So export every alias, give each item one canonical URL in Sanity, and redirect every alias to that URL instead of rebuilding aliases as extra routes (Deploi's judgment).

Where the redirects run, how many your host allows and the checks after launch work the same for every source CMS (content management system): [keeping SEO through a move to Sanity](https://deploi.ca/sanity/migration/cms-to-sanity/seo-preservation) covers them.

## What replaces Sitecore's workflow, roles and modules?

Sitecore's workflow and modules don't migrate to Sanity: each is mapped to Sanity roles, rebuilt in a separate service, or dropped. Sitecore's own list of what SitecoreAI lacks names the marketing pieces, from xDB (Sitecore's Experience Database) personalization rules to EXM (Email Experience Manager) and Sitecore Forms ([Sitecore, Limitations and restrictions](https://doc.sitecore.com/sai/en/developers/sitecoreai/sitecoreai/limitations-and-restrictions.html), October 2026), so moving to SitecoreAI rebuilds them too. SitecoreAI keeps workflows in its Content Editor ([Sitecore, SitecoreAI](https://doc.sitecore.com/sai/en/developers/sitecoreai/sitecoreai.html), October 2026).

**Roles map across; the marketing suite and search move to other services**

| Sitecore | Sanity side, October 2026 | What you do |
| --- | --- | --- |
| Workflow states | Contributor drafts, Editor publishes | Map each state to a role |
| Security roles | 5 roles on Growth, custom on Enterprise | Re-invite members by role |
| Personalization, Forms and EXM | Plugin stores variants; no built-in forms or email | Rebuild in separate services |
| Custom search indexes | GROQ (Graph-Relational Object Queries) search; semantic search on every plan, within a monthly query quota | Query Sanity first; add a search service for facets |

Sanity Workflows is in early access ([Sanity Docs, Workflows](https://www.sanity.io/docs/workflows/introduction); [How early access works](https://www.sanity.io/docs/workflows/prerelease), October 2026). The marketing suite row is Deploi's judgment. Sources: [Sitecore, Limitations and restrictions](https://doc.sitecore.com/sai/en/developers/sitecoreai/sitecoreai/limitations-and-restrictions.html); [Sanity, Plans that scale with you](https://www.sanity.io/pricing); [Sanity Docs, Workflows](https://www.sanity.io/docs/workflows/introduction); [Sanity Docs, How early access works](https://www.sanity.io/docs/workflows/prerelease); [Sanity Docs, Roles and permissions](https://www.sanity.io/docs/content-lake/roles-concepts); [Sanity Docs, How to implement multi-tenancy with Sanity](https://www.sanity.io/docs/developer-guides/multi-tenancy-implementation); [Sanity, @sanity/personalization-plugin](https://www.sanity.io/plugins/sanity-personalization-plugin); [Sitecore, Workflow](https://doc.sitecore.com/xp/en/developers/105/sitecore-experience-manager/workflow.html); [Sanity Docs, Dataset Embeddings](https://www.sanity.io/docs/content-lake/dataset-embeddings). As of 24 October 2026.

[How Sanity and Sitecore compare](https://deploi.ca/sanity/compare/sanity-vs-sitecore) weighs the full marketing suite, and Sanity Workflows tracks its release.

## What is the step-by-step plan for a Sitecore to Sanity migration?

A Sitecore to Sanity migration runs in seven steps, one site at a time, so each site's content model and redirects are proven before the next starts. Sanity's course advises starting with low-risk content ([Sanity Learn](https://www.sanity.io/learn/course/re-platforming-to-sanity/re-modelling-your-existing-content), October 2026). [Leaving Sitecore](https://deploi.ca/sanity/migration/leaving-sitecore) says whether your Sitecore version's support dates set the pace.

**Migrating Sitecore to Sanity**

1. **Inventory.** Serialize templates and renderings, crawl every URL, and list each page's personalization rules. Owner: Sitecore developer.
1. **Model.** Turn templates into schema types and renderings into page-builder objects. Owner: developer and content lead.
1. **Export.** Pull items through the Authoring and Management GraphQL endpoint with standard values resolved. Owner: developer.
1. **Convert rich text.** Run `htmlToBlocks()` with a rule per pattern. Owner: developer.
1. **Import and validate.** Load NDJSON keyed by Sitecore item IDs, then validate. Owner: developer.
1. **Redirect.** Map every URL and alias. Owner: search lead.
1. **Cut over one site.** Switch it, crawl it, then plan the next. Owner: site owner.

> **Where Sitecore migrations go wrong**
>
> - Copying the content tree as-is, which Sanity's course says recreates "your existing problems, just on a new stack" ([Sanity Learn](https://www.sanity.io/learn/course/re-platforming-to-sanity/planning-a-re-platforming-project), October 2026).
> - Personalization rules with no replacement chosen ([Sitecore](https://doc.sitecore.com/sai/en/developers/sitecoreai/migrate-a-site-to-sitecoreai.html), October 2026).

## Deploi's point of view

**Where we disagree.** The common pitch treats a Sitecore exit as a content export: pull the items, push them into the new CMS. Sitecore content isn't only items. A page's meaning sits in layout data, standard values and datasource items, and its marketing value sits in xDB and personalization rules that Sitecore's own migration app leaves behind. The second wrong claim is that XP is ending, so you must leave now. Sitecore says it shipped XP 10.5 in August 2026. Leave because the content model or the cost no longer fits, not because of a deadline that doesn't exist for every version.

**What we've seen.** We convert Markdown into Portable Text for our own content: deploi.ca's FAQ hub stores its answers as Portable Text extended with custom table, callout and code blocks, filled by our own converter, and 229 of 256 live answers carry at least one custom table block, counted 24 October 2026. We load content with NDJSON imports, document IDs prefixed drafts. so it lands unpublished, weak references so import order doesn't matter, and an export to restore from. Our view of Sitecore rests on its documentation and public sources.

**What we'd tell you to do first.** Before any schema work, pull three lists from Sitecore: every template with its base templates and standard values, every rendering with the datasource template it expects, and every personalization rule with the pages it runs on. The first two become the Sanity schema. The third is the list of things you rebuild elsewhere or drop.

**What we refuse to promise.** We won't promise that personalization carries over, a cutover date before those three lists exist, or a price on this page. Cost depends on templates, renderings, languages and the rules you rebuild, so we scope it on a call.

## When this answer changes

- Sitecore updates its Product Support Lifecycle page, where changes apply 30 days after posting
- Sanity publishes a Sitecore migration course, importer or migration-skill guide
- Sitecore changes the Authoring and Management GraphQL API or Experience Edge
- Sanity Workflows leaves early access
- Sanity moves Media Library or Content Releases to another plan
- SitecoreAI Pathway starts moving personalization, xDB data or page designs

## Ready to plan your Sitecore exit?

Contact us today to scope a Sitecore to Sanity migration from your own templates, renderings and personalization rules. [Book a call](https://deploi.ca/contact)

## Sources

1. [Sitecore, Content authoring concepts for developers new to Sitecore](https://doc.sitecore.com/sai/en/developers/sitecoreai/sitecoreai/content-authoring-concepts-for-developers-new-to-sitecore.html), checked 24 October 2026
2. [Sitecore, Migrate a site to SitecoreAI](https://doc.sitecore.com/sai/en/developers/sitecoreai/migrate-a-site-to-sitecoreai.html), checked 24 October 2026
3. [Sitecore, Limitations and restrictions](https://doc.sitecore.com/sai/en/developers/sitecoreai/sitecoreai/limitations-and-restrictions.html), checked 24 October 2026
4. [Sitecore, The simple field types](https://doc.sitecore.com/xp/en/developers/105/sitecore-experience-manager/the-simple-field-types.html), checked 24 October 2026
5. [Sitecore, Versioning](https://doc.sitecore.com/xp/en/users/105/sitecore-experience-platform/versioning.html), checked 24 October 2026
6. [Sitecore, Standard values for data template fields](https://doc.sitecore.com/xp/en/developers/105/sitecore-experience-manager/standard-values-for-data-template-fields.html), checked 24 October 2026
7. [Sitecore, Sitecore Authoring and Management GraphQL API (SitecoreAI)](https://doc.sitecore.com/sai/en/developers/sitecoreai/content-modeling-and-presentation/sitecore-authoring-and-management-graphql-api/sitecore-authoring-and-management-graphql-api.html), checked 24 October 2026
8. [Sitecore, Sitecore Authoring and Management GraphQL API (XP 10.5)](https://doc.sitecore.com/xp/en/developers/105/sitecore-experience-manager/sitecore-authoring-and-management-graphql-api.html), checked 24 October 2026
9. [Sitecore, Experience Edge](https://doc.sitecore.com/sai/en/developers/sitecoreai/experience-edge/experience-edge.html), checked 24 October 2026
10. [Sitecore, Sitecore Content Serialization](https://doc.sitecore.com/sai/en/developers/sitecoreai/sitecore-content-serialization/sitecore-content-serialization.html), checked 24 October 2026
11. [Sitecore, Sitecore Product Support Lifecycle](https://support.sitecore.com/kb?id=kb_article_view&sysparm_article=KB0641167), checked 24 October 2026
12. [Sitecore, Aliases](https://doc.sitecore.com/xp/en/developers/105/sitecore-experience-manager/aliases.html), checked 25 October 2026
13. [Sitecore, SitecoreAI](https://doc.sitecore.com/sai/en/developers/sitecoreai/sitecoreai.html), checked 24 October 2026
14. [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
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 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
18. [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
19. [Sanity Learn, Migrating without downtime](https://www.sanity.io/learn/course/re-platforming-to-sanity/migrating-without-downtime), checked 24 October 2026
20. [Sanity Docs, Initial Value Templates](https://www.sanity.io/docs/studio/initial-value-templates), checked 24 October 2026
21. [Sanity Docs, Localization](https://www.sanity.io/docs/studio/localization), checked 24 October 2026
22. [Sanity, Plans that scale with you](https://www.sanity.io/pricing), checked 24 October 2026
23. [Sanity Docs, Configure your studios and CLI to use Media Library](https://www.sanity.io/docs/media-library/configure-library), checked 24 October 2026
24. [Sanity Docs, Import assets to Media Library](https://www.sanity.io/docs/media-library/importing-assets), checked 24 October 2026
25. [Sanity Docs, Scheduled drafts](https://www.sanity.io/docs/studio/scheduled-drafts), checked 24 October 2026
26. [Sanity, Scheduled Drafts: Stop manually publishing content at midnight](https://www.sanity.io/blog/scheduled-drafts), checked 24 October 2026
27. [Sanity Docs, Workflows](https://www.sanity.io/docs/workflows/introduction), checked 24 October 2026
28. [Sanity Docs, How early access works](https://www.sanity.io/docs/workflows/prerelease), checked 24 October 2026
29. [Sanity Docs, Roles and permissions](https://www.sanity.io/docs/content-lake/roles-concepts), checked 24 October 2026
30. [Sanity Docs, How to implement multi-tenancy with Sanity](https://www.sanity.io/docs/developer-guides/multi-tenancy-implementation), checked 24 October 2026
31. [Sanity, @sanity/personalization-plugin](https://www.sanity.io/plugins/sanity-personalization-plugin), checked 24 October 2026
32. [Sanity Docs, Configure the Portable Text Editor](https://www.sanity.io/docs/studio/portable-text-editor-configuration), checked 24 October 2026
33. [Sanity, What's new in August: inline tables, functions calling functions, and visual editing without React](https://www.sanity.io/blog/august-releases-2026), checked 24 October 2026
34. [Sitecore, Deploying SitecoreAI](https://doc.sitecore.com/sai/en/developers/sitecoreai/deploying-sitecoreai.html), checked 24 October 2026
35. [Sitecore, Workflow](https://doc.sitecore.com/xp/en/developers/105/sitecore-experience-manager/workflow.html), checked 24 October 2026
36. [Sanity Docs, Workspaces](https://www.sanity.io/docs/studio/workspaces), checked 24 October 2026
37. [Sanity Docs, Datasets CLI command reference](https://www.sanity.io/docs/cli-reference/cli-datasets), checked 24 October 2026
38. [Sanity Docs, Studio development](https://www.sanity.io/docs/studio/development), checked 24 October 2026
39. [Sanity on GitHub, sanity-migration skill](https://github.com/sanity-io/agent-toolkit/blob/main/skills/sanity-migration/SKILL.md), checked 24 October 2026
40. [Sanity Docs, Dataset Embeddings](https://www.sanity.io/docs/content-lake/dataset-embeddings), checked 24 October 2026
