Site Archive Editors

Edit services, jobs, site preferences, custom objects, content slots and content libraries XML in a tree with forms, filters, fixes and code usages

The site archive editors open the import files of a site archive in the same design view as the Metadata Editor: a toolbar, a tree of what the file defines, and a Properties or XML panel for the selected row. Every change is an edit of the XML, written where the schema expects it, and one Undo step

The site archive editors open services, jobs, site preferences, custom objects, content slots and content libraries in the design view of the Metadata Editor. Search, narrow by scope or a quick pill, open the Filters popup, jump from the problems count to the XML and fix it with Alt+Enter, see the properties and the XML side by side, hide columns and turn grouping off, then edit each kind in its form: copy a createService call, create a missing profile, add and schedule job steps, copy and move a preference across tiers, define a preference, paste and add custom objects, make a slot configuration the default, write a missing Page Designer type and find the code that uses a row
KindRoot elementTabThe tree shows
ServicesservicesServices EditorServices, profiles and credentials
JobsjobsJobs EditorJobs with their flows, splits and steps
Site preferencespreferencesPreferences EditorPreferences by group, a column per instance type
Custom objectscustom-objectsCustom Objects EditorOne row per object, a column per attribute of its type
Content slotsslot-configurationsSlots EditorSlots, their contexts and configurations
Content librarylibraryLibrary EditorFolders, content assets, Page Designer pages, regions and components

A file opens in its editor from its root element, whatever its name. The Text tab beside the editor tab shows the same document. Open the files from B2C Metadata, or create one with New › Site Archive File

What every editor has

The site archive editors open services, jobs, site preferences, custom objects, content slots and content libraries in the design view of the Metadata Editor. Search, narrow by scope or a quick pill, open the Filters popup, jump from the problems count to the XML and fix it with Alt+Enter, see the properties and the XML side by side, hide columns and turn grouping off, then edit each kind in its form: copy a createService call, create a missing profile, add and schedule job steps, copy and move a preference across tiers, define a preference, paste and add custom objects, make a slot configuration the default, write a missing Page Designer type and find the code that uses a row

The toolbar is one row, left to right:

ControlWhat it does
AddThe kind's adds, such as Service…, Profile… and Credential…. The first takes Cmd+N / Alt+Insert
DeleteDeletes the selected rows
SearchFilters the tree, such as Search the IDs and URLs for services. Cmd+F / Ctrl+F focuses it
ScopesAll first, then the kind's own, such as Services, Profiles, Credentials
Quick pillsUp to two filters with their counts, such as Not linked and Broken links
FiltersEvery filter, with how many rows each shows
ResetTakes off the filters and the search, keeping the scope
Count3 services, or 2 of 3 while you filter
ProblemsThe problems in the file. A click opens the XML and its problems
Expand All, Collapse AllThe tree's branches, for kinds with a tree

As the editor narrows, the count goes first, then Reset, then the quick pills, then the search shrinks, then the tree buttons and the scopes. What folds moves into the Filters popup

Columns and groups

The tree is a table of up to 12 columns. Right-click the header to show or hide a column, Reset Columns, or change the grouping, such as Group by Prefix in services. Columns fold on a narrow editor. A row with a problem has a wave under its name, a red cell names something the file doesn't hold, and a blue cell links to it

The site archive editors open services, jobs, site preferences, custom objects, content slots and content libraries in the design view of the Metadata Editor. Search, narrow by scope or a quick pill, open the Filters popup, jump from the problems count to the XML and fix it with Alt+Enter, see the properties and the XML side by side, hide columns and turn grouping off, then edit each kind in its form: copy a createService call, create a missing profile, add and schedule job steps, copy and move a preference across tiers, define a preference, paste and add custom objects, make a slot configuration the default, write a missing Page Designer type and find the code that uses a row

Properties and XML

The panel under the tree has Properties and XML, which split side by side and fold down to their tabs as in the Metadata Editor. Show in XML in the form selects the row in the XML. Properties lays the form out in columns of sections. A long text, such as an HTML body or a JSON value, opens in an editor Beside the Form, Below the Form or In the Form

The site archive editors open services, jobs, site preferences, custom objects, content slots and content libraries in the design view of the Metadata Editor. Search, narrow by scope or a quick pill, open the Filters popup, jump from the problems count to the XML and fix it with Alt+Enter, see the properties and the XML side by side, hide columns and turn grouping off, then edit each kind in its form: copy a createService call, create a missing profile, add and schedule job steps, copy and move a preference across tiers, define a preference, paste and add custom objects, make a slot configuration the default, write a missing Page Designer type and find the code that uses a row

With no row selected, the panel shows the file: the kind's counts and adds, its Archive, what it Applies to (a site or the organization), Show in B2C Metadata and New Uninstall File

Read only and empty

The site archive editors open services, jobs, site preferences, custom objects, content slots and content libraries in the design view of the Metadata Editor. Search, narrow by scope or a quick pill, open the Filters popup, jump from the problems count to the XML and fix it with Alt+Enter, see the properties and the XML side by side, hide columns and turn grouping off, then edit each kind in its form: copy a createService call, create a missing profile, add and schedule job steps, copy and move a preference across tiers, define a preference, paste and add custom objects, make a slot configuration the default, write a missing Page Designer type and find the code that uses a row

A banner tells you when the design view is read only:

BannerWhy
The XML has errors: the design view shows the last good version, read only. Fix them in the XMLThe XML doesn't parse
The X editor needs an IntelliJ SFCC license: the file is shown read onlyNo license, see License
… may already be applied: an import set adds a new migration instead of editing oneThe file is in a migration folder such as 20260101T120000. Edit Anyway unlocks it

While read only, the adds, Delete and the fixes are off. When the search or a filter leaves no rows, the tree reads Nothing matches "…" with Clear "…", Show all, not only … and Clear the filter

Actions and shortcuts

Right-click a row for Add, the kind's own actions, then Delete, Copy as XML, Paste, Copy ID, then Show in XML, Compare With… and Find Usages in Code

ActionShortcutWhat it does
Show in XMLThe Edit Source shortcutSelects the row in the XML
Copy IDThe IDs of the selected rows, one a line
Copy as XMLCmd+C / Ctrl+CThe rows' XML, secrets left out
PasteCmd+V / Ctrl+VXML rows, or rows from a spreadsheet
Compare With…A diff with the same row in another file
Find Usages in CodeAlt+F7Scripts and templates that name the row
Duplicate…Cmd+D / Ctrl+DA copy under a new ID
Rename…Shift+F6, F2Renames the row, the links to it follow
Move Up, Move DownThe IDE's move line keysSteps, flows and components keep their order
Go toCmd+B / Ctrl+BThe template, step type or content the row names

Enter opens a row or a branch. Double-click a cell to edit it, or a row to open Properties

Problems and fixes

Each editor checks the file against its schema and its kind's rules. The schema checks read like x does not take y, x goes before y in z, x needs y and is "v", not one of …. The problems count opens the XML tab with the list beside it, each problem with its line and its fix. Alt+Enter runs the fix in the list or in the XML

In services, Profile "acme2" is not in this file offers Create Missing Profile, which writes the profile with the platform defaults

Mark for Deletion on a service, job, custom object, slot configuration or library row keeps only its ID with mode="delete", so the import deletes it

Copy, paste and other files

  • Paste writes the rows at their place in the schema, and asks Paste as Copies or Replace when the IDs already exist
  • Paste also reads rows copied from a spreadsheet, by their headers or by the columns shown
  • New Uninstall File writes the file's copy for the uninstall archive: an install folder in the path becomes uninstall, otherwise it writes an _uninstall sibling
  • Other Files in the form lists the same ID in the project's other files, with Open and Compare. Compare leaves the secrets of both sides out
  • The Structure view and the File Structure popup show the editor's rows

Services

The scopes are Services, Profiles and Credentials, and the quick pills Not linked (profiles and credentials no service of the file uses) and Broken links (services whose profile or credential isn't in the file). The columns are Type, Profile, Credential and Enabled

The site archive editors open services, jobs, site preferences, custom objects, content slots and content libraries in the design view of the Metadata Editor. Search, narrow by scope or a quick pill, open the Filters popup, jump from the problems count to the XML and fix it with Alt+Enter, see the properties and the XML side by side, hide columns and turn grouping off, then edit each kind in its form: copy a createService call, create a missing profile, add and schedule job steps, copy and move a preference across tiers, define a preference, paste and add custom objects, make a slot configuration the default, write a missing Page Designer type and find the code that uses a row

The form of a service has three sections:

  • Service: Type, Log prefix, and the Enabled, Mock mode, Communication log and Force production log flags
  • Profile: the profile with Go to and Copy to New Profile, its timeout, rate limit and circuit breaker with Ignore 5xx responses. A shared profile reads Shared by 2 services; changes apply to all of them
  • Credential: URL, User and Password. An encrypted password reads Encrypted by common.export with only Replace…, and a plain text one also has Reveal and Copy

Add › Service… asks for the ID (Such as int_payments.http.authorize: the cartridge, the protocol, the API), the type, the profile and the credential. Right-click a service for Copy createService Call, Select Services Using This, Create Missing Profile or Create Missing Credential. Group by Prefix puts services, profiles and credentials under the first segment of their ID when two share it

The checks include FTP services are deprecated: use SFTP, The password is in plain text in the file, Production logging is on: the service's filterLogMessage must hide secrets and unknown service types

Profiles and credentials

A service whose profile isn't in the file offers Create Missing Profile in its form. A profile or credential lists its services under Used by, and right-click › Select Services Using This selects them in the tree

The site archive editors open services, jobs, site preferences, custom objects, content slots and content libraries in the design view of the Metadata Editor. Search, narrow by scope or a quick pill, open the Filters popup, jump from the problems count to the XML and fix it with Alt+Enter, see the properties and the XML side by side, hide columns and turn grouping off, then edit each kind in its form: copy a createService call, create a missing profile, add and schedule job steps, copy and move a preference across tiers, define a preference, paste and add custom objects, make a slot configuration the default, write a missing Page Designer type and find the code that uses a row

Jobs

The scopes are Organization and Sites, and the quick pills Scheduled and Custom steps. Each job holds its flows, splits and steps, each step with its type. The Schedule column reads Every 1h from 02:00, Mon, Fri, Manual, or No trigger in red: the import rejects a job without triggers

The site archive editors open services, jobs, site preferences, custom objects, content slots and content libraries in the design view of the Metadata Editor. Search, narrow by scope or a quick pill, open the Filters popup, jump from the problems count to the XML and fix it with Alt+Enter, see the properties and the XML side by side, hide columns and turn grouping off, then edit each kind in its form: copy a createService call, create a missing profile, add and schedule job steps, copy and move a preference across tiers, define a preference, paste and add custom objects, make a slot configuration the default, write a missing Page Designer type and find the code that uses a row

Add › Job… writes a job with one flow and its first step. Step…, Flow… and Job Parameter… add to the selected job, after the selected row, and Split… adds a split that runs a flow template on every storefront site

The step form lists the step type's parameters, required ones with *. Add N Missing Parameters fills in what the type requires, Remove Undeclared Parameters drops what it doesn't declare, Go to Step Type opens its steptypes.json and Go to Module the script an ExecuteScriptModule step runs. Bind to Job Parameter… links a step parameter to a job parameter, Unbind undoes it. The job form holds the description, Runs in, the parameters, the Schedule, Notifications and the steps. Runs is Manual, Once or Recurring: once has a date and time, recurring an interval, dates, a time and weekdays, and On exit says what a failed run does. Notifications has Runs long after, Mail on retry and Mail on exit

The checks include missing triggers (fix Add Triggers), ExecuteScriptModule and ExecutePipeline (declare a custom step type in steptypes.json instead), a missing required parameter, an unknown step type and a step scope that doesn't fit the job

Steps and triggers

Add › Step… opens Add Step, the step types with their purpose, custom ones first. Type to narrow the list and press Enter to add the step after the selected one. Pick Once in Runs to give a manual job a trigger, then tick Enabled

The site archive editors open services, jobs, site preferences, custom objects, content slots and content libraries in the design view of the Metadata Editor. Search, narrow by scope or a quick pill, open the Filters popup, jump from the problems count to the XML and fix it with Alt+Enter, see the properties and the XML side by side, hide columns and turn grouping off, then edit each kind in its form: copy a createService call, create a missing profile, add and schedule job steps, copy and move a preference across tiers, define a preference, paste and add custom objects, make a slot configuration the default, write a missing Page Designer type and find the code that uses a row

Site preferences

The scopes are Custom and Standard, grouped by attribute group, and the quick pill Differs shows preferences whose instance types don't agree. The columns are All instances, Development, Staging and Production. = means the same as Development, and a tier without its own value shows the All instances value in grey

The site archive editors open services, jobs, site preferences, custom objects, content slots and content libraries in the design view of the Metadata Editor. Search, narrow by scope or a quick pill, open the Filters popup, jump from the problems count to the XML and fix it with Alt+Enter, see the properties and the XML side by side, hide columns and turn grouping off, then edit each kind in its form: copy a createService call, create a missing profile, add and schedule job steps, copy and move a preference across tiers, define a preference, paste and add custom objects, make a slot configuration the default, write a missing Page Designer type and find the code that uses a row

The Values section has a field per instance type, with Copy Development to Staging and Production, Move to All Instances, Clear in X and Compare Tiers…, a three-way diff you can edit. Go to Definition opens the attribute in the metadata, and Create Definition… opens the Metadata Editor's New Attribute dialog for a preference no metadata defines. Copy Script copies dw.system.Site.getCurrent().getCustomPreferenceValue('apiTimeout')

Add › Preference Value… adds a value of a SitePreferences attribute, Standard Preference… a platform preference by its ID. An enum value written as its display name gets Replace Display Names with Values. Turn off Group by Attribute Group for one list by ID

Standard and definitions

The Standard scope lists platform preferences, such as SiteCurrency, with no Type column. A preference no metadata defines reads Not in metadata in red, and the import skips its value. Create Definition… opens New Attribute with the preference's ID, a name and the type its value suggests

The site archive editors open services, jobs, site preferences, custom objects, content slots and content libraries in the design view of the Metadata Editor. Search, narrow by scope or a quick pill, open the Filters popup, jump from the problems count to the XML and fix it with Alt+Enter, see the properties and the XML side by side, hide columns and turn grouping off, then edit each kind in its form: copy a createService call, create a missing profile, add and schedule job steps, copy and move a preference across tiers, define a preference, paste and add custom objects, make a slot configuration the default, write a missing Page Designer type and find the code that uses a row

Custom objects

There is a scope per custom object type in the file, and the quick pills Empty mandatory and Not in type. With a type picked, each attribute of the type is a column you can edit in place. An attribute the type doesn't define reads (not in type)

The site archive editors open services, jobs, site preferences, custom objects, content slots and content libraries in the design view of the Metadata Editor. Search, narrow by scope or a quick pill, open the Filters popup, jump from the problems count to the XML and fix it with Alt+Enter, see the properties and the XML side by side, hide columns and turn grouping off, then edit each kind in its form: copy a createService call, create a missing profile, add and schedule job steps, copy and move a preference across tiers, define a preference, paste and add custom objects, make a slot configuration the default, write a missing Page Designer type and find the code that uses a row

The form shows the type, site or organization scoped, the key with its checks, Go to Type Definition and Copy Script, which copies dw.object.CustomObjectMgr.getCustomObject('PaymentCountry', 'AT'). Attributes follow by group, secrets under Credentials. Select several objects to edit their shared values, Mixed where they differ

Add › Object of Type… adds an object of one of the project's custom types with its mandatory attributes, and Add Attribute… sets an attribute the object has no value of yet

Paste rows from a spreadsheet with Cmd+V / Ctrl+V: the headers name the attributes, and one names the key. The pasted rows are selected

Objects and attributes

Add › PaymentCountry Object… asks for the key of an object of the picked type. A value of an attribute the type doesn't define shows under Not in the type definition, with Define legacyCode… to add it to the type and Remove legacyCode to drop it

The site archive editors open services, jobs, site preferences, custom objects, content slots and content libraries in the design view of the Metadata Editor. Search, narrow by scope or a quick pill, open the Filters popup, jump from the problems count to the XML and fix it with Alt+Enter, see the properties and the XML side by side, hide columns and turn grouping off, then edit each kind in its form: copy a createService call, create a missing profile, add and schedule job steps, copy and move a preference across tiers, define a preference, paste and add custom objects, make a slot configuration the default, write a missing Page Designer type and find the code that uses a row

Content slots

The scopes are Global, Category and Folder, and the quick pills Disabled and Problems. A slot holds its configurations, and its contexts when it has several. Tick On and Default right in the tree, pick the template from its cell, and set the content, callout and targeting in the form. The Slots Editor page covers the content kinds, the date picker, adding configurations, campaign assignments and every check

The site archive editors open services, jobs, site preferences, custom objects, content slots and content libraries in the design view of the Metadata Editor. Search, narrow by scope or a quick pill, open the Filters popup, jump from the problems count to the XML and fix it with Alt+Enter, see the properties and the XML side by side, hide columns and turn grouping off, then edit each kind in its form: copy a createService call, create a missing profile, add and schedule job steps, copy and move a preference across tiers, define a preference, paste and add custom objects, make a slot configuration the default, write a missing Page Designer type and find the code that uses a row

Content libraries

The site archive editors open services, jobs, site preferences, custom objects, content slots and content libraries in the design view of the Metadata Editor. Search, narrow by scope or a quick pill, open the Filters popup, jump from the problems count to the XML and fix it with Alt+Enter, see the properties and the XML side by side, hide columns and turn grouping off, then edit each kind in its form: copy a createService call, create a missing profile, add and schedule job steps, copy and move a preference across tiers, define a preference, paste and add custom objects, make a slot configuration the default, write a missing Page Designer type and find the code that uses a row

The scopes are Assets (folders and classic content assets), Pages (Page Designer pages with their regions and components) and Folders, and the quick pills Offline and Problems. A region reads region, 2 of 4, red over its limit. A component shows its type, in red when no cartridge defines it: Create Page Designer Type writes its .json, .js and .isml. The Library Editor page covers the HTML body, locales, Compare Locales…, online per site, component data and every check

Code column

The site archive editors open services, jobs, site preferences, custom objects, content slots and content libraries in the design view of the Metadata Editor. Search, narrow by scope or a quick pill, open the Filters popup, jump from the problems count to the XML and fix it with Alt+Enter, see the properties and the XML side by side, hide columns and turn grouping off, then edit each kind in its form: copy a createService call, create a missing profile, add and schedule job steps, copy and move a preference across tiers, define a preference, paste and add custom objects, make a slot configuration the default, write a missing Page Designer type and find the code that uses a row

With a license, services, site preferences, custom objects, slots and libraries have a Code column, Places in scripts and templates, and the statuses Used in code and Unused in code. In slots and libraries Unused in code becomes the first quick pill. The form's Code section lists the places with links to each file and line, and Show All in Find. Find Usages in Code (Alt+F7) lists them in the Find tool window. It is a text search: comments count, and an ID built at run time isn't found

Content links link to the project: $url('Page-Show','cid','shipping-info')$, $httpUrl()$, $httpsUrl()$, $include()$ and images/hero.jpg?$staticlink$. They work in library and slot HTML, in other site archive XML such as preference values, in the design tab's text areas, and in attribute values of ISML templates and HTML files, such as href="$url('Search-Show','cgid','mens')$"

  • Completion lists routes with their cartridges, the keys of the route (cid, fdid, cgid, pid, and for search q, pmin, pmax, srule, prefn1, prefv1, start, sz), and the IDs with where they come from. In HTML and site archive XML it opens as you type $, ( or a quote
  • Cmd+Click / Ctrl+Click opens the route, the content asset, the folder, the category, the product or the static file, and quick documentation (F1 / Ctrl+Q) explains a link function or key
  • Links count as uses of their route in the route lens, also in site archive XML outside your cartridges
  • The IDE's HTML checks for unknown targets, image sizes and plain http URLs stay quiet on a link

The Content link problems inspection flags:

ProblemFix
Quote is not closedClose the quote
A link without its )$, such as $url( is not closed with ')$'Close with ')$'
Cannot resolve route 'Page-Shw', Cannot resolve content asset 'bf-term'Change to '…' with the closest ID
Link arguments are written in quotesQuote the argument
Commas are not supported in link argumentsNone
Parameter 'cid' has no valueNone

Links need a license, their colours don't. Settings › Editor › Color Scheme › ISML has Content links › $url( )$, ?$staticlink$ and Parameter key

License

The editors need a license, see Purchase & License. The startup grace period doesn't count. Without one the editor shows the file read only, and the Text tab still edits the XML. The Code column, Code links, Unused in code and the Structure view need a license too

Troubleshooting

ProblemFix
No editor tabCheck the root element and namespace of the file
The editor is read onlyRead its banner: fix the XML, add a license, or Edit Anyway in a migration folder
Code counts show …They are counted after indexing finishes
A Page Designer component is redNo cartridge defines its type: Create Page Designer Type writes one

On this page