# Uniform Siphon - Sitecore Migrate Command Reference

> Command-line reference for the Uniform Siphon Sitecore transform (migrate) commands uniform-canvas and uniform-content

Source: https://docs.uniform.app/docs/guides/migration/sitecore/migrate-reference

This page is the command-line reference for the **transform phase** of a Sitecore migration — the commands of `Siphon.Migration.exe` that convert the downloaded Sitecore data into Uniform serialization files: `uniform-canvas` (project map nodes, compositions and components) and `uniform-content` (content types and entries). The load-phase commands that push those files (`uniform-upload-assets`, `uniform-push-releases`, and the `@uniformdev/cli` scripts) are on the [push reference](https://docs.uniform.app/docs/guides/migration/sitecore/push-reference).

The executables, configuration/environment-variable rules, logging, and the [common options](https://docs.uniform.app/docs/guides/migration/sitecore/common-reference#common-options) shared by every command are documented on the [common reference](https://docs.uniform.app/docs/guides/migration/sitecore/common-reference). Each switch below lists its **command-scoped** environment variable; the global `SIPHON_{PARAMETER}` form works too.

If you are migrating for the first time, start with the [Sitecore migration walkthrough](https://docs.uniform.app/docs/guides/migration/sitecore/walkthrough).

> **Output folder is never cleaned automatically:**
>
> The output folder is **not** cleared between runs, so you can migrate different start paths or languages into one project across several invocations. This means you must clear the output directory yourself after any change to the input data (re-running the download commands). In particular, clear the `.temp` folder, which caches the HTML→JSON rich-text conversions. Use [`--skipClearingFolders`](https://docs.uniform.app/docs/guides/migration/sitecore/common-reference#common-options) to combine runs into one folder deliberately.

---

## uniform-canvas

Generate the Uniform **Canvas** — project map nodes, compositions, and component definitions — from the downloaded items and (when supplied) the presentation folder. Run it before `uniform-content`.

```powershell
PS C:\migration> C:\siphon\Siphon.Migration.exe uniform-canvas `
  --inputDir C:\migration\data\items `
  --outputDir C:\migration\uniform `
  --startPath /sitecore/content/Habitat/Home `
  --presentationDir C:\migration\data\presentation
```

### Required parameters

**`SIPHON_UNIFORM_CANVAS_INPUTDIR`** = `<path>` (`--inputDir`)  
Folder of the downloaded Sitecore items.

**`SIPHON_UNIFORM_CANVAS_OUTPUTDIR`** = `<path>` (`--outputDir`)  
Folder the Uniform serialization is written to.

**`SIPHON_UNIFORM_CANVAS_STARTPATH`** = `<path>` (`--startPath`)  
Site root (Home) item, e.g. `/sitecore/content/Habitat/Home`. It must point at the real Home item — use `--pagesToInclude`/`--pagesToExclude` to scope which pages are generated, not `--startPath`.

### Presentation & code generation

**`SIPHON_UNIFORM_CANVAS_PRESENTATIONDIR`** = `(empty)|<path>` (`--presentationDir`)  
Folder of `download-presentation` output. Supplying it lets Siphon build compositions with the real **hierarchy of components** (placeholders/renderings); without it, compositions are flatter.

**`SIPHON_UNIFORM_CANVAS_PRESENTATIONFALLBACK`** = `off|missing|force` (`--presentationFallback`)  
Rebuild page presentation from the **item export** instead of a crawled presentation folder. Default `off` — only `--presentationDir` is used, exactly as before.

Use it when `download-presentation` is not available: no Experience Editor access on the source, credentials that only allow an item export, a site too large to crawl page by page, or a client that does not permit it. Everything the migration consumes from presentation — the placeholder tree, each rendering's type, datasource and parameters — is in the items' own layout fields.

- `force` ignores `--presentationDir` entirely and builds every page from the item export.
- `missing` uses the crawled corpus wherever it reached and the item layout for the rest, and logs how many pages fell back. Useful when a crawl came back incomplete: those pages otherwise produce **no composition at all**.

> **`missing` mixes two sources, and that has consequences:**
>
> A crawled corpus records what the Experience Editor **rendered**; the item export records what an author **authored**. Mixing them per page means: `--stripSingleSlotComponents` becomes inconsistent (an item-derived rendering carries no rendered HTML, so it never looks like a slot-only wrapper — which disqualifies that wrapper type for the crawled pages too), and a component's **slot set depends on which pages the crawl happened to reach**. Prefer `off` or `force` unless you are deliberately repairing an incomplete crawl.

**How the presentation is rebuilt.** Sitecore stores no finished layout; it stores fragments the renderer assembles, and all three steps are replayed. **Layout deltas** — `__Renderings` and `__Final Renderings` are XML patches, not documents; the shared field resolves against `__Standard Values`, while the final field is a delta against the resolved _shared_ layout with each inheritance level applied to it in turn, and a `<r uid="…"><p:d /></r>` stub _deletes_ a rendering. **SXA partial designs** — a page item's layout holds only what an author dropped on it; header, footer, metadata and the scaffolding component that owns the page's placeholders come from the page design (the item's `Page Design` field, else the site's `Presentation/Page Designs` `TemplatesMapping`, base templates included), with each partial design's placeholders scoped as `sxa-<signature>` after the layout placeholder. **SXA composites** — Accordion, Tabs and Snippet render sections that live on the datasource or its children, carrying their own layout with relative placeholder keys, at `<key>-<sectionIndex>-<DynamicPlaceholderId>`.

**What differs from a crawled run.** Two classes appear only in the item-derived result, and neither is an error: renderings that render nothing (a missing datasource, or content the live site removed after the export), and renderings the Experience Editor does not decorate — site chrome such as headers, footers and `<head>` metadata — which a crawl never sees even though they render. `--excludeComponents` is the lever, and usually needs a few more entries when you turn the fallback on.

**Inspecting what was reconstructed.** With the fallback on, the synthesized trees are always written to `<cacheDir>/presentation/<language>/<item path>/index.json`, in the same shape a crawled presentation folder has — so "why did this page migrate like that" is a file diff against the crawled corpus rather than a rerun. It is **not** a substitute for a crawled corpus: it carries no `CssSelector`/`ProductionHtml`, so never point `--presentationDir` or the e2e tooling at it.

**`SIPHON_UNIFORM_CANVAS_NEXTPROJECTDIR`** = `(empty)|<path>` (`--nextProjectDir`)  
Root of a Next.js app for experimental React component code generation.

**`SIPHON_UNIFORM_CANVAS_CREATEREWRITES`** = `true|false` (`--createRewrites`)  
When generating into a Next.js app, add rewrites to `next.config.js` (default off).

### Which pages become compositions

**`SIPHON_UNIFORM_CANVAS_PAGESTOINCLUDE`** = `(empty)|<list>` (`--pagesToInclude`)  
Generate compositions/nodes for only these pages. Combined with `--pagesToExclude`, include is applied first, then exclude.

**`SIPHON_UNIFORM_CANVAS_PAGESTOEXCLUDE`** = `(empty)|<list>` (`--pagesToExclude`)  
Exclude pages from generation. Supports `*` wildcards and `*!<name>` ("everything at this level except `<name>`", e.g. `/sitecore/content/Home/*!1` keeps `/Home/1` and its descendants but drops the rest).

**`SIPHON_UNIFORM_CANVAS_DO_LANGUAGE_SPECIFIC`** = `true|false` (`--do-language-specific`)  
Emit a unique composition and project-map node for each **page–language pair** instead of one localized page. Default: `false`.

**`SIPHON_UNIFORM_CANVAS_USENAMEFORPMN`** = `true|false` (`--useNameForPMN`)  
Use the item **Name** (not its display name) when generating project-map nodes. Default: `false`.

### Components & placeholders

**`SIPHON_UNIFORM_CANVAS_EXCLUDECOMPONENTS`** = `(empty)|<list>` (`--excludeComponents`)  
Drop specific components from compositions and component definitions, by component ID. Delimiters `,` `;` `|`.

**`SIPHON_UNIFORM_CANVAS_RENAMECOMPONENTS`** = `(empty)|<list>` (`--renameComponents`)  
Rename components during migration, `oldName:newName` (multiple, delimited). Example: `OldComponent:NewComponent|AnotherOld:AnotherNew`.

**`SIPHON_UNIFORM_CANVAS_IGNOREPLACEHOLDERS`** = `(empty)|<list>` (`--ignorePlaceholders`)  
Placeholder names to ignore during migration. Delimiters `,` `;` `|`.

**`SIPHON_UNIFORM_CANVAS_REPLACEEMPTYDATASOURCEWITHCONTEXTITEM`** = `(empty)|<list>|true|*` (`--replaceEmptyDatasourceWithContextItem`)  
Build a component's parameters from the **context item** (the page) when the rendering has no datasource of its own. A controller rendering whose view reads the page's fields directly otherwise migrates as an empty shell — no content parameters at all, only the migration group. Takes a **component list**, delimiters `,` `;` `|`, matched case-insensitively against either name a call site has at hand: the Sitecore rendering name, or the generated component ID (which may carry a disambiguating suffix, e.g. `Tool_Viewrendering`). Spaces in a rendering name are optional, so `Slide HTML` and `SlideHTML` both match. Example: `ProductDetail|ProductDetailHeader|WirelessAccessory`. The switch **requires a value** — write `--replaceEmptyDatasourceWithContextItem=<list>`, not the bare flag. Default: off.

> **Name the components — do not turn this on for all of them:**
>
> `true` and `*` still mean "every component", so an `.env` written when this option was a boolean keeps working. But whether a rendering should read the page item is a property of the **rendering**, not of the site: turned on globally, the shared layout components — reached from every page template — collect the **union** of all those templates' fields. Measured on one brand site, `OneColumn` came out with 86 parameters carrying SEO, sitemap, product-category and instructional-video fields, `TwoColumnUneven` with 43, and the project went from 434 content parameters to 1430. List the controller renderings that actually need it instead.

**`SIPHON_UNIFORM_CANVAS_STRIPSINGLESLOTCOMPONENTS`** = `true|false` (`--stripSingleSlotComponents`)
Collapse "pass-through wrapper" renderings during migration — components whose only output is a single <UniformSlot> (or no markup at all). When enabled, such a rendering is removed and its child renderings are hoisted into the parent slot, so it never becomes its own component or composition entry. A rendering type is only collapsed when every instance across all pages is slot-only or empty; if any instance renders real markup or carries parameters, the whole type is left untouched. Turn off if a wrapper is being collapsed that should be kept. Default: `false`.

### Reference-field conversion (slots & blocks)

Sitecore reference fields can become Canvas **slots** (child components), **blocks** (inline structured values), or be left as raw JSON. These switches steer that per field or per `contentTypeId:fieldId`; delimiters `,` `;` `|`; use `*` for "all".

**`SIPHON_UNIFORM_CANVAS_REF_SLOTS_INCLUDE_FIELDS`** / **`SIPHON_UNIFORM_CANVAS_REF_SLOTS_EXCLUDE_FIELDS`** = `(empty)|<list>` (`--ref-slots-include-fields` / `--ref-slots-exclude-fields`)  
Include only / exclude these reference fields from conversion to slots and components. **Default (neither set): include all** — every qualifying reference field is converted (`*` on the include forces include-all, on the exclude forces exclude-all).

**`SIPHON_UNIFORM_CANVAS_REF_BLOCKS_INCLUDE_FIELDS`** / **`SIPHON_UNIFORM_CANVAS_REF_BLOCKS_EXCLUDE_FIELDS`** = `(empty)|<list>` (`--ref-blocks-include-fields` / `--ref-blocks-exclude-fields`)  
Include only / exclude these reference fields from conversion to blocks. **Default (neither set): include all** — every qualifying reference field is converted (`*` on the include forces include-all, on the exclude forces exclude-all).

**`SIPHON_UNIFORM_CANVAS_REF_BLOCKS_SLOTS_INCLUDE_FIELDS`** = `(empty)|<list>` (`--ref-blocks-slots-include-fields`)  
On denormalized reference-field slot components (e.g. `FeaturedCardGrid_EventDetailPage`), also deconstruct these ref fields into blocks so they match the page-root treatment (e.g. `topics` → `topicsBlock`). Empty (default) leaves them as raw JSON.

**`SIPHON_UNIFORM_CANVAS_USELEGACYREFFIELDSSLOTS`** = `true|false` (`--useLegacyRefFieldsSlots`)  
Use the legacy reference-field-to-slots algorithm. Default: `false`.

### Releases, personalization & caching

**`SIPHON_UNIFORM_CANVAS_RELEASES`** = `true|false` (`--releases`)  
Analyze publish restrictions on items and generate Uniform releases (push them later with [`uniform-push-releases`](https://docs.uniform.app/docs/guides/migration/sitecore/push-reference#uniform-push-releases)). Default: `false`.

**`SIPHON_UNIFORM_CANVAS_TRYMIGRATEPERSONALIZATIONRULES`** = `true|false` (`--tryMigratePersonalizationRules`)  
Attempt to migrate Sitecore personalization rules. Default: `false`.

**`SIPHON_UNIFORM_CANVAS_CACHECOMPONENTS`** = `true|false` (`--cacheComponents`)  
Cache generated component definitions to speed up re-runs on the same data. Default: `false`.

**`SIPHON_UNIFORM_CANVAS_CACHEMEDIAINDEX`** = `true|false` (`--cacheMediaIndex`)  
Cache the media index across runs on the same data. Default: `false`.

**`SIPHON_UNIFORM_CANVAS_THREADS`** = `(empty)|<int>` (`--threads`)  
Number of parallel processing workers. Default: `4`.

**`SIPHON_UNIFORM_CANVAS_STOPONERROR`** = `true|false` (`--stopOnError`)  
Abort the migration on the first error instead of collecting errors and continuing. Default: `false`.

**`SIPHON_UNIFORM_CANVAS_SKIPCLEARINGFOLDERS`** = `true|false` (`--skipClearingFolders`)  
Do not clear the Canvas output sub-folders (e.g. `$(OutputDir)/compositions`) before writing — use it when combining several runs into one folder. Default: `false`.

**`SIPHON_UNIFORM_CANVAS_CACHEDIR`** = `(empty)|<path>` (`--cacheDir`)  
Folder for the component and media-index caches; defaults to `--inputDir`.

> **uniform-canvas also builds the content model:**
>
> `uniform-canvas` runs the same content-model build as `uniform-content`, so it **also accepts every [uniform-content option](#uniform-content)** below (scope & filtering, reference-field handling, rich text, output shaping, …) — use the `SIPHON_UNIFORM_CANVAS_` prefix for the command-scoped variable. The content-only switches `--dataSourceId`, `--excludePages`, `--excludePaths` and `--ref-as-json-fields` do **not** apply to `uniform-canvas`.

---

## uniform-content

Transform Sitecore content items into Uniform **content types and entries** in the data source you name with `--dataSourceId`.

```powershell
PS C:\migration> C:\siphon\Siphon.Migration.exe uniform-content `
  --inputDir C:\migration\data\items `
  --outputDir C:\migration\uniform `
  --startPath /sitecore/content/Habitat/Home `
  --dataSourceId content `
  --excludePages
```

### Required parameters

**`SIPHON_UNIFORM_CONTENT_INPUTDIR`** = `<path>` (`--inputDir`)  
Folder of the downloaded Sitecore items.

**`SIPHON_UNIFORM_CONTENT_OUTPUTDIR`** = `<path>` (`--outputDir`)  
Folder the entries and content types are written to.

**`SIPHON_UNIFORM_CONTENT_STARTPATH`** = `<path>` (`--startPath`)  
Site root item.

**`SIPHON_UNIFORM_CONTENT_DATASOURCEID`** = `<string>` (`--dataSourceId`)  
The Uniform Content data source the generated content types/entries belong to, e.g. `content`.

> **These options apply to uniform-canvas too:**
>
> Every option below is also accepted by [`uniform-canvas`](#uniform-canvas) (which builds the same content model). For its command-scoped variable, swap the prefix to `SIPHON_UNIFORM_CANVAS_`.

### Scope & filtering

**`SIPHON_UNIFORM_CONTENT_EXCLUDEPAGES`** = `true|false` (`--excludePages`)  
Exclude Sitecore **pages** from entries. Use it whenever you also migrate pages with `uniform-canvas`, so a page is not duplicated as both a composition and an entry. Default: `false`.

**`SIPHON_UNIFORM_CONTENT_CONTENTROOTPATHS`** = `(empty)|<list>` (`--contentRootPaths`)  
Extra roots for content/datasources beyond `--startPath`. Delimiters `,` `;` `|`. Example: `/sitecore/content/Habitat/Global|/sitecore/content/Habitat/Settings`.

**`SIPHON_UNIFORM_CONTENT_EXCLUDEPATHS`** = `(empty)|<list>` (`--excludePaths`)  
Paths to exclude from migration. Delimiters `,` `;` `|`.

**`SIPHON_UNIFORM_CONTENT_FILTERBYTEMPLATE`** = `(empty)|<string>` (`--filterByTemplate`)  
Migrate only items of a given Sitecore template (name or ID).

**`SIPHON_UNIFORM_CONTENT_TEMPLATESTOEXCLUDE`** = `(empty)|<list>` (`--templatesToExclude`)  
Templates (by Name) to **not** generate as compositions. Delimiters `,` `;` `|`.

**`SIPHON_UNIFORM_CONTENT_TEMPLATESTOINCLUDE`** = `(empty)|<list>` (`--templatesToInclude`)  
Templates (by Name) to generate as entries even if they wouldn't be by default.

**`SIPHON_UNIFORM_CONTENT_EXCLUDEFIELDS`** = `(empty)|<list>` (`--excludeFields`)  
Fields to drop from generated content types, entries and Canvas components. `field` drops it everywhere; `owner.field` drops it only under an item/template named `owner`. Excluded fields are never registered as ref fields (so this beats the `--ref-*-include-fields` switches). Delimiters `,` `;` `|`.

**`SIPHON_UNIFORM_CONTENT_INCLUDESYSTEMFIELDS`** = `true|false` (`--includeSystemFields`)  
Migrate Sitecore **system** fields (ItemID, etc.), which are dropped by default.

**`SIPHON_UNIFORM_CONTENT_SKIPGROUPS`** = `(empty)|<list>` (`--skipGroups`)  
Field groups to not migrate. Delimiters `,` `;` `|`.

**`SIPHON_UNIFORM_CONTENT_SKIPDATASOURCES`** = `true|false` (`--skipDatasources`)  
Skip datasource items. Default: `false`.

### Reference fields & links

**`SIPHON_UNIFORM_CONTENT_REF_DROPDOWNS_EXCLUDE_FIELDS`** = `(empty)|<list>` (`--ref-dropdowns-exclude-fields`)  
Exclude reference fields from automatic conversion to drop-downs (select/multi-select). **Default (empty): include all** — every qualifying field is auto-converted; use `*` to disable the feature entirely. Conversion is automatic when the referenced template is a simple lookup shape (one custom field, or two with one named `value`); on the canvas it takes precedence over ref-slots/ref-blocks, on the content stage it replaces the `contentReference` migration of the field. Per field or `contentTypeId:fieldId`; delimiters `,` `;` `|`.

**`SIPHON_UNIFORM_CONTENT_REF_AS_JSON_FIELDS`** = `(empty)|<list>` (`--ref-as-json-fields`)  
Migrate these reference fields as raw JSON. Per field or `contentTypeId:fieldId`. _(content only)_

**`SIPHON_UNIFORM_CONTENT_FIELDS_OVERRIDES`** = `(empty)|<list>` (`--fields-overrides`)  
Override the ref-field type for simple single-field types: `{fieldName}:{type}` (or `contentTypeId:fieldId`), delimited.

**`SIPHON_UNIFORM_CONTENT_REFDEPTH`** = `(empty)|<int>` (`--refDepth`)  
Depth to which references are expanded when a reference is migrated as a JSON value. Default: `2`.

**`SIPHON_UNIFORM_CONTENT_SKIPEXTRALINKFIELDS`** = `true|false` (`--skipExtraLinkFields`)  
Do not generate the extra `{link}_Anchor`, `{link}_Title`, `{link}_QueryString` fields for general-link fields. Default: `false`.

**`SIPHON_UNIFORM_CONTENT_AVOIDINTERNALLINKS`** = `true|false` (`--avoidInternalLinks`)  
Migrate internal links as a plain `url` type instead of a `projectMapNode` link. Default: `false`.

**`SIPHON_UNIFORM_CONTENT_SKIPPAGEREFERENCES`** = `true|false` (`--skipPageReferences`)  
For multi-reference fields, skip targets that are pages instead of emitting a dangling entry reference (pages become projectMapNode/composition, never entries). Default off (legacy keeps them).

**`SIPHON_UNIFORM_CONTENT_CHILDRENREFERENCESTYPES`** = `(empty)|<list>` (`--childrenReferencesTypes`)  
For entries of these content types, add a `childrenReferences` field pointing at the item's Sitecore children. Delimiters `,` `;` `|`.

**`SIPHON_UNIFORM_CONTENT_CHILDRENSLOTSTYPES`** = `(empty)|<list>` (`--childrenSlotsTypes`)  
_(canvas stage)_ For components whose ID matches, synthesize a `children` ref field listing the datasource item's Sitecore children, so the ref-slots pass turns them into a `children` slot with one component per child.

**`SIPHON_UNIFORM_CONTENT_PROCESSDATASOURCECHILDREN`** = `true|false` (`--processDatasourceChildren`)  
Add a `datasourceChildren` field (references to Sitecore children) to every datasource item. Default: `false`.

**`SIPHON_PRODUCTIONHOST`** = `(empty)|<host>` (`--productionHost`)  
Production host to strip from absolute external general-link URLs so they become site-relative (`https://www.example.com/search` → `/search`). Matches ignoring scheme, a leading `www.`, and any port; give it with or without a scheme.

### Rich text

**`SIPHON_UNIFORM_CONTENT_RICHTEXTMODE`** = `(empty)|json|html` (`--richTextMode`)  
Migrate rich-text (RTE) fields as Uniform structured RTE (`json`) or as raw HTML (`html`). Default: `json`.

**`SIPHON_UNIFORM_CONTENT_HTMLFIELDTYPE`** = `(empty)|<string>` (`--htmlFieldType`)  
When `--richTextMode=html`, the Uniform field type used for the HTML field.

**`SIPHON_UNIFORM_CONTENT_TEMPDIR`** = `(empty)|<path>` (`--tempDir`)  
Temp directory used by the rich-text conversion service (the `.temp` cache).

### Localized media

**`SIPHON_UNIFORM_CONTENT_VERSIONEDIMGDEFAULTLANGUAGE`** = `(empty)|<string>` (`--versionedImgDefaultLanguage`)  
Migrate all versioned images using the value from this one language for every language version.

### Output shaping & cleanup

**`SIPHON_UNIFORM_CONTENT_REMOVEEMPTYFIELDS`** = `true|false` (`--removeEmptyFields`)  
Remove field/parameter definitions that have no values across all entries/compositions. Default: `false`.

**`SIPHON_UNIFORM_CONTENT_PERSISTEMPTYTYPES`** = `true|false` (`--persistEmptyTypes`)  
Keep content types or components that are used zero times. Default: `false`.

**`SIPHON_UNIFORM_CONTENT_PERSISTEMPTYSLOTS`** = `true|false` (`--persistEmptySlots`)  
Keep slots of components not used in any composition. Default: `false`.

**`SIPHON_UNIFORM_CONTENT_PERSISTUNUSEDCOMPONENTS`** = `true|false` (`--persistUnusedComponents`)  
Keep components not used in any composition. Default: `false`.

### Naming, caching & reports

**`SIPHON_UNIFORM_CONTENT_TYPENAMESCONFIG`** = `(empty)|<list>` (`--typeNamesConfig`)  
Rename generated types: `OldType_hash:NewName` pairs, delimited. Example: `LinkList_98ce…:CustomLinkList|PromoCard_b30d…:PromoCard`.

**`SIPHON_UNIFORM_CONTENT_CACHEMODELS`** = `true|false` (`--cacheModels`)  
Cache the generated models to speed up re-runs on the same data. Default: `false`.

**`SIPHON_UNIFORM_CONTENT_MISSINGITEMSFILENAME`** = `(empty)|<string>` (`--missingItemsFileName`)  
Override the name of the `_missing-items-and-media-{timestamp}.json` report.

**`SIPHON_UNIFORM_CONTENT_MISSINGREFERENCESFILENAME`** = `(empty)|<string>` (`--missingReferencesFileName`)  
Override the name of the `_missing-reference-items-{timestamp}.json` report.

**`SIPHON_UNIFORM_CONTENT_THREADS`** = `(empty)|<int>` (`--threads`)  
Number of parallel processing workers. Default: `4`.

**`SIPHON_UNIFORM_CONTENT_STOPONERROR`** = `true|false` (`--stopOnError`)  
Abort the migration on the first error instead of collecting errors and continuing. Default: `false`.

**`SIPHON_UNIFORM_CONTENT_SKIPCLEARINGFOLDERS`** = `true|false` (`--skipClearingFolders`)  
Do not clear the output sub-folders before writing — use it when combining several runs into one folder. Default: `false`.

**`SIPHON_UNIFORM_CONTENT_CACHEDIR`** = `(empty)|<path>` (`--cacheDir`)  
Folder for the model caches; defaults to `--inputDir`.

Plus the [common options](https://docs.uniform.app/docs/guides/migration/sitecore/common-reference#common-options) (`--languages`, `--defaultLanguage`, logging).

---

## Utility commands

### extract-scriban

Extract the Sitecore **Scriban rendering-variant** templates (SXA) from the downloaded items into `.scriban` files under a `Scriban/` folder, so they can be inspected or ported to the front end. Not part of the normal migration flow.

**`SIPHON_EXTRACT_SCRIBAN_INPUTDIR`** = `<path>` (`--inputDir`)  
required; the downloaded items folder.

**`SIPHON_EXTRACT_SCRIBAN_OUTPUTDIR`** = `<path>` (`--outputDir`)  
required; folder under which the `Scriban/` directory is created.

**`SIPHON_EXTRACT_SCRIBAN_RETRYCOUNT`** = `(empty)|<int>` (`--RetryCount`)  
Retry attempts for each item before it is recorded as unsuccessful. Default: `3`.

**`SIPHON_EXTRACT_SCRIBAN_TIMEOUT`** = `(empty)|<int>` ms (`--Timeout`)  
Timeout for each request, in milliseconds. Default: `60000` (must be > 100).

**`SIPHON_EXTRACT_SCRIBAN_STOPONERROR`** = `true|false` (`--stopOnError`)  
Abort the run on the first error instead of collecting errors and continuing. Default: `false`.

**`SIPHON_EXTRACT_SCRIBAN_SKIPCLEARINGFOLDERS`** = `true|false` (`--skipClearingFolders`)  
Do not clear the output sub-folders before writing — use it when combining several runs into one folder. Default: `false`.

**`SIPHON_EXTRACT_SCRIBAN_CACHEDIR`** = `(empty)|<path>` (`--cacheDir`)  
Folder for the caches; defaults to `--inputDir`.

Plus the [common options](https://docs.uniform.app/docs/guides/migration/sitecore/common-reference#common-options) (`--languages`, `--defaultLanguage`, logging).

## Related pages

- [Common reference](https://docs.uniform.app/docs/guides/migration/sitecore/common-reference) — executables, configuration, environment variables, logging, and the common options.
- [Download commands reference](https://docs.uniform.app/docs/guides/migration/sitecore/download-reference) — the extract commands.
- [Push commands reference](https://docs.uniform.app/docs/guides/migration/sitecore/push-reference) — the load-phase commands.
- [Sitecore migration walkthrough](https://docs.uniform.app/docs/guides/migration/sitecore/walkthrough) — the end-to-end, explained migration process.
