Deployment is the process of moving data from one environment to another, e.g. from a staging website to production website.

The Deployment tool in Dynamicweb provides some basic functionality that makes it easier to transfer data from one installation to another, and removes some of the time consuming manual work that is usually required when doing so.

Deployment provides a one-way data transfer where data is pushed from source to destination. It is not meant to be a merge tool, so it is not possible to push and pull changes between two installations at the same time.

We provide a set of basic configurations for deploying data to the following areas of DW:

  • Content
  • Ecommerce
  • Users
  • Forms for Editors

On a technical level the Deployment tool uses a series of providers to move data – files, records in the database, configuration setting, content, etc. – from the source to the destination. It is fairly trivial to use these providers to extend the default data configuration – or create your own from scratch.

It is highly recommended that both installations (source and destination) run on the same assembly versions. Any differences in assembly versions might lead to errors or unexpected results.

Limitations & Recommendations

The Deployment tool is a “dumb” tool, which means that you have to make sure you do some of the operations in the correct order to avoid errors and odd behavior.

The generally recommended order of operations when deploying is:

  1. Copy the templates folder to your files folder before transferring any content dependent on templates
  2. Item types must be transferred BEFORE other types of content (websites, pages, paragraphs, items)
  3. If deploying to Ecommerce you must:
    1. Transfer EcomLanguages before anything else
    2. Transfer the rest of the internationalization settings (Currencies, Countries, VAT groups, etc.)
    3. Transfer the rest of the Ecommerce data while keeping in mind to e.g. deploy custom field types before deploying fields relying on them, etc.

Bear in mind, that not everything can be deployed yet – please consult the provider descriptions below for details.

Before data can be transferred, at least one destination should be created and configured.

Destinations can be configured by going to Settings > Developer > Deployment > Destinations and clicking Add in the toolbar.

Figure 2.1 Creating a Destination

A destination must have the following (Figure 2.2):

  • A name
  • An URL that points to a Dynamicweb installation
  • Administrator credentials for the remote Dynamicweb installation

You can verify the URL and credentials by using the Test connection button which will try to communicate with the destination and authenticate using the administrator credentials.

Destination settings are stored as files in the /Files/System/Deployment/Destinations folder.

The default data configurations supplied by us are not automatically available – download them here. They must be placed in the /Files/System/Deployment/DataGroups folder.

Once a destination has been configured, you can deploy data from the source to the destination using either the default data configurations or a custom data configuration:

  • Go to Settings > Developer > Deployment > Deploy
  • Select one of the data configurations, e.g. Content
  • Select a Target and the data you want to deploy (Figure 4.1)
  • Click compare selected to compare the data – or select and continue to skip the comparison step
Figure 4.1 Selecting data to deploy

The comparison view (Figure 4.2) provides you with an overview of the differences between the source and the destination. Use the filters on top to limit the selection to only a subset of the compared items, e.g. those only on the left (source), right (destination), or which are different from each other. 

For data which exists on both solutions but with differences, you can click the Details button to get an idea of what the differences are.

Figure 4.2 Comparing data

After comparing, select the data you want to transfer and click Transfer selected – the data will be transferred and you will be presented with a log, hopefully with a positive outcome (Figure 4.3). Old logs can be accessed from Settings > Developer > Deployment > Deployment logs.

On a technical level, the data selected is retrieved from the source, then serialized as a package file before being transferred to the destination, where it is deserialized and the data is restored.

Figure 4.3 The deployment log

If your source and destination solutions are in separate networks you may want to export the deployment package and then use the Deploy data items from upload folder scheduled task add-in to deploy the data instead.

To export the deployment package:

  • Select a data configuration like normal
  • Click Select and continue
  • Select the data you want to deploy
  • Click Export selected
  • Specify a folder – defaults to /System/Deployment/Packages – and a name

A set of default data configurations are supplied by us, and can handle some of the more common tasks when deploying. They are described below, with all their current quirks and limitations.

They are:

  • The Content configuration
  • The Ecommerce configuration
  • The Users configuration

They must be placed in the /Files/System/Deployment/DataGroups folder.

The content configuration is capable of moving the following data:

  • Item types
  • Areas (aka. websites)
  • Pages
  • Paragraphs

All internal links are updated as appropriate.

The following limitations apply:

  • Draft & Workflow information is not deployed
  • Language layers are deployed as regular websites – don’t select them when transferring areas/websites unless this is what you want
  • Permissions, split tests & personalization settings are not deployed

Please note, that the deployment tool is a dumb tool – if you don’t transfer everything, you must manually select the appropriate pages & paragraphs belonging to a particular website or page.

You must also make sure you have the correct templates on the destination before transferring data, and you should always deploy your item types before deploying content built on them.

The Ecommerce configuration is capable of deploying Ecommerce-related settings & configuration:

  • Internationalization settings (Countries, Currencies, Languages, and VAT Groups)
  • Order discounts &  Sales discounts
  • Payment methods
  • Shipping methods
  • Tax providers
  • Shops
  • Manufacturer records
  • Order settings
    • Address validation & validation groups
    • Order contexts
    • Order fields & order line fields
    • Order flows & Quote flows
    • Stock states
    • Track & Trace schemas
  • Product catalog settings
    • Product Categories
    • Product fields & product group fields
    • Publication Periods
    • Relation Groups
    • Stock locations
    • Variant groups & variant options
    • Product Units

In short, everything which can be said to be a configuration – and not data. To move data (e.g. orders, products, and product groups) from one solution to another, you must use the Integration Framework.

Since Deployment is a “dumb” tool, you must deploy your data in the correct order to ensure that there are not critical dependency issues.

To avoid dependency errors:

  • Deploy Ecommerce Languages before anything else
  • Deploy the rest of the Internationalization settings (Currencies, Countries & VAT Groups)
  • Deploy everything else

The Users configuration makes it possible to deploy the following data:

  • The AccessUser schema
  • Custom fields

Custom address fields cannot be deployed.

To move users from one solution to another you must use the Integration Framework.

A data configuration is basically an XML file which contain an implementation of one or more data item providers – configurable add-ins with read/write access to a subset of data in the system.

A simple data configuration using the Files data item provider could look like this:

<DataGroup Id="ItemTypes" Name="Item types" Icon="Cube" ParentId=""> <DataItemTypes> <DataItemType Id="ItemTypes" Name="Item types" ProviderTypeName="Dynamicweb.Deployment.DataItemProviders.Files.FilesDataItemProvider"> <ProviderParameters> <Parameter Name="RecursiveSearch" Value="false" /> <Parameter Name="TargetPath" Value="/Files/System/Items" /> </ProviderParameters> </DataItemType> </DataItemTypes> </DataGroup>

In the example above, the Files data item provider is used to move files from the /Files/System/Items folder to the same folder on the destination. It is pretty easy to modify this data configuration to make it moved other files – e.g. the Templates folder:

<DataGroup Id="Templates" Name="Templates" Icon="Cube" ParentId=""> <DataItemTypes> <DataItemType Id="Templates" Name="Templates" ProviderTypeName="Dynamicweb.Deployment.DataItemProviders.Files.FilesDataItemProvider"> <ProviderParameters> <Parameter Name="RecursiveSearch" Value="true" /> <Parameter Name="TargetPath" Value="/Files/Templates" /> </ProviderParameters> </DataItemType> </DataItemTypes> </DataGroup>

As you can see, it’s a matter of changing IDs and names, and modifying the two parameters to point to the correct folder and include subfolders.

To add the Templates-configuration to the Content-configuration, simply add ParentId=”Content” to the DataGroup node. The Icon="" parameter is optional, and and takes as a value any of the known icon names.

Custom data configuration can also be created and edited from the UI (Figure 10.3):

  • Go to Deployment and open the context menu for a configuration
  • Click Edit data group or Add data group
  • Click Add data item in the toolbar or click an existing data item to edit it
  • Fill in name and id, then select a data item provider and configure any relevant parameters

You can use any of the standard data item providers we use to create the custom data configurations – or create and use custom data item providers. Read more about either option below.

Figure 10.3 Creating data configurations from the UI

A data item provider is a configurable add-in that provides read and write access to a subset of data in the system. Data can be provided by either standard or custom data item providers.

Deployment comes with a set of standard data item providers capable of most simple deployment tasks:






Transfers content – areas, pages, and paragraphs


Includes the Area, Page, Paragraph , and Gridrow providers


Transfers websites (areas)


Language layers are deployed as regular websites


Transfers pages

Can be limited to a specific area (website)



Transfers paragraphs

Can be limited to a specific area (website)



Transfers gridrows

Can be limited to a specific area (website)




Transfers Forms for Editors forms with fields & options


Includes the Form, Field, and Option providers


Transfers Forms for Editors forms




Transfers Forms for Editors fields




Transfers Forms for Editors field options








Transfers schema changes (table columns)

  • Table – select a table



Transfers configuration settings

  • Key pattern – enter a comma-separated list of paths to configuration setting files



Transfers database records

  • Table – select a table
  • Name column – select a name column
  • Compare columns – specify which columns to compare



Transfers files

  • IncludeHiddenFiles – true/false
  • RecursiveSearch – true/false
  • TargetPath – specify a path containing the files to transfers. Defaults to /Files


You can also create custom data item providers.

If the standard data item providers are not sufficient, you can create custom providers by implementing a class that inherits from Dynamicweb.Deployment.DataItemProvider. Since this is a configurable add-in, it is possible to define custom settings by adding properties with AddInParameter attribute.

The following two methods must be implemented in a custom DataItemProvider:

public override DataItemReader CreateReader() { … } public override DataItemWriter CreateWriter() { … }

The following method must be implemented in a custom DataItemReader:

public override IEnumerable<DataItem> ReadItems(IEnumerable<string> ids) { … }

The following method must be implemented in a custom DataItemWriter:

public override void WriteItems(IEnumerable<DataItem> dataItems) { … }

More information can be found in the API documentation for Dynamicweb.Deployment.DataItemProvider and by consulting Dynamicweb.Deployment.Examples.CustomDataItemProvider.

The following Notifications are available and can be subscribed to:

Dynamicweb.Deployment.Notifications.DeploymentNotification.AfterDeployment Dynamicweb.Deployment.Notifications.DeploymentNotification.BeforeDeployment