What is your developer-dependent CMS actually costing you? Calculate your costs and get a full report
What is your developer-dependent CMS actually costing you? Calculate your costs and get a full report
Migrating to Agility
Export Sitecore items with the ItemService REST API, Sitecore Content Serialization or the XM Cloud Authoring and Management GraphQL API, then map templates, items, presentation details and languages to Agility.
Last verified: 2026-10-03 against Sitecore's developer documentation for Sitecore XP and XM 10.x and for XM Cloud. Sitecore products and versions differ, so check the documentation for your version before relying on a detail here.
This guide applies the phases in Migrating to Agility to a Sitecore site. It covers the export options Sitecore documents, and how Sitecore's templates, items, presentation details and languages map to Agility's models, pages, components and locales.
__Renderings, a shared layout for all languages and versions, and __Final Renderings, a versioned layout per language and version. Sitecore merges the two to produce the final presentation. A layout contains placeholders where renderings are inserted, and many renderings take their content from data source items stored elsewhere in the content tree, so the same rendering can be reused on many pages.| Option | What you get | Notes |
|---|---|---|
| ItemService REST API | JSON for individual items, their children and search results | Base route /sitecore/api/ssc/item. Log in first with POST /sitecore/api/ssc/auth/login, which only responds over HTTPS. |
| Sitecore Content Serialization (Sitecore CLI) | Items serialized to .yml files on disk | dotnet sitecore ser pull writes the items configured in your module files. Needs elevated permissions. |
| XM Cloud: Authoring and Management GraphQL API | Items through a GraphQL endpoint | https://<your-instance>/sitecore/api/authoring/graphql/v1/. Needs at least the sitecore\Sitecore Client Users role. |
| Request | Returns |
|---|---|
GET /sitecore/api/ssc/item/{id} | One item by its ID |
GET /sitecore/api/ssc/item/?path=/sitecore/content/Home | One item by its path |
GET /sitecore/api/ssc/item/{id}/children | The item's direct children |
Each response includes the item's ItemID, ItemName, ItemPath, ParentID, TemplateID, TemplateName, ItemLanguage and ItemVersion, plus its field values. Start at your site's home item and request children recursively, once per language you are migrating.
The database, language and version parameters default to the context database, the context language and the latest version. Set them explicitly so you know exactly which content you exported. fields limits the response to the fields you name. includeStandardTemplateFields=true adds the standard template fields to the response; the layout fields __Renderings and __Final Renderings are among an item's standard fields, so use it when you export presentation details.
| Sitecore | Agility | Notes |
|---|---|---|
| Data template for structured content (articles, people, products) | Content model plus a list container | Store the Sitecore ItemID in a SourceID Text field. |
| Template section | A Tab in the model | Tabs only group fields in the editor. |
| Base templates | Fields on each model that needs them, or a linked item | List every inherited field a template really uses before you design the model. |
| Standard values | Default values, or values written into each item | Check what your export returns for a field that relies on its standard value. |
| Page items under the home item | Pages in the sitemap | The tree position becomes the sitemap position. |
| Page items of one template with many instances | A list plus a dynamic page | See Generating Dynamic Pages From Content. |
| Layout and placeholders | A page model and its zones | |
| Renderings | Component models placed in zones | |
| Data source items | The component's own fields, or a shared list item the component links to | Shared data sources used on many pages fit a shared list. |
| Media library items | The Agility media library | |
| Languages | Agility locales |
| Sitecore field type | Agility field type |
|---|---|
| Single-Line Text | Text |
| Multi-Line Text | Multi-Line Text |
| Rich Text | HTML |
| Image | Image |
| File | File |
| Date, Datetime | Date/Time |
| Checkbox | True/False |
| Integer | Number |
| Number | Decimal |
| Droplist | Drop-down List |
| Droplink, Droptree | Linked Content (a dropdown for a single item) |
| Multilist, Treelist | Linked Content (a search list box) |
| General Link | URL |
See Fields and Linked Content Field Types.
This is usually the largest design decision in a Sitecore migration. For each page template:
Renderings that only existed for layout or personalization may not need a component. Page-level fields such as titles and meta descriptions belong in the page's SEO fields or on a component.
Import in dependency order, keeping a map from Sitecore ItemID to Agility content ID, page ID or asset URL:
Use the Management SDK, saving in sequential batches and checking every result, as shown in Migrating Content into Agility with an AI Agent. Pages are created with the SDK's page methods; see Pages. Before saving, rewrite links and media references inside Rich Text fields to the new Agility URLs. Throughput guidance is in Migrating to Agility.
A Sitecore site's public URLs depend on its site and link settings, so don't derive them from item paths. Get the real list from the live site's sitemap, a crawl and your analytics. Compare it with the new paths and add a 301 redirect in Agility's URL Redirections for every URL that changes. Redirects can be limited to specific locales, which helps if each language has its own URL prefix. See Keep Your Search Rankings Through a Migration.